關於Shell的一些常用命令

來源:互聯網
上載者:User

標籤:

ls -lat 列出目前的目錄所有東東的東東
ls -lath 人看的大小
ls -F | grep "/$"只搞目錄
ls -lR 包括子目錄…
ls --ignore filename -lt 忽略某個


which,在PATH變數指定的路徑中,搜尋看某個命令是否存在,以及執行的到底是哪一個位置的命令。
whereis, 搜尋程式名,而且只搜尋二進位檔案、man說明檔案和原始碼檔案。如果省略參數,則返回所有資訊。
locate,在系統特定的資料庫中指定檔案名稱尋找,譬如CentOS它只在每天某個時間把新增的檔案更新到/var/lib/mlocate/mlocate.db這個資料庫,定時見/etc/cron.daily/mlocate.cron,strings可以看到部分內容
還有一些好用的工具如tree,file,type等


-mtime 修改時間
-type 檔案類型
-mmin 修改分鐘
-perm 許可權
-user 使用者
-group 組
-maxdepth 搜尋目錄的層級

更多的東西請找你男人,man



find . -maxdepth 1 -type f  ! -name "*.txt"
在層級為1的目錄(目前的目錄)尋找不是.txt的普通檔案
find . -maxdepth 1 -type f  \( -name "*.txt" ! -name "haha.txt" \)
尋找.txt但不包括類似.haha.txt這樣的檔案
find . -maxdepth 1 -type f  \( -name "*.php" -o -name "*.txt" \)
尋找.php或者.txt的檔案


-exec會將find匹配到的所有檔案一次性接收過來操作,不幸的是,有些系統對能夠傳遞給 exec的命令長度有限制,會出現溢出錯誤,譬如提示"Argument list too long"
getconf ARG_MAX 看看參數的位元組限制
那怎麼辦?


xargs xargs命令每次只擷取一部分檔案而不是全部,不像 -exec選項那樣。這樣它可以先處理 最先擷取的一部分檔案,然後是下一批,並如此繼續下去。
find . -name "*.txt" | xargs -n 200 ls -lat
find . -name "*.txt" | xargs -I file -n 1 mv file file.log  更好理解的表達


find尋找避開某個目錄
find . -path "./subdir*" -prune -o  -type f -name "*.txt" -print
尋找/update/目錄下但不包括子目錄./subdir下面的東西
上面是啥意思? 個人理解:
別被-path迷惑,其實-path就是-wholename,在這裡用-wholename  "./subdir*" 一樣的。
-depth與-prune衝突,有-depth的話-prune失效
可以用虛擬碼表示:
find ... 得到好長好長一串。。。
在這好長一串裡
if (-path "./subdir*")
then
          -prune #切切切
else (找-type f -name "*.txt")
          -print
避開多個目錄
find . -path ‘./subdir‘ -prune -o -path ‘./subdir1‘ -prune -o -path ‘./subdir2‘ -prune -o -path ‘./subdir3‘ -prune -o -name "*.txt" -print
簡寫成下面的:
find .  \( -path ‘./subdir‘ -o -path ‘./subdir1‘  -o -path ‘./subdir2‘  -o -path ‘./subdir3‘  \) -prune -o -name "*.txt" -print


 grep -n a *.txt
顯示匹配行及行號
 grep -c a *.txt
只輸出匹配行的計數
 grep -v a *.txt
不包含匹配
 grep ‘\<abcd\>‘ *.txt 
精確匹配a
grep ‘[A-Z][a-z][0-9]‘ *.txt
列印類似"Ab1"的內容,支援posix正則
 grep ‘[a-z]\{4,\}log‘ *.txt
列印小寫字母重複四次以上的行,如aaaa,aabbc等
 grep -v ‘^$|^#‘ *.txt
過濾空行與#開頭的行(通常是注釋)
grep –A5 –B5 ‘haha‘ *.txt
列印匹配到‘haha‘的行以及上5行、下5行
grep ‘192.168.100.34:3306|pfantasy‘ –R /usr/local/wwwroot/ 
也可以寫成egrep -e ‘192.168.100.34:3306‘ -e ‘pfantasy‘ -R /usr/local/wwwroot/
 grep ‘192.168.100.34:3306.*pfantasy‘ -R /usr/local/wwwroot/


awk語句都由模式和動作組成
模式部分決定找對象的時機,一般由條件陳述式或者正則組成,包括兩個特殊欄位:BEGIN{}和END{}
動作就是在某些情況下該幹些啥。。。
BEGIN{} 在任何文本瀏覽動作之前,一般用作製表,END{} 用來在完成文本瀏覽後,通常用作統計
因此一般的結構是:awk ‘BEGIN{預定義點啥}{正式幹點啥}{又幹點啥}...END{幹完了總結彙報點啥}‘


$1 $2 $3 ... 
$0代表全部,動作預設情況下列印全部
通常域的分隔字元是空格或者\t
awk ‘BEGIN{print "Hello---------\n"}{print $1,$2}END{print "ByeBye----------\n"}‘ a.txt


動作部分可能要點條件或者迴圈啥的
awk ‘{if (xx) print $0}‘a.txt
awk ‘{for (oo) print $0}‘a.txt
關於匹配
先來一發 ~
awk ‘{if ($2 ~ /D/ && $3 ~ /[Hh]aoren/) print $0}‘ a.txt
再來一發 ==
awk ‘{if ($2 ~ /D/ && $3 == "Haoren") print $0}‘ a.txt
其實以上兩個可以寫成,因為動作是預設print的
awk ‘$2 ~ /D/ && $3 ~ /[Hh]aoren/‘ a.txt
awk ‘$2 ~ /D/ && $3 == "Haoren"‘ a.txt
awk ‘BEGIN{IGNORECASE = 1;}{if ($2 ~ /D/ && $3 ~ /[Hh]aoren/) print $0}‘ a.txt 忽略大小寫


sed跟awk一樣,也是流編輯器
sed有兩個空間
pattern space 模式空間,sed在沒有-n(suppress automatic printing of pattern space)參數時都預設列印模式空間。一般每一行記錄都只路過模式空間一次。
hold space  暫存空間,中轉地方,譬如把模式空間的東東往暫存空間存一下,然後模式空間注入新的東西,一會再去暫存空間取出來。


sed常用的內部操作
n   讀取下一行替換當前模式空間的行。
N  讀入下一行,追加到模式空間行後面,此時模式空間有兩行但只是一坨東西。    
h  把模式空間裡的行拷貝到暫存空間。    
H  把模式空間裡的行追加到暫存空間。    
g  用暫存空間的內容替換模式空間的行。
G  把暫存空間的內容追加到模式空間的行後。    
X  將暫存空間的內容與模式空間裡的內容互換。    
 !  對所選行以外的所有行應用程式命令。
p  列印當前模式空間的內容。
d   刪除模式空間,開始下一個從頭開始的操作。
D   刪除第一個在模式空間裡的分行符號前段內容,開始下一個從頭開始的操作。
$  匹配最後一行


一些練習
每一行後加一個空行
用一個保持為NULL(裡麵包括了\n)的東東來追加到模式空間後面
sed ‘G‘ a.txt
在匹配行前加入一個空行
由於在行前加,實際上是先列印NULL再列印行內容,因此需要x交換一個NULL過來。匹配行之後,把模式空間的東西扔到暫存空間(x),於是模式空間當前為NULL,把它列印,然後換回來,模式空間為之前的內容,自動列印模式空間。
sed ‘/aaa b/{x;p;x;}‘ a.txt
列印奇數行
有跳行的操作,要跟n/N有關了,不列印就是刪除就d吧
sed ‘{n;d}‘ d.txt
sed -n ‘{p;n}‘ d.txt
sed ‘0~2d‘ d.txt
列印偶數行
sed -n ‘{n;p}‘ d.txt
sed ‘1~2d‘ d.txt
偶數行後加一個空行
sed ‘{n;G}‘ d.txt
偶數行置空
sed ‘{n;g}‘ d.txt


nohup command &
screen
crontab
expect

關於Shell的一些常用命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.