shell常用命令二

內(nèi)建命令

所謂內(nèi)建命令铸史,就是bash自身提供的命令,不是外部可執(zhí)行程序文件怯伊,可以用type來(lái)確定一個(gè)命令是否內(nèi)建命令琳轿。
$PATH 變量包含的目錄,都是外部命令
內(nèi)建命令相當(dāng)于調(diào)用shell進(jìn)程的一個(gè)函數(shù)耿芹,比外部命令執(zhí)行的快

type cd
type ifconfig
  • Bash Shell 內(nèi)建命令
命令 說(shuō)明
擴(kuò)展參數(shù)列表崭篡,執(zhí)行重定向操作
. 讀取并執(zhí)行指定文件中的命令,在當(dāng)前shell環(huán)境中
alias 為指定命令定義個(gè)別名
bg 將作業(yè)以后臺(tái)模式運(yùn)行
bind 將鍵盤序列綁定到一個(gè)readline 函數(shù)或宏
break 退出for吧秕、while琉闪、select或until循環(huán)
builtin 執(zhí)行指定的shell內(nèi)建命令
caller 返回活動(dòng)子函數(shù)調(diào)用的上下文
cd 將當(dāng)前目錄切換為指定的目錄
command 執(zhí)行指定的命令,無(wú)需進(jìn)行通常的shell查找
compgen 為指定單次生成可能的補(bǔ)全匹配
complete 顯示指定的單次時(shí)候如何補(bǔ)全的
compopt 修改指定單次的不全選項(xiàng)
continue 繼續(xù)執(zhí)行for砸彬、while颠毙、select或 until循環(huán)的下一次迭代
declare 生命一個(gè)變量或變量的類型
dirs 顯示當(dāng)前存儲(chǔ)目錄的列表
disown 從進(jìn)場(chǎng)作業(yè)表中刪除指定的作業(yè)
echo 指定字符串輸出到STDOUT
enable 啟用或禁用指定的內(nèi)建shell命令
eval 將指定的參數(shù)拼接成一個(gè)命令斯入,然后執(zhí)行該命令
exec 指定命令替換shell進(jìn)程
exit 強(qiáng)制shell以指定的退出狀態(tài)碼退出
export 設(shè)置子shell進(jìn)程可用的變量
fc 從歷史記錄中選擇命令列表
fg 將作業(yè)以前臺(tái)模式運(yùn)行
getopts 分析指定的位置參數(shù)
hash 查找并記住指定命令的全路徑名
help 顯示幫助文檔
history 顯示命令歷史記錄
jobs 列出活動(dòng)作業(yè)
kill 向指定的進(jìn)程ID發(fā)送一個(gè)系統(tǒng)信號(hào)
let 計(jì)算一個(gè)數(shù)學(xué)表達(dá)式中的每個(gè)參數(shù)
local 在函數(shù)中創(chuàng)建一個(gè)作業(yè)域受限的變量
logout 退出shell登錄
mapfile 從STDIN讀取數(shù)據(jù)行,并將其加入索引數(shù)組
popd 從目錄棧中刪除記錄
printf 使用格式化字符串顯示文本
pushd 向目錄棧添加一個(gè)目錄
pwd 顯示當(dāng)前工作目錄的路徑名
read 從STDIN讀取一行數(shù)據(jù)并將其賦給一個(gè)變量
readarray 從STDIN讀取數(shù)據(jù)行并將其放入索引數(shù)據(jù)
return 強(qiáng)制函數(shù)以某一個(gè)值退出蛀蜜,這個(gè)值可以被調(diào)用腳本提取
set 設(shè)置并顯示環(huán)境變量的值和shell屬性
shift 將位置參數(shù)依次享下講一個(gè)位置
shopt 打開/關(guān)閉控制shell可選行為的變量值
source 讀取并執(zhí)行指定文件中的命令(當(dāng)前shell環(huán)境執(zhí)行)
suspend 暫停shell的執(zhí)行刻两,指導(dǎo)收到一個(gè)SIGCONT信號(hào)
test 基于指定條件返回退出狀態(tài)碼0或1
times 顯示累計(jì)的用戶和系統(tǒng)時(shí)間
trap 如果收到了指定的系統(tǒng)喜好,執(zhí)行指定的命令
type 顯示指定的單次如果作為命令將會(huì)被如何解釋
typeset 聲明一個(gè)變量或變量類型
ulimit 為系統(tǒng)用戶設(shè)置指定的資源上線
umask 為新建的文件或目錄設(shè)置默認(rèn)權(quán)限
unalias 刪除指定的別名
unset 刪除指定的環(huán)境變量或shell屬性
wait 等待指定的進(jìn)程完成滴某,并返回退出狀態(tài)碼

echo

用來(lái)在終端輸出字符串磅摹,并在最后默認(rèn)增加換行符。
默認(rèn)不會(huì)解析\開頭的轉(zhuǎn)義字符

echo  str
# -n 取消換行
echo  -n str
# -e 解析轉(zhuǎn)義字符,行尾\c 取消換行
echo -e "hello \n world"
echo -e "hello \c"

read

用來(lái)從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)賦值給變量霎奢,默認(rèn)從鍵盤讀取户誓,重定向可以從文件讀取

read [-options] [variables]

options 表示選項(xiàng),variable表示用來(lái)存儲(chǔ)數(shù)據(jù)的變量幕侠,可以多個(gè)帝美,兩者都是可選,如果沒(méi)有變量名橙依,默認(rèn)賦值給REPLY证舟。

  • options 選項(xiàng)
選項(xiàng) 說(shuō)明
-a array 讀取的數(shù)據(jù)賦值給數(shù)據(jù)array,從下標(biāo)0開始
-d delimiter 用字符串delimiter指定讀取結(jié)束的位置窗骑,而不是換行數(shù)女责,不包括delimiter
-e 獲取數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,不會(huì)顯示功能鍵字符
-n num 讀取num個(gè)字符创译,而不是整行字符
-p prompt 顯示提示信息抵知,提示內(nèi)容為prompt
-r 原樣讀取,不把反斜杠字符解析為轉(zhuǎn)義字符
-s 靜默模式软族,不會(huì)再屏幕上顯示輸出
-t seconds 設(shè)置超時(shí)時(shí)間刷喜,單位秒,沒(méi)在指定時(shí)間輸入完成立砸,非0狀態(tài)退出掖疮,讀取失敗
-u fd 使用文件描述符fd作為輸入源,而不是標(biāo)準(zhǔn)輸入颗祝,類似重定向
  • 只讀取一個(gè)字符
#!/bin/bash
read -n 1 -p "Enter a char " char
printf "\n"
echo $char

exit

用來(lái)退出當(dāng)前shell進(jìn)程浊闪,并返回一個(gè)退出狀態(tài);使用$? 可以接收返回狀態(tài)螺戳。
exit 不指定默認(rèn)0搁宾,一般0成功,非0表示執(zhí)行失敗倔幼。

#!/bin/bash
echo "befor"
exit 8
echo "after"

declare 和typeset

它們的用法相同盖腿,都是用來(lái)設(shè)置變量的屬性。 typeset 已經(jīng)廢棄。
命令語(yǔ)法

## -標(biāo)識(shí)設(shè)置屬性翩腐,+標(biāo)識(shí)取消屬性
declare [+/-] [aAfFgilpartux] [變量名=變量值]
  • aAfFgliprtux 都是具體的選項(xiàng)鸟款,含義如下
選項(xiàng) 含義
-f [name] 列出之前由用戶在腳本中定義的函數(shù)名稱和函數(shù)體
-F [name] 僅列出自定義的函數(shù)名稱
-g name 在Shell函數(shù)內(nèi)部創(chuàng)建局部變量
-p [name] 顯示指定變量的屬性和值
-a name 聲明變量為普通數(shù)組
-A name 聲明變量為關(guān)聯(lián)數(shù)組(支持索引下標(biāo)為字符串)
-i name 將變量定義為整數(shù)型
-r name[=value] 將變量定義為只讀,等價(jià)readonly name
-x name[=value] 將變量設(shè)置為環(huán)境變量茂卦,等價(jià)于export name[=value]

例欠雌,

#!/bin/bash
declare -i m n ret
m=10
n=30
ret=$m+$n
echo $ret

shell 高級(jí)

  • 輸入方向就是數(shù)據(jù)從哪里流向程序。默認(rèn)從鍵盤疙筹,如果改變了流入就是輸入重定向。
  • 輸出方向就是數(shù)據(jù)從程序流向哪里禁炒,默認(rèn)是顯示器而咆,如果改變了流出就是輸出重定向。

linux中一切皆文件幕袱,包括標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備所有的計(jì)算機(jī)硬件都是文件暴备。問(wèn)了區(qū)分已經(jīng)打開的文件,linux會(huì)給每個(gè)文件分配一個(gè)ID们豌,這個(gè)ID是個(gè)整數(shù)涯捻,被稱為文件描述符。

文件描述符 文件名 類型 硬件
0 stdin 標(biāo)準(zhǔn)輸入文件 鍵盤
1 stdout 標(biāo)準(zhǔn)輸出文件 顯示器
2 stderr 標(biāo)準(zhǔn)錯(cuò)誤輸出文件 顯示器
  • Linux Shell輸出重定向

語(yǔ)法 fd>file 或 fd>>file 望迎,fd文件描述符默認(rèn)是1障癌,和>或>> 不能有空格

類型 符號(hào) 作用
標(biāo)準(zhǔn)輸出重定向 command >file 以覆蓋方式,把command正確結(jié)果輸出到file
- command >>file 以追加方式辩尊,把command正確結(jié)果輸入到file
標(biāo)準(zhǔn)錯(cuò)誤輸出重定向 comand 2 >file 覆蓋方式涛浙,錯(cuò)誤信息輸入到file
- command 2>>file 追加方式,錯(cuò)誤信息輸入到file
正確和錯(cuò)誤信息同時(shí)保存 command >file 2>&1 覆蓋方式摄欲,正確和錯(cuò)誤信息同時(shí)保存到file
- command >>file 2>&1 追加方式轿亮,寫入file
- command >file1 2>file2 覆蓋方式正確寫入file1,錯(cuò)誤寫入file2
- command >>file1 2>>file2 追加方式
  • /dev/null 文件

如果不想寫入文件胸墙,也不想顯示器展示我注,結(jié)果重定向到/dev/null。
/dev/null 當(dāng)成linux 系統(tǒng)的垃圾箱迟隅,放到垃圾箱的數(shù)據(jù)不能恢復(fù)但骨,丟棄。

  • linux shell 輸入重定向
符號(hào) 說(shuō)明
command <file 將file文件中的內(nèi)容作為command的輸入
command <<END 從標(biāo)準(zhǔn)輸入中讀取的數(shù)據(jù)玻淑,直到遇見分界符END才停止(分界符可自定義)
command <file1 >file2 將file1作為command的輸入嗽冒,并將command結(jié)果輸入到file2
  • 輸入重定向舉例,

逐行讀取文件內(nèi)容

#!/bin/bash
while read str: do
echo $str
done <readme.txt

Shell 管道詳解

將兩個(gè)或多個(gè)命令(程序或者進(jìn)程)連接到一起补履,把一個(gè)命令的輸出作為下一個(gè)命令的輸入添坊,這種方式連接兩個(gè)或多個(gè)命令就形成了管道(pipe)魄健。

管道使用|連接多個(gè)命令平夜,被稱為管道符。語(yǔ)法如下

command1 | command2 [ | commandN...]

例,

mysqldump -u root -p '123456' wiki | gzip -9 |ssh username@remote_ip "cat >/backup/wikidb.gz"
  • 重定向和管道的區(qū)別

重定向操作符>將命令與文件連接起來(lái)墨叛,用文件來(lái)接收命令的輸出,而管道符|是命令與命令連接起來(lái)源请,用第二命令符接收第一個(gè)立肘。

  • 管道與輸入重定向
command1 <input.txt | command2
  • 管道與輸出重定向
command1 < input.txt | command2 > output.txt

過(guò)濾器

將幾個(gè)命令通過(guò)管道符組合在一起就形成了管道,通常野蝇,這種方式使用的命令稱為過(guò)濾器讼稚。

常用過(guò)濾器命令:

命令 描述
awk 用于文本處理的解釋性程序設(shè)計(jì)語(yǔ)言,通常是被作為數(shù)據(jù)提取和報(bào)告工具
cut 用于將每個(gè)輸入文件(如果沒(méi)有指定文件绕沈,則標(biāo)準(zhǔn)輸入)每一行的指定部分锐想,輸出的標(biāo)準(zhǔn)輸出
grep 用于搜索一個(gè)或多個(gè)文件中匹配指定模式的行
tar 用于歸檔文件的應(yīng)用程序
head 用于讀取文件的開頭部分(默認(rèn)10行),沒(méi)有指定文件乍狐,標(biāo)準(zhǔn)輸入
paste 用于合并文件的行
sed 用于過(guò)濾和抓好文本的流編輯器
sort 用于對(duì)文本文件的行進(jìn)行排序
split 用于將文件分割成塊
strings 用于打印文件中可打印的字符串
tac 與cat命令相反赠摇,用于倒序的顯示文件或鏈接文件
tail 用于顯示文件的結(jié)尾部分
tee 用于從標(biāo)準(zhǔn)輸入讀取文件內(nèi)容寫入標(biāo)準(zhǔn)輸出或文件
tr 用于轉(zhuǎn)換或刪除字符
uniq 用于報(bào)告或忽略重復(fù)的行
wc 用于打印文件中的總行數(shù)、單詞數(shù)或字節(jié)數(shù)

在管道中使用awk命令

顯示當(dāng)前系統(tǒng)的總內(nèi)存大小浅蚪,單位為KB

free | grep Mem | awk '{print $2}'

cut命令

cut 命令用于文本處理藕帜,你可以使用這個(gè)命令來(lái)提取文本中指定內(nèi)容。

查看系統(tǒng)登錄shell是"/bin/bash"的用戶名和對(duì)應(yīng)用戶主目錄

grep "bin/bash" /etc/passwd | cut -d: -f1,6

grep 命令

查看日志文件中的錯(cuò)誤信息

grep -i "error:" /var/log/messages | less

tar 命令

tar 命令是linux系統(tǒng)中最常用的打包文件程序
可以使用tar命令賦值一個(gè)目錄的整體結(jié)構(gòu)

tar cf - /home/larenzhang | (cd /backup/:  tar xf -)

head 命令

打印命令前幾行輸出惜傲,默認(rèn)10行

ls /usr/bin | head -n 5

uniq 命令

uniq 命令用于報(bào)告或刪除重復(fù)的行洽故。
去掉輸出中重復(fù)的行

sort testfile | uniq -c | sort -nr

wc命令

用于統(tǒng)計(jì)包含在文本流中的字符數(shù)、單次數(shù)和行數(shù)

統(tǒng)計(jì)當(dāng)前登錄到系統(tǒng)的用戶數(shù)

who | wc -l
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盗誊,一起剝皮案震驚了整個(gè)濱河市收津,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浊伙,老刑警劉巖撞秋,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嚣鄙,居然都是意外死亡吻贿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哑子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舅列,“玉大人,你說(shuō)我怎么就攤上這事卧蜓≌室” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵弥奸,是天一觀的道長(zhǎng)榨惠。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么赠橙? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任耽装,我火速辦了婚禮,結(jié)果婚禮上期揪,老公的妹妹穿的比我還像新娘掉奄。我一直安慰自己,他們只是感情好凤薛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布姓建。 她就那樣靜靜地躺著,像睡著了一般缤苫。 火紅的嫁衣襯著肌膚如雪引瀑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天榨馁,我揣著相機(jī)與錄音,去河邊找鬼帜矾。 笑死翼虫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屡萤。 我是一名探鬼主播珍剑,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼死陆!你這毒婦竟也來(lái)了招拙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤措译,失蹤者是張志新(化名)和其女友劉穎别凤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體领虹,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡规哪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塌衰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诉稍。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖最疆,靈堂內(nèi)的尸體忽然破棺而出杯巨,到底是詐尸還是另有隱情,我是刑警寧澤努酸,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布服爷,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏层扶。R本人自食惡果不足惜箫章,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镜会。 院中可真熱鬧檬寂,春花似錦、人聲如沸戳表。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匾旭。三九已至镣屹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間价涝,已是汗流浹背女蜈。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留色瘩,地道東北人伪窖。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像居兆,于是被迫代替她去往敵國(guó)和親覆山。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評(píng)論 0 5
  • 運(yùn)行操作 CMD命令:開始->運(yùn)行->鍵入cmd或command(在命令行里可以看到系統(tǒng)版本泥栖、文件系統(tǒng)版本) CM...
    小明yz閱讀 2,761評(píng)論 0 8
  • (一)基本命令 命令格式: 命令 參數(shù) 1.ls 顯示文件名簇宽,等同于dos下dir命令 命令格式:ls [opti...
    飛羽孟德閱讀 1,889評(píng)論 0 3
  • [TOC] 簡(jiǎn)介: Shell 是一個(gè)用C語(yǔ)言編寫的程序,它是用戶使用Linux的橋梁吧享。Shell既是一種命令語(yǔ)言...
    黃海濱_x閱讀 835評(píng)論 0 2
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本魏割,現(xiàn)在我們來(lái)進(jìn)一...
    LiWei_9e4b閱讀 1,574評(píng)論 0 0