Shell中的常用命令
1.cat命令不僅可以讀取文件、拼接數據,還能夠從標準輸入中讀取
echo "sss" | cat - out.txt
“-”被作爲stdin文本的文件名
2.壓縮相鄰的空白行
cat -s 1.txt
3.用cat命令的-T選項能夠將製表符標記成^T
cat -T 1.txt
4.find命令的工作方式如下:沿着文件層次結構向下遍歷,匹配符合條件的文件,執行相應的操作。默認打印出文件和目錄
find . -print
.指定當前目錄,”. . “指定父目錄。print選項使用\n
(換行符)分隔輸出每一個文件或目錄名。而-print0
使用空字符‘\0
’來分隔。
5.根據文件名或正則表達式進行搜索
find a/a -name '*.txt' -print
6.find命令支持邏輯操作符。-a
和-and
選項可以執行邏輯與操作,-o
和-or
可以執行邏輯或操作。
7.否定參數
find . ! -name "*.txt" -print
8.根據文件類型搜索
只列出所有的目錄(包括子目錄)
find . -type d -print
列出普通文件
find . -type f -print
9.根據文件的時間戳進行搜索,Unix/Linux文件系統中的每一個文件都有3種時間戳。
訪問時間(-atime
):用戶最近一次訪問文件的時間。
修改時間(-mtime
):文件內容最後一次被修改的時間。
變化時間(-ctime
):文件元數據(例如權限或所有權)最後一次改變的時間
打印出在最近7天內被訪問過的所有文件。
find . -type f -atime -7 -print
打印出恰好在7天前被訪問過的所有文件。
find . -type f -atime 7 -print
打印出訪問時間超過7天的所有文件。
find . -type f -atime +7 -print
10.–newer選項可以指定一個用於比較修改時間的參考文件,然後找出比參考文件更新的(更近的修改時間)所有文件。
找出比1.txt修改時間更近的所有文件
find . -type f -newer 1.txt -print
11.基於文件權限和所有權,打印出權限爲644的文件
find . -type f -perm 755 -print
12.刪除匹配的文件
find命令的-delete選項可以刪除所匹配的文件。
find . -type f -name "*.session" -delete
13.xargs,將多行輸入轉換成多行輸出
cat 1.txt | xargs
14.xargs的-n選項可以限制每次調用命令時用到的參數個數。
cat 1.txt | xargs -n 3
分隔多行,每行3個元素。
15.統計程序文件的行數。
find -type f -name "*.sh" -print0 | xargs -0 wc -l
16.要將輸入中的字符由大寫轉換成小寫
echo "DDFFRGVD df" | tr 'A-Z' 'a-z'
17.在tr中利用集合的概念,可以輕鬆地將字符從一個集合映射到另一個集合中。
echo 12345 | tr '0-9' '9876543210'
——87654 #已加密
18.tr命令可以用來加密。
echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-zA-Z' 'n-za-mN-ZA-M'
19.tr有一個選項-d,可以通過指定需要被刪除的字符集合,將出現在stdin中的特定字符清除掉:
echo "Hello 123 world" | tr -d '0-9'
——Hello world
20.將不在0-9字符替換成空格
echo hello 1 char 2 next 4 | tr -c '0-9' ' '
—— 1 2 4
21.壓縮字符,tr命令能夠完成很多文本處理任務。例如,它可以刪除字符串中重複出現的字符。基本實現形式如下
echo "a ddd re ?cd d0" | tr -s ' '
——a ddd re ?cd d0
23.校驗和程序用來從文件中生成相對較小的唯一密鑰。
24.按照數字順序排序
sort -n 1.txt
按照逆序排序:
sort -r 1.txt
25.有時文本中可能會包含一些像空格之類的多餘字符。如果需要忽略標點符號並以字典排序,可以使用:
sort -bd unsorted.txt
其中,選項-b用於忽略文件中的前導空白行,選項-d用於指明以字典序進行排序。
26.uniq命令可以從給定輸入中找出唯一的行,報告或刪除那些重複的行,只能用於排過序的數據。
uniq sorted 1.txt
sort 1.txt | uniq
27.只顯示唯一的行(在輸入文件中沒有重複出現過的行)
uniq -u 1.txt
28.統計各行在文件中出現的次數
sort 1.txt | uniq -c
29.找出重複的行
sort 1.txt | uniq -d
30.通過指定分割大小,可以將100KB的文件分成一系列10KB的小文件。在split命令中,除了k(KB),我們還可以使用M(MB)、G(GB)、c(byte)和w(word)。
split -b 2k timing.log
31.藉助%操作符可以從name.extension這種格式中提取name部分。
file_jpg="sample.jpg"
name=${file_jpg%.*}
echo File name is: $name
——File name is: sample
32.#操作符可以提取出擴展名
extension=${file_jpg#*.}
echo Extension is: jpg
——Extension is: jpg
33.匹配:m// (可以省略m,直接寫成/regexp/)
替換:s///
轉化:tr///
34.將後綴修改:
rename -n 's/png/PNG/' *.png
將大寫改爲小寫
rename 'y/A-Z/a-z/'
去掉文件後綴名:
rename 's/\.jpg$//' *.jpg