一、fc
二、disown
三、ctrl + x +e
四、!! 兩個感歎号
五、一次建立多個目錄或檔案
六、tee
七、删除從開頭到光标處的指令文本
八、删除從光标到結尾處的指令文本
ctrl + a:光标移動到指令開頭
ctrl + e:光标移動到指令結尾
alt f:光标向前移動一個單詞
alt b:光标向前移動一個單詞
ctrl w:删除一個詞(以空格隔開的字元串)
曆史指令快速執行
部分曆史指令檢視
實時檢視日志
磁盤或記憶體情況檢視
目前目錄各個子目錄占用空間大小
目前記憶體使用情況
根據名稱查找程序id
根據名稱殺死程序
檢視程序運作時間
快速目錄切換
多條指令執行
檢視壓縮日志檔案
删除亂碼檔案
将日志同時記錄檔案并列印到控制台
終止并恢複程序執行
計算程式運作時間
檢視記憶體占用前10的程序
快速查找你需要的指令
指令行下的複制粘貼
搜尋包含某個字元串的檔案
螢幕當機
>指令和>>指令
壓縮和解壓類
gzip/gunzip 指令
zip/unzip 指令
tar 指令
搜尋查找類
find指令
按檔案名:根據名稱查找/home目錄下的a.txt檔案。
按擁有者:查找/home目錄下,使用者名稱為root的檔案。
查找整個linux系統下大于200m的檔案(+n大于 -n小于 n等于)。
查詢/home 目錄下所有以.txt結尾的檔案。
grep指令和管道符号 |
在bbb.txt檔案中照抄dfa
指令用途:編輯最近的一條指令并自動執行該指令
适用場景:執行了一條很長的指令,然而指令敲錯執行失敗,需要修正後再次執行。
執行fc指令,打開編輯器後對指令進行修改。修改為正确指令後儲存,繼而自動執行。
指令用途:将任務從"背景任務"清單(jobs指令的傳回結果)之中移除,阻止目前 shell 在終止登入會話時向每個指定作業發送 hup 信号。
指令用法:移出最近一個正在執行的背景任務$ disown# 移出所有正在執行的背景任務$ disown -r移出所有背景任務$ disown -a# 不移出背景任務,但是讓它們不會收到sighup信号$ disown -h
使用示例:
指令用途:打開編輯器輸入指令并自動執行該指令。
使用場景:一次執行多條指令。
執行 ctrl+x+e 快捷鍵,即可打開編輯器。輸入需要執行的指令後,儲存退出。則輸入的指令将被依次。
注意事項:
如未安裝emacs編輯器,則執行ctrl+x+e後,會報錯:“-bash: emacs: command not found”。
可在/etc/bashrc檔案中添加變量設定“editor=vim”,将ctrl+x+e調用的預設編輯器修改為已安裝的編輯器,如vim。
指令用途:調用最近一次運作的指令
使用場景:需要再次執行上一條指令
使用示例:使用普通使用者身份檢視/etc/shadow檔案報錯,指令前加sudo,以root使用者身份檢視/etc/shadow檔案。
使用示例:在目前目錄下建立多級目錄。
指令用途:從标準輸入讀取,然後寫入标準輸出和檔案
使用場景:想手動跟蹤指令的輸出内容,同時又想将輸出的内容寫入檔案。
ctrl + u,例如:
$ cd /proc/tty;ls -al光标
如果此時使用ctrl + u快捷鍵,那麼該條指令都會被清除,而不需要長按backspace鍵。
ctrl+k,例如:
$ cd /proc/tty光标;ls -al
如果此時使用ctrl + k快捷鍵,那麼從光标開始處到結尾的指令文本将會被删除。
我們都知道history記錄了執行的曆史指令,而使用!+曆史指令前的數字,可快速執行曆史指令。另外,還可以使用ctrl+r搜尋執行過的指令。
history會顯示大量的曆史指令,而fs -l隻會顯示部分。
$ tail -f filename.log
tail -f 加檔案名,可以實時顯示日志檔案内容。當然,使用less指令檢視檔案内容,并且使用shift+f鍵,也可達到類似的效果。
怎麼知道目前磁盤是否滿了呢?
$ df -h /dev/sda14 4.6g 10m 4.4g 1% /tmp /dev/sda11 454m 366m 61m 86% /boot /dev/sda15 55g 18g 35g 35% /home /dev/sda1 256m 31m 226m 12% /boot/efi tmpfs 786m 64k 786m 1% /run/user/1000
使用df指令可以快速檢視各挂載路徑磁盤占用情況。
如果你已經知道home目錄占用空間較大了,你想知道home目錄下各個目錄占用情況:
$ du -h –-max-depth=1 /home(或者-d 1) 18g /home/hyb 16k /home/lost+found 18g /home/
這裡指定了目錄深度,否則的話,它會遞歸統計子目錄占用空間大小,可自行嘗試。
$ free -h total used free shared buff/cache available mem: 7.7g 3.5g 452m 345m 3.7g 3.5g swap: 7.6g 0b 7.6g
通過free的結果,很容易看到目前總共記憶體多少,剩餘可用記憶體多少等等。
想快速直接查找程序id,可以使用:
$ pgrep hello 22692
或者:
$ pidof hello
其中,hello是程序名稱。
一般我們可以使用kill -9 pid方式殺死一個程序,但是這樣就需要先找到這個程序的程序id,實際上我們也可以直接根據名稱殺死程序,例如:
$ killall hello
$ pkill hello
可以使用下面的指令檢視程序已運作時間:
$ ps -p 24525 -o lstart,etime started elapsed sat mar 23 20:52:08 2019 02:45
其中24525是你要檢視程序的程序id。
cd - 回到上一個目錄 cd 回到使用者家目錄
我們知道使用分号隔開可以執行多條指令,例如:
$ cd /temp/log/;rm -rf *
但是如果目前目錄是/目錄,并且/temp/log目錄不存在,那麼就會發生激動人心的一幕:
bash: cd: /temp/log: no such file or directory
(突然陷入沉默)
因為;可以執行多條指令,但是不會因為前一條指令失敗,而導緻後面的不會執行,是以,cd執行失敗後,仍然會繼續執行rm -rf *,由于處于/目錄下,結果可想而知。
是以你還以為這種事故是對rf -rf *的力量一無所知的情況下産生的嗎?
如果解決呢?很簡單,使用&&,例如:
$ cd /temp/log/&&rm -rf *
這樣就會確定前一條指令執行成功,才會執行後面一條。
有時候日志檔案是壓縮的,那麼能不能偷懶一下,不解壓檢視呢?當然可以啦。
例如:
$ zcat test.gz test log
$ zless test.gz
無論是自己意外建立還是程式異常建立,難免會出現一些命名奇怪或者亂碼檔案,可以選擇删除linux中特殊名稱檔案的多種方式。
對于特殊字元,如<>!*等組成的檔案如何删除呢?例如:
$ rm <>!* rm: missing operand try ‘rm --help’ for more information.
對于這種類型的檔案,我們需要用引号将檔案名包含起來:
$ rm “<>!*”
在執行shell腳本,常常會将日志重定向,但是這樣的話,控制台就沒有列印了,如何使得既能記錄日志檔案,又能将日志輸出到控制台呢?
$ ./test.sh |tee test.log
我們使用ctrl+z 暫停一個程序的執行,也可以使用fg恢複執行。例如我們使用
$ cat filename
當我們發現檔案内容可能很多時,使用ctrl+z暫停程式,而如果又想要從剛才的地方繼續執行,則隻需要使用fg指令即可恢複執行。或者使用bg使得程序繼續在背景執行。
我們可能會程序寫一些小程式,并且想要知道它的運作時間,實際上我們可以很好的利用time指令幫我們計算,例如:
$ time ./fibo 30 the 30 result is 832040
real 0m0.088s user 0m0.084s sys 0m0.004s
它會顯示系統時間,使用者時間以及實際使用的總時間。
$ ps -aux|sort -k4nr |head -n 10
我們都知道man可以檢視指令的幫助手冊,但是如果我們想要某個功能卻不知道使用哪個指令呢?别着急,還是可以使用man:
$ man -k “copy files” cp (1) - copy files and directories cpio (1) - copy files to and from archives git-checkout-index (1) - copy files from the index to the working tree gvfs-copy (1) - copy files gvfs-move (1) -copy files install (1) - copy files and set attributes
使用-k參數,使得與copy files相關的幫助手冊都顯示出來了。
我們知道,在指令行下,複制不能再是ctrl + c了,因為它表示終止目前程序,而控制台下的複制粘貼需要使用下面的快捷鍵:
ctrl + insert shift + insert
例如,要在目前目錄下查找包含test字元串的檔案:
$ grep -rn “test” test2.txt:1:test
它便可以找到該字元串在哪個檔案的第幾行。
程式運作時,終端可能輸出大量的日志,你想簡單檢視一下,又不想記錄日志檔案,此時可以使用ctrl+s鍵,當機螢幕,使得日志不再繼續輸出,而如果想要恢複,可使用ctrl+q退出當機。
以下三部分内容(>指令和>>指令,壓縮和解壓類,搜尋查找類)來源自:【linux】linux超全實用指令大全
輸出重定向會把原來的内容覆寫掉。
基本文法:
gzip用于壓縮檔案,gunzip用于解壓的
當我們使用gzip對檔案進行壓縮後,不會保留原來的檔案。
如果要壓縮多個檔案 在一次壓縮中多寫幾個檔案名即可。
zip用于壓縮檔案,unzip用于解壓的,這個在項目打包釋出中很有用的
zip常用選項:
-r:遞歸壓縮,即壓縮目錄
unzip的常用選項:
-d<目錄>:指定解壓後檔案的存放目錄
tar指令是打包指令,最後打包後的檔案是.tar.gz的檔案。
選項說明:
-zvcf 為指令選項
a.tar.gz為打包後的檔案名
後面跟着要打包的一些檔案。
解壓:
解壓到特定的目錄:
需要有-c 指定解壓到的那個目錄,事先要存在才能成功,否則會報錯。
find指令将從指定目錄向下遞歸地周遊其各個子目錄,将滿足條件的檔案或者目錄顯示在終端。
第二個參樹是搜尋的範圍 -name 按照檔案名 最後一個是檔案
管道符号的l是小寫的字母哈
grep過濾查找,管道符,“l”,表示将前一個指令的處理結果輸出傳遞給後面的指令處理。
cat bbb.txt 取得檔案内容 然後交給了 後面的grep dfa進行後面的操作。