Shell 常用命令和工具(一)

2021-10-09 20:37:34 字數 4292 閱讀 9711

1 列出目錄內容:ls

2 列印:echo

3 格式化列印:printf

用法:printf format [agrs]

format:

%.ns 輸出字串,n 是輸出幾個字元

%ni 輸出整數,n 是輸出幾個數字

%m.nf 輸出浮點數,m 是輸出的整數字數,n 是輸出的小數字數

%x 不帶正負號的十六進製制值,使用 a 至 f 表示 10 至 15

%x 不帶正負號的十六進製制,使用 a 至 f 表示 10 至 15

%% 輸出單個%

一些常用的空白符:

\n 換行

\r 回車

\t 水平製表符

對齊方式:

%-5s 對引數每個欄位左對齊,寬度為 5

%-4.2f 左對齊,寬度為 4,保留兩位小數

不加橫線"-"表示右對齊。

4 連線檔案和標準輸出列印:cat

-a 檢視所有內容

-b 顯示非空行行號

-n 顯示所有行行號

-t 顯示 tab,用^i 表示

-e 顯示以$結尾

5 倒序列印:tac

6 複製檔案或目錄:cp

-a 歸檔

-b 目標檔案存在建立備份,備份檔案是檔名跟~

-f 強制複製檔案或目錄

-r 遞迴複製目錄

-p 保留原有檔案或目錄屬性

-i 覆蓋檔案之前先詢問使用者

-u 當原始檔比目的檔案修改時間新時才複製

-v 顯示複製資訊

7 建立目錄:mkdir

-p 遞迴建立目錄

-v 顯示建立過程

8 移動檔案或重新命名

-b 目標檔案存在建立備份,備份檔案是檔名跟~

-u 當原始檔比目的檔案修改時間新時才移動

-v 顯示移動資訊

9 估算磁碟檔案空間使用:du

-b 單位 bytes 顯示

-c 產生乙個總大小

-h 易讀格式顯示(k,m,g)

-k 單位 kb 顯示

-m 單位 mb 顯示

-s 只顯示總大小

--max-depth=《目錄層數》,超過層數的目錄忽略

--exclude=file 排除檔案或目錄

--time 顯示大小和建立時間

10 選取檔案的每一行資料

-b 選中第幾個字元、

-c 選中多少個字元

-d 指定分隔符,預設是空格

-f 指定顯示選中字段

示例:列印 b 字元:

# echo "abc" |cut -b "2"

b擷取 abc 字元:

# echo "abcdef" |cut -c 1-3

abc已冒號分隔,顯示第二個字段:

# echo "a:b:c" |cut -d: -f2

11 顯示檔案或檔案系統狀態:stat

12 列印序列化數字:seq

-f 使用 printf 樣式格式

-s 指定分隔符,預設換行符\n

-w 等寬,用 0 填充

13 生成隨機序列:shuf

常用選項:

-i 輸出數字範圍

-o 結果寫入檔案

示例:輸出範圍隨機數:

# seq 5 |shuf

14 排序文字:sort

-f 忽略大小寫

-g 一般數字排序

-m 根據月份比較排序,比如 jan、dec

-h 易讀的大小單位排序,比如 2k、1g

-n 數字比較排序

-r 倒序排序

-k n,m 根據關鍵字排序,從第 n 字段開始,m 字段結束

-o 將結果寫入檔案

-t 指定分隔符

-u 去重重複行

15 從標準輸入讀取寫入標準輸出和檔案:tee

-a 追加到檔案

示例:列印並追加到檔案:

# echo 123 |tee -a a.log

16 連線兩個檔案:join

-a <1 或 2> 除顯示原來輸出的內容外,還顯示指定檔案中沒有相同的字段,預設不顯示

-i 忽略大小寫

-o 按照指定檔案字段顯示

-t 使用字元作為輸入和輸出字段分隔符

-1 連線檔案 1 的指定字段

-2 連線檔案 2 的指定字段

17 合併檔案:paste

-d 指定分隔符,預設是 tab 鍵

-s 將檔案內容平行,tab 鍵分隔

18 輸出檔案前幾行:head

-c 列印前多少 k、bytes

-n 列印前多少行

19 輸出檔案後幾行:tail

-c 列印前多少 k、bytes

-f 實時讀檔案,隨著檔案輸出附加輸出

-n 輸出最後幾行

--pid 與-f 一起使用,表示 pid 死掉後結束

-s 與-f 一起使用,表示休眠多少秒輸出

20 搜尋目錄檔案層次結構:find

格式:find path -option actions

常用選項:

-name 檔名,支援(『*』, 『?』, and 『』)

-type 檔案型別,d 目錄,f 常規檔案等

-perm 符合許可權的檔案,比如 755

-atime -/+n 在 n 天以內/過去 n 天被訪問過

-ctime -/+n 在 n 天以內/過去 n 天被修改過

-amin -/+n 在 n 天以內/過去 n 分鐘被訪問過

-cmin -/+n 在 n 天以內/過去 n 分鐘被修改過

-size -/+n 檔案大小小於/大於,b、k、m、g

-maxdepth levels 目錄層次顯示的最大深度

-regex pattern 檔名匹配正規表示式模式

-inum 通過 inode 編號查詢檔案

動作:-detele 刪除檔案

-exec command {} \; 執行命令,花括號代表當前檔案

-ls 列出當前檔案,ls -dils 格式

-print 完整的檔名並新增乙個回車換行符

-print0 列印完整的檔名並不新增乙個回車換行符

-printf format 列印格式

示例:查詢檔案名:

查詢檔案名並且檔案型別:

# find /tmp -name core -type f -print

查詢檔案名並且檔案型別刪除:

# find /tmp -depth -name core -type f -delete

查詢當前目錄常規檔案並檢視檔案型別:

# find . -type f -exec file '{}' \;

查詢檔案許可權是 664:

# find . -perm 664

查詢大於 1024k 的檔案:

# find . -size -1024k

查詢 3 天內修改的檔案:

# find /bin -ctime -3

排除多個型別的檔案:

# find . ! -name "*.sql" ! -name "*.txt"

或條件查詢多個型別的檔案:

# find . -name '*.sh' -o -name '*.bak'

# find . -regex ".*\.sh|.*\.bak"

# find . -regex ".*\.\(sh\|bak\)"

並且條件查詢檔案:

# find . -name "*.sql" -a -size +1024k

只顯示第一級目錄:

# find /etc -type d -maxdepth 1

通過 inode 編號刪除檔案:

# rm `find . -inum 671915`

# find . -inum 8651577 -exec rm -i {} \;

shell 常用命令

shell 程式設計中使用到得if語句內判斷引數 b 當file存在並且是塊檔案時返回真 c 當file存在並且是字元檔案時返回真 d 當pathname存在並且是乙個目錄時返回真 e 當pathname指定的檔案或目錄存在時返回真 f 當file存在並且是正規檔案時返回真 g 當由pathname...

shell常用命令

1.echo echo 用於輸出,相當於c語言中的printf 用echo輸出變數的值,需要在變數前面加 輸出a的值 a 1echo a shell中變數不需要定義,直接賦值 要用到變數時,需要加 2.管道 命令之間的輸入。將乙個命令的輸出作為另乙個命令的輸入。管道相當於一種過濾功能。3.grep ...

Shell常用命令

shell常用命令總結 1 ls命令 列出檔案 ls la 列出當前目錄下的所有檔案和資料夾 ls a 列出當前目錄下所有以 a字母開頭的檔案 ls l txt 列出當前目錄下所有字尾名為 txt的檔案 2 cp命令 複製 cp a.txt b.txt 把檔案 a的內容複製到b檔案 cp a.txt...