常用Linux Shell進階部分小結_linux shell

來源:互聯網
上載者:User

如何計算目前的目錄下的檔案數和目錄數
   

  # ls -l * |grep "^-"|wc -l ---- to count files    # ls -l * |grep "^d"|wc -l ----- to count dir

   
    如何只列子目錄?
   

  ls -F | grep /$ 

或者 

alias sub = "ls -F | grep /$"(linux)

   

  ls -l | grep "^d" 

或者

 ls -lL | grep "^d" (Solaris)

   
    如何?取出檔案中特定的行內容
   
    如果你只想看檔案的前5行,可以使用head命令,
  
    如: 

head -5 /etc/passwd

   
    如果你想查看檔案的後10行,可以使用tail命令,
  
    如: 

tail -10 /etc/passwd

   
    你知道怎麼查看檔案中間一段嗎?你可以使用sed命令
  
    如:

sed -n '5,10p' /etc/passwd 

這樣你就可以只查看檔案的第5行到第10行。
   
    如何尋找含特定字串的檔案
   
    例如尋找目前的目錄下含有"the string you want find…"字串的檔案:
   
    

$find . -type f -exec grep "the string you want find…" {} ; -print

   
    如何列出分類樹
   
    下面的短小的shell程式可以列出分類樹, 充分利用了sed強大的模式比對能力。
  
    分類樹形式如下:
   
  

 .    `--shellp    `--updates    `--wu-ftpd-2.4    | `--doc    | | `--examples    | `--src    | | `--config    | | `--makefiles    | `--support    | | `--makefiles    | | `--man    | `--util    指令碼如下:    #!/bin/sh    # dtree: Usage: dtree [any directory]    dir=${1:-.}    (cd $dir; pwd)    find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"

   
    如何?取出檔案中特定的列內容
   
    我們經常會遇到需要取出分欄位的檔案的某些特定欄位,例如/etc/password就是通過":"分隔各個欄位的。可以通過cut命令來實現。例如,我們希望將系統帳號名儲存到特定的檔案,就可以:
   
  

 cut -d: -f 1 /etc/passwd >; /tmp/users

   
    -d用來定義分隔字元,預設為tab鍵,-f表示需要取得哪個欄位。
  
    當然也可以通過cut取得檔案中每行中特定的幾個字元,例如:
   

  cut -c3-5 /etc/passwd

   
    就是輸出/etc/passwd檔案中每行的第三到第五個字元。
  
    -c 和 -f 參數可以跟以下子參數:
  
    N 第N個字元或欄位
  
    N- 從第一個字元或欄位到檔案結束
  
    N-M 從第N個到第M個字元或欄位
  
    -M 從第一個到第N個字元或欄位
   
    在vim中實現大量加密
   
    密碼中還是不能帶空格,不管了,能加密就好,先這麼用著。
   

  #!/bin/bash    # Encrypt file with vim    if (test $# -lt 2) then    echo Usage: decrypt password filename    else    vim -e -s -c ":set key=$1" -c ':wq' $2    echo "$2 encrypted."    fi    [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done    test2.txt encrypted.    test4.txt encrypted.    test9.txt encrypted.    kick.txt encrypted.    echo "$2 encrypted."    fi    [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done    test2.txt encrypted.    test4.txt encrypted.    test9.txt encrypted.    kick.txt encrypted.    too_old.txt encrypted.    too_old_again.txt encrypted.    bg5.txt encrypted.    [weeder@SMTH weeder]$

   
    $@等特定shell變數的含義
   
    在shell指令碼的實際編寫中,有一些特殊的變數十分有用:
  
    $# 傳遞到指令碼的參數個數
  
    $* 以一個單字串顯示所有向指令碼傳遞的參數。與位置變數不同,此選項參數可超過9個
  
    $$ 指令碼啟動並執行當前進程ID號
  
    $! 後台啟動並執行最後一個進程的進程ID號
  
    $@ 與$#相同,但是使用時加引號,並在引號中返回每個參數
  
    $- 顯示shell使用的當前選項,與set命令功能相同
  
    $? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
  
    如何使程式的執行結果同時定向到螢幕和檔案
   
  

 program_name |tee logfile

   
    這樣程式執行期間的顯示都記錄到logfile同時顯示到標準輸出(螢幕)。
   
    如何用sendmail給系統所有使用者送信
   
    首先在aliases檔案裡面建立一個alias:
   

  alluser: :include:/etc/mail/allusers

   
    並執行newaliases使之生效,然後在/etc/mail/allusers裡面列出所有使用者,可以使用下面的命令:

    awk -F: '$3 >; 100 { print $1 }' /etc/passwd >; /etc/mail/allusers

   
    如何尋找某條命令的相關庫檔案
   
    在製作自己的發行版時經常需要判斷某條命令需要哪些庫檔案的支援,以確保指定的命令在獨立的系統內可以可靠的運行。
  
    在Linux環境下通過ldd命令即可實現,在控制台執行:
   

  ldd /bin/ls

   
    即可得到/bin/ls命令的相關庫檔案清單。
  
    如何使用host命令獲得更多資訊
  
    Host能夠用來查詢網域名稱,然而它可以得到更多的資訊。host -t mx linux.com可以查詢出Linux.com的MX記錄,以及處理Mail的Host的名字。Host -l linux.com會返回所有註冊在linux.com下的網域名稱。host -a linux.com則會顯示這個主機的所有網域名稱資訊。
   
    如何停止終端多個進程
   
    以下是指令碼:
  
    echo "系統目前使用者"
   

  echo "---------------"    who | awk '{print $2}'    echo "---------------"

   
    echo "輸入要殺死終端的終端號:"

    read $TTY    kill -9 ${K}=`ps -t $TTY | grep [0-9] | awk '{print $1}'` 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.