Linux命令分爲內部命令和外部命令
內部命令:shell內置命令
外部命令:在文件系統的某個路徑下有一個名稱響應的可執行文件
★如果系統中命令有別名,可以使用\COMMAND使用原命令,使用alias查看系統中使用的命令別名
whatis :顯示指定命令有哪些版本的幫戶信息
which:顯示命令路徑
cd:切換當前目錄
不加任何參數,切換到當前用戶的家目錄,等同於 ~
cd ~USERNAME 切換到制定用戶的家目錄
cd - 在當前目錄和上一次目錄之間來回切換
ls 列出目錄內容
-a 列出所有內容,包括 . ..
-A 列出所有內容,除了. ..
-l 長格式顯示
文件類型:
-:普通文件(f)
d:目錄文件
b:快設備文件(block)
c:字符設備文件(character)
l:符號連接文件(symbolic link file)
p:管道文件(pipe)
s:套接字文件(socket )
文件權限:9位;每三位一組,rwx,沒有-表示
文件硬鏈接次數
文件的屬主屬組
文件大小,默認單位字節
時間戳:顯示最近一次被修改的時間
訪問:access
修改:modify,文件內容發生改變
改變:change,元數據(metadata)改變
-h 以人類比較直觀的單位顯示
-d 顯示目錄自身的屬性
-i 顯示文件的索引號
-r 逆序顯示文件
-R 遞歸顯示目錄及目錄中的文件
type:顯示指定命令屬於那種類型,內置命令或者外部命令
date:顯示或者設定系統日期與時間
-d<字符串> 顯示字符串所指的日期與時間。字符串前後必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串前後必須加上雙引號。
-u 顯示GMT。
格式化顯示時間參數:
%% 顯示%
%a 顯示縮寫的星期
%A 顯示完整的星期
%b 顯示縮寫的月份
%B 顯示完整的月份
%c 顯示本地時間和日期
%C 顯示世紀
%d 一個月的第幾天01-31表示
%D 顯示日期,同%m/%d/%y 02/25/16
%e 一個月的第幾天1-31表示
%F 完全顯示日期,同%Y-%m-%d 2016-02-25
%g 年份(yy)
%G 年份(yyyy)
%h 同%b
%H 小時(00..23)
%I 小時(01..12)
%j 一年的第幾天
%k 小時(0..23)
%l 小時(1..12)
%m 月份(01..12)
%M 分鐘(00..59)
%n 換行顯示
%N 納秒
%p AM或者PM
%P am或者pm
%r 12小時制時間(hh:mm:ss [AP]M)
%R 24小時制時間(hh:mm)
%s 從00:00:00 1970-01-01 UTC開始的秒數
%t 顯示製表符
%T 24小時制時間(hh:mm:ss)
%u 一週的第幾天(1..7); 1 表示星期一
%U 一年的第幾周,週日爲每週的第一天(00..53)
%V 一年的第幾周,週一爲每週的第一天 (01..53)
%w 一週的第幾天 (0..6); 0 代表週日
%W 一年的第幾周,週一爲每週的第一天(00..53)
%x 日期(mm/dd/yy)
%X 時間(%H:%M:%S)
%y 年份(00..99)
%Y 年份 (1970…)
%z RFC-2822 風格數字格式時區(-0500)
%Z 時區(e.g., EDT), 無法確定時區則爲空
具體用法
在設定時間方面
date -s //設置當前時間,只有root權限才能設置,其他只能查看。
date -s 20080523 //設置成20080523,這樣會把具體時間設置成空00:00:00
date -s 01:01:01 //設置具體時間,不會對日期做更改
date -s “01:01:01 2008-05-23″ //這樣可以設置全部時間
date -s “01:01:01 20080523″ //這樣可以設置全部時間
date -s “2008-05-23 01:01:01″ //這樣可以設置全部時間
date -s “20080523 01:01:01″ //這樣可以設置全部時間
顯示時間
date +%Y%m%d //顯示現在天年月日
date +%Y%m%d --date="+1 day" //顯示後一天的日期
date +%Y%m%d --date="-1 day" //顯示前一天的日期
date +%Y%m%d --date="-1 month" //顯示上一月的日期
date +%Y%m%d --date="+1 month" //顯示下一月的日期
date +%Y%m%d --date="-1 year" //顯示前一年的日期
date +%Y%m%d --date="+1 year" //顯示下一年的日期
hwclock 查詢設置硬件時鐘,clock 是hwclock的鏈接文件
-r|--show 查看硬件時間
-s|--hctosys 硬件時間同步到系統時間
-w|--systohc 系統時間同步到硬件時間
--adjust:hwclock每次更改硬件時鐘時,都會記錄在/etc/adjtime文件中。使用--adjust參數,可使hwclock根據先前的記錄來估算硬件時鐘的偏差,並用來校正目前的硬件時鐘
--debug:顯示hwclock執行時詳細的信息
--directisa:hwclock預設從/dev/rtc設備來存取硬件時鐘。若無法存取時,可用此參數直接以I/O指令來存取硬件時鐘
--hctosys:將系統時鐘調整爲與目前的硬件時鐘一致
--set --date=<日期與時間>:設定硬件時鐘
--show:顯示硬件時鐘的時間與日期
--test:僅測試程序,而不會實際更改硬件時鐘
--utc:若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作
echo 顯示一段文字,默認自動打印換行符
-n 不要再結尾自動打印換行符
-e 啓用 \
\\ 打印反斜槓本身
\a 發出警告聲
\b 刪除前一個字符
\c 最後不加換行符號
\f 換行但光標仍然停留在原來的位置
\n 換行切光標移至行首
\r 光標移至行首,但不換行
\t 插入tab
printf 格式化輸出
目錄管理命令
mkdir:創建空目錄
-p 遞歸創建目錄
-v 詳細顯示信息
-m|--mode=MODE 創建目錄是設定權限
-Z 創建目錄時設SELinux 安全上下文的CTX
mkdir /x/y/{a/c,b} 自動展開
{a,b}_{c,d}(展開分別爲a_c,a_d,b_c,b_d)
tree:查看目錄樹
-a 顯示所有文件和目錄。
-A 使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合。
-C 在文件和目錄清單加上色彩,便於區分各種類型。
-d 顯示目錄名稱而非內容。
-D 列出文件或目錄的更改時間。
-f 在每個文件或目錄之前,顯示完整的相對路徑名稱。
-F 在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","=","@","|"號。
-g 列出文件或目錄的所屬羣組名稱,沒有對應的名稱時,則顯示羣組識別碼。
-i 不以階梯狀列出文件或目錄名稱。
-I<範本樣式> 不顯示符合範本樣式的文件或目錄名稱。
-l 如遇到性質爲符號連接的目錄,直接列出該連接所指向的原始目錄。
-n 不在文件和目錄清單加上色彩。
-N 直接列出文件和目錄名稱,包括控制字符。
-p 列出權限標示。
-P<範本樣式> 只顯示符合範本樣式的文件或目錄名稱。
-q 用"?"號取代控制字符,列出文件和目錄名稱。
-s 列出文件或目錄大小。
-t 用文件和目錄的更改時間排序。
-u 列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼。
-x 將範圍侷限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另一個文件系統上,則將該子目錄予以排除在尋找範圍外。
rmdir:刪除空目錄
-p 遞歸刪除空目錄
touch:改變文件時間戳
-a 只改變訪問時間
-c 如果文件不存在,則不建立文件
-d|--date=STRING 使用指定的日期時間,而非現在的時間 如"2004-02-29 16:21:42"
-m|--time=TIME 只改變變動時間
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期相同
-t 使用指定的日期時間,而非現在的時間 [[CC]YY]MMDDhhmm[.ss]
-h 會影響符號鏈接本身,而非符號鏈接所指示的目的地(當系統支持更改符號鏈接的所有者時,此選項纔有用)
stat:查看文件或目錄的詳細信息
-L 如果是鏈接文件,則獲取源文件信息
-Z 顯示SELinux安全上下文信息
-f 顯示文件所在的文件系統狀態
-t|--terse 以簡潔的形式打印輸出信息(在沒有改變輸出格式的情況下):如下圖第一幅圖片
-c|--format=FORMAT 自定義輸入格式,結尾有換行
--printf=FORMAT 自定義輸入格式,結尾無換行,需手動添加
可選的文件信息輸出格式
%a Access rights in octal 八進制格式的文件訪問權限
%A Access rights in human readable form 可讀形式訪問權限(ls -l情況下顯示的樣子)
%b Number of blocks allocated (see %B) 分配的塊數(單位參照%B的數值)
%B The size in bytes of each block reported by %b
每個塊的大小(這個值是指硬盤上存儲單元塊的大小,與格式化的block塊大小不同)
%d Device number in decimal 設備號(10進制)
%D Device number in hex 設備號(十六進制)
%f Raw mode in hex raw模式(十六進制,可以百度一下raw的意思)
%F File type 文件類型
%g Group ID of owner 文件所有者的組ID
%G Group name of owner 文件所有者的組名
%h Number of hard links 硬鏈接的數量(文件本身算1個)
%i Inode number inode號
%n File name 文件名
%N Quoted file name with dereference if symbolic link
取消軟連接的文件名引用,變成普通字符串
%o I/O block size 系統格式化block的大小
%s Total size, in bytes 文件大小(單位byte)
%t Major device type in hex 主要設備類型(十六進制)
%T Minor device type in hex 次要設備類型(十六進制)
%u User ID of owner 所有者的用戶ID
%U User name of owner 所有者的用戶名
%x Time of last access 最後訪問時間
%X Time of last access as seconds since Epoch 最後一次訪問時間(大紀元秒)
%y Time of last modification 最後修改時間(內容改變)
%Y Time of last modification as seconds since Epoch 最後修改時間(內容改變)
%z Time of last change 最後改變時間(文件屬性,權限所有者等,格式大紀元秒)
%Z Time of last change as seconds since Epoch
最後改變時間(文件屬性,權限所有者等,格式大紀元秒)
stat -c "%a %A %b %B %d %D %f %F %g %G %h %i %n %N %o %s %t %T %u %U %x %X %y %Y %z %Z" file
可選的分區信息輸出格式
%a Free blocks available to non-superuser 普通用戶可用的block數量
%b Total data blocks in file system 分區的總數據塊數量
%c Total file nodes in file system 文件系統的inode總數
%d Free file nodes in file system 空閒inode數量
%f Free blocks in file system 可用的block數量
%C Security context in SELinux selinux 安全上下文
%i File System ID in hex 分區ID(十六進制)
%l Maximum length of filenames 分區文件名最大長度
%n File name 文件名
%s Block size (for faster transfers) 塊大小(都是系統block的大小)
%S Fundamental block size (for block counts) 基本塊大小(都是系統block的大小)
%t Type in hex 文件系統類型(格式化的類型,十六進制)
%T Type in human readable form 文件系統類型(格式化的類型,可讀形式)
stat -f -c "%a %b %c %d %f %C %i %l %n %s %S %t %T" file
cp:複製文件和目錄,可以同時複製多個文件到一個目錄中
-a, --archive 等於-dR --preserve=all 歸檔複製,常用於備份
--attributes-only 僅複製屬性而不復制數據 --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 等
--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 只在源文件比目標文件新,或目標文件不存在時才進行復制
-v, --verbose 顯示詳細的進行步驟
-x, --one-file-system 不跨越文件系統進行操作
mv:移動或重命名文件
-b 若需覆蓋文件,則覆蓋前先行備份。
-f force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i 若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u 若目標文件已經存在,且 source 比較新,纔會更新(update)
-t --target-directory=DIRECTORY 指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後
-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-S, --suffix=後綴 自行指定備份文件的後綴
-T, --no-target-directory 將目標目錄視作普通文件
install:複製文件和設置屬性
--backup[=CONTROL] 爲每個已存在的目的地文件進行備份
-b 類似 --backup,但不接受任何參數
-d,--directory 所有參數都作爲目錄處理,而且會創建指定目錄的所有目錄。
-D 創建<目的地>前的所有主目錄,然後將<來源>複製至 <目的地>;在第一種使用格式中有用
-g,--group=組 自行設定所屬組,而不是進程目前的所屬組
-m,--mode=模 自行設定權限模式 (像chmod),而不是rwxr-xr-x
-o,--owner=所有者 自行設定所有者 (只適用於超級用戶)
-p,--preserve-timestamps 以<來源>文件的訪問/修改時間作爲相應的目的地文件的時間屬性
-s,--strip 用strip命令刪除symbol table,只適用於第一及第二種使用格式
-S,--suffix=後綴 自行指定備份文件的<後綴>
文本處理命令
cat:連接並顯示多個文件
-n 顯示時輸出行號
-e 等價於-vE
-E 在每行結束處顯示$
-A --show-all 等價於 -vET
-b --number-noblank 對非空輸出行編號
-s --squeeze-blank 有連續兩行以上的空吧航,就代換爲一行的空白行
-t 等價於-vT
-T --show-tabs 將跳格字符顯示爲 ^I
-v --show--nonprinting 使用 ^ 和 M- 引用,除了LFD和TAB之外
★在文本模式下使用shift+pageup|pagedown進行上下翻頁(Linux有額定的緩存大小,只能緩存一定的 幾屏)
tac:逆序顯示文本
-b, --before 在行前而非行尾添加分隔標誌
-r, --regex 將分隔標誌視作正則表達式來解析
-s, --separator=字符串 使用指定字符串代替換行作爲分隔標誌
more 分屏顯示,只能向下滾動
less 分屏顯示,可以上下滾動
head:查看文件的前NUM行,默認10行
-c --bytes=[-]K 顯示前多少字節數,默認單位爲K,還可加上單位,默認是字節。1(byte) 、1k(1KB)、1m(1MB),可以爲負數,意思爲不打印最後的多少字節
-n --lines=[-] 顯示前多少行,可以爲負數,意思爲不打印最後的多少行
-q --quiet --silent 獲取多個文件的時候不顯示文件名稱頭部
-v 獲取多個文件的內容是顯示文件名稱頭部,也是默認選項
tail:顯示文件最後多少行
-c --bytes=[-]K 打印最後多少字節,默認單位爲K,+NUM表示從多少字節開始顯示文件
-n --lines=[ ] 打印最後多少行,默認10行,+NUM表示從多少行開始顯示
-q --quiet --silent 獲取多個文件的時候不顯示文件名稱頭部
-v 獲取多個文件的內容是顯示文件名稱頭部,也是默認選項
-f 循環讀取
--pid=PID 與-f合用,表示在進程ID,PID死掉之後結束
cut:文本剪切
-d 指定字段分隔符,默認是一個空格
-f 指定要顯示的字段,表示方法:-f 1,3 1-3
join:合併文本
sort:對顯示的數據進行排序,默認根據ASCII升序
-n:根據數值大小降序
-r:逆序
-t:指定字段分隔符
-k #:指定以哪個字段進行排序
-u:排序後相同的行只顯示一次
-f:忽略字符大小寫
uniq:報告相同行,相同且相鄰 爲重複
-d 只顯示重複的行
-D 顯示所有重複的行
-c 顯示行重複的次數
wc:文本統計,空白鍵 也是字符,顯示的三個數分別是行數、單詞數、字節數
-l 共多少行
-w 共多少單詞
-c 共多少字節
-L 最長的一行共多少個字節
tr:轉換或刪除字符
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的補集替換此字符集,要求字符集爲ASCII。
-d 刪除字符串1中所有輸入字符。
-s 刪除所有重複出現字符序列,只保留第一個;即將重複出現字符串壓縮爲一個字符串。
input-file是轉換文件名。雖然可以使用其他格式輸入,但這種格式最常用。
指定字符串1或字符串2的內容時,只能使用單字符或字符串範圍或列表。
[a-z] a-z內的字符組成的字符串。
[A-Z] A-Z內的字符組成的字符串。
[0-9] 數字串。
\octal 一個三位的八進制數,對應有效的ASCII字符。
[O*n] 表示字符O重複出現指定次數n。因此[O*2]匹配OO的字符串。
tr中特定控制字符的不同表達方式
速記符含義八進制方式
\a Ctrl-G
鈴聲\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行換頁\014
\n Ctrl-J 新行\012
\r Ctrl-M 回車\015
\t Ctrl-I tab鍵\011
\v Ctrl-X \030