通配符及输入输出重定向、管道符和作业控制
2019獨角獸企業重金招聘Python工程師標準>>>
?
1、通配符 *
?
“ * ”表示通配,見下圖,
當前目錄下有5個 txt 文件。也有其他寫法,結果也是不一樣,見下圖,
以上就是 * ,和 * 有對比的字符是 ? 。見下圖,
?表示一個任意的字符,數字和英文字母都可以。接著做對比,見下圖,
?
還有一種用法是使用中括號,見下圖,
?
還有花括號的用法,見下圖,
與中括號不同的是,花括號里面的字符需要用“,”號隔開。
?
2、輸入輸出重定向
?
> 表示輸入輸出重定向,舉個例子,見下圖,
查看 1.txt 和 2.txt 文件,里面沒有內容,使用 vi 命令在里面寫上一串數字。從上圖中可以看出, cat 1.txt > 2.txt 這個命令表示將 1.txt 的內容重定向到 2.txt ,就是將 2.txt 的內容刪除掉,將 1.txt 的內容重寫到 2.txt 。
?
>> 表示追加內容,舉個例子,見下圖,
為了將 1.txt 和 2.txt 文件區別開,編輯更改一下 2.txt 里面的內容,然后輸入命令 cat 1.txt >> 2.txt ,可以看到,1.txt 里的內容追加到 2.txt 上了。
?
2> 會把這個命令產生的錯誤信息,指定輸入到一個文件里,表示錯誤的輸出。舉個例子,見下圖,
運行一個有問題的命令 lsaaa ,提示未找到命令。這時候可以把這個錯誤信息定向到文件 a.txt 里去。然后用命令 cat a.txt 查看,里面的文件內容就是剛才的錯誤信息“-bash: lsaaa: 未找到命令”。上圖中的 2>> 表示追加重定向。
?
總結一下:
> ? ? ? 表示輸出,輸出到指定的文件
>> ? ?表示追加重定向
2> ? ? 表示錯誤的重定向
2>> ?表示錯誤的追加重定向
?
那么,我們也可以把 > 和 2> 結合起來,寫成 &> ,表示正確和錯誤的輸出信息全部定向到一個文件里去。舉個例子,見下圖,
同樣也支持追加,表示為 &>> ,見下圖,
還有一種方法,把正確和錯誤的輸出區分開,見下圖,
表示正確的輸出到 1.txt 文件,錯誤的輸出到 a.txt 文件。這個以后寫 shell 腳本的時候,用的比較多。
?
< 表示為輸入重定向。舉個例子,見下圖,
wc -l 為查看文本文檔行數的命令,< 輸入重定向的左邊一定是一條命令,右邊是文件。上圖第二條命令里面,嘗試左邊為文件的時候,出現報錯。
輸入重定向做個了解即可,一般工作中用不到。
?
管道符和作業控制
?
3、管道符
?
管道符之前介紹過,它表示把一個文件的輸出內容傳遞給后面的命令。舉個例子,見下圖,
關于管道符,有很多命令是可以用的,就是把前面命令輸出的結果,交給后面的命令。后面會經常用到。
?
4、作業控制
?
之前說過一個快捷鍵,ctrl + z ,表示暫停一個任務。見下圖,
輸入命令 vim 1.txt ,回車,進入文件 1.txt 編輯。這時候想暫時退出來做其他事情的話,就可以使用 ctrl +z 命令來停止,這時候就可以退出來回到命令窗口,做其他的事情。那么 vim 這個命令其實還在后臺,怎么再調出來呢?輸入命令 fg ,回車,見下圖,
又進入 vim 1.txt 這個頁面里。fg 就是 front ground ,到前面來的意思。
后臺的運行文件可以有多個,注意上圖中的數字序號,命令 jobs 可以列出后臺運行的任務信息。現在要把后臺運行的任務調出來的話,命令 fg 后面就要加上 id 號,例如 fg 1 或是 fg 2 。若直接輸入 fg 的話,默認是跳出最后執行的一個任務。
?
既然有 front ground ,也就有 back ground ,命令為 bg ,調到后臺去。見下圖,
將 vim a.txt 任務調到后臺去,就變成上圖紅色框框的內容,相當于在后臺運行。一般使用 vim 命令是達不到這種效果的,
現在運行命令 vmstat 1 ,這個命令后面會講到,它會自帶的顯示系統的狀態,而且是不停的顯示。按住 ctrl + z ,就可以停止命令,然后輸入 fg 命令,就可以把它調回來,接著按住?ctrl + z ,就可以停止命令,再輸入 bg ,
就可以讓它在后臺運行,在運行的過程中,也可以運行其他命令,命令輸入正確即可,即使被打斷了也沒有關系。見下圖,
可以看到 vmstat 1 在運行中。接著見下圖,
輸入 fg ,可以進入 vim 1.txt ,進去之后,vmstat 1 還在一直運行,輸入 :q! ,強制退出,然后輸入 jobs ,可以看到,只有一個任務運行。
目前為止, vmstat 1 還在后臺運行,把它調到前臺,輸入 fg 命令,回車,就進入前臺執行命令。這時候,輸入其他命令就不管用了。可以按住 ctrl + c ,直接結束命令。執行命令 jobs ,就可以看到沒有任務了。
?
剛才說到一個觀點,運行一條像 vmstat 1 這樣的命令時,使用 bg 命令把它調到后臺去,顯示成運行中,還是會運行的。但是這邊 vim 的命令是不算的,因為停止一條 vim 命令,不管是在前臺還是后臺,都是不會運行、停止的狀態。
?
接著介紹一個命令 sleep ,sleep 1000 表示暫停1000秒,整個工作暫停運行,1000秒之后才會恢復。見下圖,
bg 就是把一條命令調到后臺去運行。還有一個命令,可以不用先運行命令,就能直接在后臺運行,加一個 & ,見下圖,
這邊說一下 xshell ,如果另外打開一個終端,運行 jobs 命令,是看不到命令的。意思就是這個終端看不到另外一個終端后臺運行的命令,但是可以看到進程,輸入命令 ps aux |grep sleep ,回車,
關于 ps 命令,后面還會說到。
?
總結:
ctrl + z ? ? ? ? ? ? 暫停一個命令
fg ? ? ? ? ? ? ? ? ? ? 調出一個命令到前臺
bg ? ? ? ? ? ? ? ? ? ?將一個命令調到后臺并運行
& ? ? ? ? ? ? ? ? ? ? 在一條命令后面加上這個符號,可以直接將命令調到后臺運行
sleep +時間 ? ? ?暫停系統多少秒
vmstat 1 ? ? ? ? ? 不停的顯示系統狀態命令
?
轉載于:https://my.oschina.net/u/3867265/blog/1836212
總結
以上是生活随笔為你收集整理的通配符及输入输出重定向、管道符和作业控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django-全文检索
- 下一篇: Django介绍工程搭建