linux shell

shell小技巧

什麼是shell

         命令解析器,幫助人機交互的翻譯官!

         windows的桌面也是shell的一種!

Linuxshell有哪些

         /etc/shells        記錄該Linux安裝了哪些shell 

         B         sh     bash

         C         tcsh

         shell不同,命令提示符不同

幾乎所有linux缺省都是bash (Bourne-again Shell) ,非常適合於一些管理操作

一些比較老的unix,缺省都是sh

 

bash提供常用功能如下:

 

一、命令補全

         使用Tab

         命令補全、文件名補全

         如果不是唯一的,按兩下Tab,全列出來

二、快捷操作

         CTRL+C終止命令

         CTRL+A光標到行首

         CTRL+E光標到行尾

         CTRL+U剪切光標前內容

         CTRL+K剪切光標後內容

         CTRL+Y粘貼剪切的內容

         CTRL+L清理屏幕

         CTRL+D註銷登陸相當於exitlogout或者保存

         CTRL+Z將進程在後臺掛起  bg    fg

        

三、命令歷史

         history               列出所有的命令(默認最多保存條數1000

         !序號                 執行歷史中第幾個命令                 

         !命令                 執行最近的這條命令

         按向上(或向下)箭頭,翻出歷史記錄 

四、命令別名

         什麼是別名?(類似快捷命令)        

                  命令:alias              (顯示當前可用別名命令)

                  ls爲什麼可以顯示顏色?因爲是ls--color=tty的別名

                  可以看到 ll ls -l --color=tty的別名

         添加一個別名(臨時):

                  alias copy=cp    就可以用copy來複制文件了

         如果有參數:

                  alias drm="rm -rf"

         刪除別名:

                  unalias copy

        

         別名永久生效:在用戶宿主目錄 ~/.bashrc 文件中添加別名信息如:aliasvi=vim

         重啓生效或者source  ~/.bashrc及時生效

 

五、輸入輸出重定向

         Shell對於每個進程預先定義了3個文件描述字

         0標準輸入 STDIN       鍵盤

         1標準輸出 STDOUT   顯示器

         2標準錯誤輸出 STDERR

         重定向,就是改變這個標準設備,不用鍵盤輸入,不用顯示器輸出

        

      輸出重定向

                  >     >>

         例:echo hello  直接顯示到顯示器

                  echo hello>test.txt           將輸出重定向到test.txt

 

                  ls -l /tmp>files.txt             將輸出重定向到files.txt

                  more files.txt   查看文件內容

 

         /website下大於100M的文件列表

find /website -size +204800>/backup/100M+.file.list

        

         追加,用 >>

        

                          

         輸入重定向  (不從鍵盤輸入內容了)

         例:wall < /test/msg      從一個文件讀取內容發廣播

         這樣,就可以用計劃任務,把一年的節日祝福語寫上,到時自動發送

        

      錯誤輸出重定向

         2>     2>>                  #描述字和符號間不許有空格

         例:自動備份通常用計劃任務在凌晨自動執行

         cp -R /usr /backup/use2>>/bak.error

                  將錯誤信息,定向到一個文件中

 

實例:

         ls/aaaaaa 2>ls.err  如果/aaaaa這個目錄不存在,則將錯誤信息保存到ls.err

 

         這裏面的2,就是前面講的 Shell對於每個進程預先定義了3個文件描述字

         01都可以省略,2不能省略了

     ls -l >> outputfile 2>&1

六、管道連接符

         將一個命令的輸出,傳送給另一個命令,作爲另一個命令的輸入,可以連接多個命令

         用法:

                  命令1|命令2|命令3...

        

:

         ls-l /etc | more  文件太多,一次看不完,用more來查看      下一頁:空格或f 下一行:回車 退出:q Q

         ls-l /etc | grep init  只顯示init相關的行

         ls-l /etc | grep init | wc -l     查看init相關的有多少行,也就是包含init的文件有多少個

 

         who| grep root 只顯示root的登錄信息

 

   wc -l  統計文件有多少行

   who | grep root| wc -l     查看root 用戶登錄了幾次

 

七、命令連接符

         ;        不管執行是否成功,多個命令依次執行

                  :   pwd ; ls ; date

 

         &&   前面執行成功,才執行後面的命令,如果第一個失敗,則不執行第二個

                  write user1 < /home/jack/love.txt&& rm /home/jack/love.txt    情書發成功,就刪除

                  ls && pwd 第一個成功後,將執行pwd命令

 

         ||     前面執行失敗,才執行後面的命令

                  write mary < /home/jack/love.txt ||mail mary< /home/jack/love.txt  情書發失敗,則發郵件

        

         ``       命令替換符

         將一個命令的輸出作爲另一個命令的參數

         命令1 `命令2`,命令1的參數,是命令2的執行結果

 

         ls -l `whichtouch`     找到touch命令的路徑,然後用ls查看屬性

         看起來有點類似管道,不過順序相反,會先執行後面的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章