練習:
顯示/etc目錄下,以非字母開頭,後面跟了一具字母及其任意長度任意字符的文件或目錄
[root@localhost~]# mkdir -vp /etc/{1sdf,2wer,3dfg} mkdir: created directory `/etc/1sdf' mkdir: created directory `/etc/2wer' mkdir: created directory `/etc/3dfg' [root@localhost ~]# ls -d /etc/[^a-z]* /etc/1sdf /etc/2wer /etc/3dfg [root@localhost ~]# rmdir/etc/{1sdf,2wer,3dfg} [root@localhost ~]# ls -d /etc/[^a-z]* ls: cannot access /etc/[^a-z]*: No suchfile or directory
複製/etc目錄下,所有以.d結尾的文件或目錄至/tmp/mageedu.com目錄中。
[root@localhost ~]# mkdir /tmp/mageedu.com [root@localhost ~]# cp -r /etc/*.d/tmp/mageedu.com/ [root@localhost ~]# ls /tmp/mageedu.com/ [root@localhost ~]# rm -rf/tmp/mageedu.com/
tee命令的用法
tee 命令:用來將標準輸入的內容輸出到標準輸出並可以保存爲文件
參數
-a 附加到文件-i 無視中斷--help 顯示幫助信息--version 顯示版本信息 [root@localhost ~]# tee fuck abc abc 123 123 wosjoewqer wosjoewqer ^C [root@localhost ~]# cat fuck abc 123 wosjoewqer [root@localhost ~]# ll fuck -rw-r--r--. 1 root root 19 Aug 23 18:23fuck
目錄管理類命令:
mkdir, rmdir, tree, dirname, basename
mkdir
用法:mkdir [選項]... 目錄... 若指定目錄不存在則創建目錄。 長選項必須使用的參數對於短選項時也是必需使用的。 -m, --mode=模式 設置權限模式(類似chmod),而不是rwxrwxrwx 減umask -p, --parents 需要時創建目標目錄的上層目錄,但即使這些目錄已存在也不當作錯誤處理 -v, --verbose 每次創建新目錄都顯示信息 -Z, --context=CTX 將每個創建的目錄的SELinux 安全環境設置爲CTX --help 顯示此幫助信息並退出 --version 顯示版本信息並退出
練習:
如何創建目錄:x_m,x_n, y_m, y_n?
[root@localhost ~]# mkdir -pv {x,y}_{m,n} mkdir: created directory `x_m' mkdir: created directory `x_n' mkdir: created directory `y_m' mkdir: created directory `y_n' [root@localhost ~]# ls -l drwxr-xr-x. 2 root root 4096 Aug 23 18:30 x_m drwxr-xr-x. 2 root root 4096 Aug 23 18:30 x_n drwxr-xr-x. 2 root root 4096 Aug 23 18:30 y_m drwxr-xr-x. 2 root root 4096 Aug 23 18:30 y_n
rmdir
用法:rmdir [選項]... 目錄... 刪除指定的空目錄。 --ignore-fail-on-non-empty 忽略僅由目錄非空產生的所有錯誤 -p, --parents 刪除指定目錄及其上級文件夾,例如"rmdir -p a/b/c'" 與"rmdir a/b/c a/b a'" 基本相同 -v, --verbose 輸出處理的目錄詳情 --help 顯示此幫助信息並退出 --version 顯示版本信息並退出
[root@localhost ~]# rmdir -pv {x,y}_{m,n} rmdir: removing directory, `x_m' rmdir: removing directory, `x_n' rmdir: removing directory, `y_m' rmdir: removing directory, `y_n' [root@localhost ~]# ls -l
dirname
dirname 命令:顯示指定路徑處了文件名之外的路徑前綴
basename
用法:basename 名稱 [後綴] 或:basename 選項 去掉前導的目錄部分後打印“名稱”。 如果指定的話,還會去掉尾隨的“後綴”。 --help 顯示此幫助信息並退出 --version 輸出版本信息並退出
文本文件查看命令:
cat, tac, more, less, tail, head
cat
用法:cat [選項] [文件]... 將[文件]或標準輸入組合輸出到標準輸出。 -A, --show-all 等價於 -vET -b, --number-nonblank 對非空輸出行編號 -e 等價於 -vE -E, --show-ends 在每行結束處顯示 $ -n, --number 對輸出的所有行編號 -s, --squeeze-blank 不輸出多行空行 -t 與 -vT 等價 -T, --show-tabs 將跳格字符顯示爲 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 --help 顯示此幫助信息並退出 --version 輸出版本信息並退出 如果[文件]缺省,或者[文件]爲 - ,則讀取標準輸入。
Tac
用法:tac [選項]... [文件]... 將每個指定文件按行倒置並寫到標準輸出。 如果不指定文件,或文件爲"-",則從標準輸入讀取數據。 長選項必須使用的參數對於短選項時也是必需使用的。 -b, --before 在行前而非行尾添加分隔標誌 -r, --regex 將分隔標誌視作正則表達式來解析 -s, --separator=字符串 使用指定字符串代替換行作爲分隔標誌 --help 顯示此幫助信息並退出 --version 顯示版本信息並退出
more, less
文件管理命令:
cp, mv, rm
cp
用法:cp [選項]... [-T] 源文件 目標文件
或:cp [選項]... 源文件... 目錄
或:cp [選項]... -t 目錄 源文件...
將源文件複製至目標文件,或將多個源文件複製至目標目錄。
長選項必須使用的參數對於短選項時也是必需使用的。
-a, --archive 等於-dR --preserve=all --backup[=CONTROL 爲每個已存在的目標文件創建備份 -b 類似--backup 但不接受參數 --copy-contents 在遞歸處理是複製特殊文件內容 -d 等於--no-dereference --preserve=links -f, --force 如果目標文件無法打開則將其移除並重試(當 -n 選項 存在時則不需再選此項) -i, --interactive 覆蓋前詢問(使前面的 -n 選項失效) -H 跟隨源文件中的命令行符號鏈接 -l, --link 鏈接文件而不復制 -L, --dereference 總是跟隨符號鏈接 -n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效) -P, --no-dereference 不跟隨源文件中的符號鏈接 -p 等於--preserve=模式,所有權,時間戳 --preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果 可能保持附加屬性:環境、鏈接、xattr 等 -c same as --preserve=context --sno-preserve=屬性列表 不保留指定的文件屬性 --parents 複製前在目標目錄創建來源文件路徑中的所有目錄 -R, -r, --recursive 遞歸複製目錄及其子目錄內的所有內容 --reflink[=WHEN] 控制克隆/CoW 副本。請查看下面的內如。 --remove-destination 嘗試打開目標文件前先刪除已存在的目的地 文件 (相對於 --force 選項) --sparse=WHEN 控制創建稀疏文件的方式 --strip-trailing-slashes 刪除參數中所有源文件/目錄末端的斜槓 -s, --symbolic-link 只創建符號鏈接而不復制文件 -S, --suffix=後綴 自行指定備份文件的後綴 -t, --target-directory=目錄 將所有參數指定的源文件/目錄 複製至目標目錄 -T, --no-target-directory 將目標目錄視作普通文件 -u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing -v, --verbose explain what is being done -x, --one-file-system stay on this filesystem -Z, --context=CONTEXT set security context ofcopy to CONTEXT
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出
默認情況下,源文件的稀疏性僅僅通過簡單的方法判斷,對應的目標文件目標文件也
被爲稀疏。這是因爲默認情況下使用了--sparse=auto 參數。如果明確使用
--sparse=always 參數則不論源文件是否包含足夠長的0 序列也將目標文件創文
建爲稀疏件。
使用--sparse=never 參數禁止創建稀疏文件。
當指定了--reflink[=always] 參數時執行輕量化的複製,即只在數據塊被修改的
情況下才複製。如果複製失敗或者同時指定了--reflink=auto,則返回標準複製模式。
備份文件的後綴爲"~",除非以--suffix選項或是SIMPLE_BACKUP_SUFFIX
環境變量指定。版本控制的方式可通過--backup 選項或VERSION_CONTROL環境
變量來選擇。以下是可用的變量值:
none, off 不進行備份(即使使用了--backup 選項)
numbered, t 備份文件加上數字進行排序
existing, nil 若有數字的備份文件已經存在則使用數字,否則使用普通方式備份
simple, never 永遠使用普通方式備份
有一個特別情況:如果同時指定--force 和--backup選項,而源文件和目標文件
是同一個已存在的一般文件的話,cp 會將源文件備份。
mv
用法:mv [選項]... [-T] 源文件 目標文件
或:mv [選項]... 源文件... 目錄
或:mv [選項]... -t 目錄 源文件...
將源文件重命名爲目標文件,或將源文件移動至指定目錄。
長選項必須使用的參數對於短選項時也是必需使用的。
--backup[=CONTROL] 爲每個已存在的目標文件創建備份 -b 類似--backup 但不接受參數 -f,--force 覆蓋前不詢問 -i,--interactive 覆蓋前詢問 -n,--no-clobber 不覆蓋已存在文件 如果您指定了-i、-f、-n 中的多個,僅最後一個生效。 --strip-trailing-slashes 去掉每個源文件參數尾部的斜線 -S,--suffix=SUFFIX 替換常用的備份文件後綴 -t, --target-directory=DIRECTORY 將所有參數指定的源文件或目錄 移動至 指定目錄 -T, --no-target-directory 將目標文件視作普通文件處理 -u,--update 只在源文件文件比目標文件新,或目標文件 不存在時才進行移動 -v, --verbose 詳細顯示進行的步驟 --help 顯示此幫助信息並退出 --version 顯示版本信息並退出
備份文件的後綴爲"~",除非以--suffix選項或是SIMPLE_BACKUP_SUFFIX
環境變量指定。版本控制的方式可通過--backup 選項或VERSION_CONTROL環境
變量來選擇。以下是可用的變量值:
none, off 不進行備份(即使使用了--backup 選項)
numbered, t 備份文件加上數字進行排序
existing, nil 若有數字的備份文件已經存在則使用數字,否則使用普通方式備份
simple, never 永遠使用普通方式備份
rm
用法:rm [選項]... 文件...
刪除 (unlink) 文件。
-f, --force 強制刪除。忽略不存在的文件,不提示確認 -i 在刪除前需要確認 -I 在刪除超過三個文件或者遞歸刪除前要求確認。此選項比-i 提 示內容更少,但同樣可以阻止大多數錯誤發生 --interactive[=WHEN] 根據指定的WHEN 進行確認提示:never,once(-I), 或者always (-i)。如果此參數不加WHEN 則總是提示 --one-file-system 遞歸刪除一個層級時,跳過所有不符合命令行參 數的文件系統上的文件 --no-preserve-roo 不特殊對待"/" --preserve-root 不允許刪除"/"(默認) -r, -R, --recursive 遞歸刪除目錄及其內容 -v, --verbose 詳細顯示進行的步驟
默認時,rm 不會刪除目錄。使用--recursive(-r 或-R)選項可刪除每個給定
的目錄,以及其下所有的內容。
要刪除第一個字符爲"-"的文件 (例如"-foo"),請使用以下方法之一:
rm -- -foo
rm ./-foo
請注意,如果使用rm 來刪除文件,通常仍可以將該文件恢復原狀。如果想保證
該文件的內容無法還原,請考慮使用shred。
文件處理工具:
wc, cut, sort, uniq
wc
wc命令的功能爲統計指定文件中的字節數、單詞數、行數, 並將統計結果顯示輸出
參數
-c, --bytes打印字節數-m, --chars 打印字符數 -l, --lines 打印行數 -L, --max-line-length 打印最長行的長度-w, --words 打印單詞數 [root@localhost~]#cat/etc/passwd |ws –l 查看passwd文件有多少行 [root@localhost~]#echo“qqq www eee” |wc –w 查看輸出有多少個單詞 [root@localhost~]#echo“21312123” | wc –m 查看輸出有多少個字符
cut
cut - 在文件的每一行中提取片斷 在 每個文件 FILE 的 各行 中, 把 提取的 片斷 顯示在 標準輸出. -b, --bytes=LIST 輸出 這些 字節 -c, --characters=LIST 輸出 這些 字符 -d, --delimiter=DELIM 使用 DELIM 取代 TAB 做 字段(field) 分隔符 -f, --fields=LIST 輸出 這些 字段 -n (忽略) -s, --only-delimited 不顯示 沒有 分隔符 的 行 --output-delimiter=STRING 使用 STRING 作爲 輸出分隔符, 缺省 (的 輸出分隔符) 爲 輸入分隔符 --help 顯示 幫助信息, 然後 結束 --version 顯示 版本信息, 然後 結束 使用 且 只使用 -b, -c 或 -f 中的 一個 選項. LIST 由 一個 範圍 (range) 或 逗號 隔開的 多個 範圍 組成. 範圍 是 下列 形式 之一: N 第 N 個 字節, 字符 或 字段, 從 1 計數 起 N- 從 第 N 個 字節, 字符 或 字段 直至 行尾 N-M 從 第 N 到 第 M (幷包括 第M) 個 字節, 字符 或 字段 -M 從 第 1 到 第 M (幷包括 第M) 個 字節, 字符 或 字段 如果 沒有 指定 文件 FILE, 或 FILE 是 -, 就從 標準輸入 讀取 數據.
sort
用法:sort [選項]... [文件]... 或:sort [選項]... --files0-from=F 串聯排序所有指定文件並將結果寫到標準輸出。 長選項必須使用的參數對於短選項時也是必需使用的。 排序選項: -b, --ignore-leading-blanks 忽略前導的空白區域 -d, --dictionary-order 只考慮空白區域和字母字符 -f, --ignore-case 忽略字母大小寫 -g, --general-numeric-sort 按照常規數值排序 -i, --ignore-nonprinting 只排序可打印字符 -M, --month-sort 比較 (未知) < "一月" < ... < "十二月" 在LC_ALL=C 時爲(unknown) < `JAN' < ... < `DEC' -h, --human-numeric-sort 使用易讀性數字(例如: 2K 1G) -n, --numeric-sort 根據字符串數值比較 -R, --random-sort 根據隨機hash 排序 --random-source=文件 從指定文件中獲得隨機字節 -r, --reverse 逆序輸出排序結果 --sort=WORD 按照WORD 指定的格式排序: 一般數字-g,高可讀性-h,月份-M,數字-n, 隨機-R,版本-V -V, --version-sort 在文本內進行自然版本排序 其他選項: --batch-size=NMERGE 一次最多合併NMERGE 個輸入;如果輸入更多 則使用臨時文件 -c, --check, --check=diagnose-first 檢查輸入是否已排序,若已有序則不進行操作 -C, --check=quiet, --check=silent 類似-c,但不報告第一個無序行 --compress-program=程序 使用指定程序壓縮臨時文件;使用該程序 的-d 參數解壓縮文件 --debug 爲用於排序的行添加註釋,並將有可能有問題的 用法輸出到標準錯誤輸出 --files0-from=文件 從指定文件讀取以NUL 終止的名稱,如果該文件被 指定爲"-"則從標準輸入讀文件名 -k, --key=位置1[,位置2] 在位置1 開始一個key,在位置2 終止(默認爲行尾) 參看POS 語法。 -m, --merge 合併已排序的文件,不再進行排序 -o, --output=文件 將結果寫入到文件而非標準輸出 -s, --stable 禁用last-resort 比較以穩定比較算法 -S, --buffer-size=大小 指定主內存緩存大小 -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的轉換 -T, --temporary-directory=目錄 使用指定目錄而非$TMPDIR 或/tmp 作爲 臨時目錄,可用多個選項指定多個目錄 --parallel=N 將同時運行的排序數改變爲N -u, --unique 配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果 -z, --zero-terminated 以0 字節而非新行作爲行尾標誌 --help 顯示此幫助信息並退出 --version 顯示版本信息並退出 POS 是F[.C][OPTS],F 代表域編號,C 是域中字母的位置,F 和C 均從1開始計數 如果沒有有效的-t 或-b 選項存在,則從前導空格後開始計數字符。OPTS 是一個或多個 由單個字母表示的順序選項,以此覆蓋此key 的全局順序設置。如果沒有指定key 則 將其整個行。 指定的大小可以使用以下單位之一: 內存使用率% 1%,b 1、K 1024 (默認),M、G、T、P、E、Z、Y 等依此類推。 如果不指定文件,或者文件爲"-",則從標準輸入讀取數據。 *** 警告 *** 本地環境變量會影響排序結果。 如果希望以字節的自然值獲得最傳統的排序結果,請設置LC_ALL=C。
[root@www ~]# cat /etc/passwd | sort #sort 是默認以第一個數據來排序,而且默認是以字符串形式來排序,所以由字母 a 開始升序排序。
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3 #/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3n #用數字排序,默認是以字符串來排序的
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3nr #倒序排列,默認是升序排序
[root@www ~]# ccat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r #對/etc/passwd,先以第六個域的第2個字符到第4個字符進行正向排序,再基於第一個域進行反向排序
[root@www ~]# cat /etc/passwd | sort -t':' -k 7 -u #查看/etc/passwd有多少個shell:對/etc
uniq
用法:uniq [選項]... [文件] 從輸入文件或者標準輸入中篩選相鄰的匹配行並寫入到輸出文件或標準輸出。 不附加任何選項時匹配行將在首次出現處被合併。 長選項必須使用的參數對於短選項時也是必需使用的。 -c, --count 在每行前加上表示相應行目出現次數的前綴編號 -d, --repeated 只輸出重複的行 -D, --all-repeated[=delimit-method 顯示所有重複的行 delimit-method={none(default),prepend,separate} 以空行爲界限 -f, --skip-fields=N 比較時跳過前N 列 -i, --ignore-case 在比較的時候不區分大小寫 -s, --skip-chars=N 比較時跳過前N 個字符 -u, --unique 只顯示唯一的行 -z, --zero-terminated 使用'\0'作爲行結束符,而不是新換行 -w, --check-chars=N 對每行第N 個字符以後的內容不作對照 若域中爲先空字符(通常包括空格以及製表符),然後非空字符,域中字符前的空字符將被跳過。 提示:uniq 不會檢查重複的行,除非它們是相鄰的行。 如果您想先對輸入排序,使用沒有uniq 的"sort -u"。 同時,比較服從"LC_COLLATE" 變量所指定的規則。