Linux 之一 基本命令
??最近在整理舊電腦時,發現了一些剛入行時的學習記錄,以及最早使用新浪博客 http://blog.sina.com.cn/zcshou 寫的一些文章。最近要重拾 Linux,所以把這些 Word 文檔重新排版轉到此博客上,一來復習一下,二來在 CSDN 上作個存檔!
至于新浪博客上的文章就留那里吧!話說新浪博客是不是塊倒閉了?還有一點,如果沒記錯,文章里使用的是 CentOS。
??注意,這些文章里的內容多數可能來自網絡(當初學習時翻看了各種網絡資料)但應該不是原版抄襲(作為一名工科生,不動手實踐怎么能行!)。如果您發現其中內容有侵權,請私信我,我將立刻處理!
Shell 命令補齊(Command-Line Completion)
??命令補齊是指當鍵入的字符足以確定目錄中一個唯一的文件時,只須按 Tab 鍵就可以自動補齊該文件名的剩下部分。例如,當輸入 #hist【Tab】 時系統將會自動幫助用戶完成命令 #history。
基本命令
cd
功 能: 切換當前工作目錄
語 法: cd [目的目錄]
補充說明: cd 指令可讓用戶在不同的目錄間切換,但該用戶必須擁有足夠的權限進入目的目錄。
舉 例:
ls
用 法: ls [選項]... [文件]...
說 明: 執行 ls 指令可列出目錄的內容,包括文件和子目錄的名稱。使用 ls 命令時會有幾種不同的顏色:其中,藍色表示是目錄,綠色表示是可執行文件,紅色表示是壓縮文件,淺藍色表示是鏈接文件,加粗的黑色表示符號鏈接,灰色表示是其它格式文件。
參 數:
- -1 : (數字 1 區別于字母 l )以單列來顯示,每列僅顯示一個文件或目錄名稱。
- -a 或 --all:目錄下所有文件和目錄。包括現行目錄(用 . 表示 )和上層目錄(用 … 表示)
- -A 或 --almost-all :顯示所有文件和目錄,但不顯示當前目錄和上層目錄。
- -c:以更改時間排序,顯示文件和目錄。
- -C:以由上至下,從左到右的直行方式顯示文件和目錄名稱。
- -d 或 --directory:顯示目錄名稱而非其內容。
- -D 或 --dired:用 Emacs 的模式產生文件和目錄列表。
- -f:此參數的效果和同時指定 “aU” 參數相同,并關閉 “lst” 參數的效果。
- -F或--classify:在執行文件,目錄,Socket,符號連接,管道名稱后面,各自加上"*","/","=","@","|"號。
- -g:次參數將忽略不予處理。
- -G 或 --no-group:不顯示群組名稱。
- -h 或 --human-readable:用 “K”,“M”,“G” 來顯示文件和目錄的大小。
- -H 或 --si:此參數的效果和指定 “-h” 參數類似,但計算單位是 1000Bytes 而非 1024Bytes。
- -i 或 --inode:顯示文件和目錄的 inode 編號。
- -I<范本樣式>或--ignore=<范本樣式>:不顯示符合范本樣式的文件或目錄名稱。
- -k 或 --kilobytes:此參數的效果和指定 “block-size=1024” 參數相同。
- -l:使用詳細格式列表。
- -L 或 --dereference:如遇到性質為符號連接的文件或目錄,直接列出該連接所指向的原始文件或目錄。
- -m:用 “,” 號區隔每個文件和目錄的名稱。
- -n 或 --numeric-uid-gid:以用戶識別碼和群組識別碼替代其名稱。
- -N 或 --literal:直接列出文件和目錄名稱,包括控制字符。
- -o:此參數的效果和指定 “-l” 參數類似,但不列出群組名稱或識別碼。
- -p 或 --file-type:此參數的效果和指定"-F"參數類似,但不會在執行文件名稱后面加上"*"號。
- -q 或 --hide-control-chars:用 “?” 號取代控制字符,列出文件和目錄名稱。
- -Q 或 --quote-name:把文件和目錄名稱用 “” 號標示起來。
- -r 或 --reverse:反向排序。
- -R 或 --recursive:遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
- -s 或 --size:顯示文件和目錄的大小,以區塊為單位。
- -S:用文件和目錄的大小排序。
- -t:用文件和目錄的更改時間排序。
- -T<跳格字符> 或 --tabsize=<跳格字數>:設置跳格字符所對應的空白字符數。
- -u:以最后存取時間排序,顯示文件和目錄。
- -U:列出文件和目錄名稱時不予排序。
- -v:文件和目錄的名稱列表以版本進行排序。
- -w<每列字符數> 或 --width=<每列字符數>:設置每列的最大字符數。
- -x:以從左到右,由上至下的橫列方式顯示文件和目錄名稱。
- -X:以文件和目錄的最后一個擴展名排序。
- --block-size=<區塊大小>:指定存放文件的區塊大小。
- --color=<列表格式>:配置文件和目錄的列表格式。
- --full-time:列出完整的日期與時間。
- --help:在線幫助。
- --indicator-style=<標注樣式>:在文件和目錄等名稱后面加上標注,易于辨識該名稱所屬的類型。
- --quoting-syte=<引號樣式>:把文件和目錄名稱以指定的引號樣式標示起來。
- --show-control-chars:在文件和目錄列表時,使用控制字符。
- --sort=<排序方式>:配置文件和目錄列表的排序方式。
- --time=<時間戳記>:用指定的時間戳記取代更改時間。
- --version:顯示版本信息。
實 例:
tree
語 法: tree [-aACdDfFgilnNpqstux][-I <范本樣式>][-P <范本樣式>][目錄...]
補充說明: 執行 tree 指令,它會以樹型列出指定目錄下的所有文件,包括子目錄里的文件。(注意:該命令需要單獨安裝,不是系統默認自帶的命令。Ubuntu 下可以直接使用命令:sudo apt install tree 來安裝,CentOS 可以只用命令:yum install tree 來安裝)
參 數:
- -a:顯示所有文件和目錄。
- -A:使用 ASNI 繪圖字符顯示樹狀圖而非以 ASCII 字符組合。
- -C:在文件和目錄清單加上色彩,便于區分各種類型。
- -d:顯示目錄名稱而非內容。
- -D:列出文件或目錄的更改時間。
- -f:在每個文件或目錄之前,顯示完整的相對路徑名稱。
- -F:在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","=","@","|"號。
- -g:列出文件或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼。
- -i:不以階梯狀列出文件或目錄名稱。
- -I<范本樣式>:不顯示符合范本樣式的文件或目錄名稱。
- -l:如遇到性質為符號連接的目錄,直接列出該連接所指向的原始目錄。
- L x:顯示目錄層級數 x
- -n:不在文件和目錄清單加上色彩。
- -N:直接列出文件和目錄名稱,包括控制字符。
- -p:列出權限標示。
- -P<范本樣式>:只顯示符合范本樣式的文件或目錄名稱。
- -q:用 “?” 號取代控制字符,列出文件和目錄名稱。
- -s:列出文件或目錄大小。
- -t:用文件和目錄的更改時間排序。
- -u:列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼。
- -x:將范圍局限在現行的文件系統中,若指定目錄下的某些子目錄,其存放于另一個文件系統上,則將該子目錄予以排除在尋找范圍外。
實 例:
grep
??grep 命令可以在指定文件中搜索特定的內容,并將含有這些內容的行標準輸出。grep 全稱是 Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
格 式: grep [options] pattern file1 file2
- [options] 主要參數:
- c:只輸出匹配行的計數。
- I:不區分大小寫(只適用于單字符)。
- h:查詢多文件時不顯示文件名。
- l:查詢多文件時只輸出包含匹配字符的文件名。
- n:顯示匹配行及行號。
- s:不顯示不存在或無匹配文本的錯誤信息。
- v:顯示不包含匹配文本的所有行。
- pattern 可以是字符串,也可以是正則表達式,正則表達式必須加單引號括起來。pattern 正則表達式主要參數:
- \:忽略正則表達式中特殊字符的原有含義。
- ^:匹配正則表達式的開始行。
- $:匹配正則表達式的結束行。
- \<:從匹配正則表達式的行開始。
- \>:到匹配正則表達式的行結束。
- [ ]:單個字符,如[A]即 A 符合要求 。
- [ - ]:范圍,如[A-Z],即 A、B、C 一直到 Z 都符合要求 。
- 。:所有的單個字符。
- *:所有字符,長度可以為 0。
簡單示例:
實 例:
上圖中,命令 grep -n 'K*R' Makefile 表示在 Makefile 中查找符合正則表達式 K*R 的內容
??正則表達式是 Linux/Unix 系統中非常重要的概念。正則表達式(也稱為 regex 或 regexp )是一個可以描述一類字符串的模式(Pattern)。如果一個字符串可以用某個正則表達式來描述,我們就說這個字符和該正則表達式匹配(Match)。這和 DOS 中用戶可以使用通配符 * 代表任意字符類似。
??在 Linux 系統上,正則表達式通常被用來查找文本的模式,以及對文本執行 “搜索-替換” 操作和其它功能。
grep 家族還包括 fgrep 和 egrep。fgrep 是 fix grep,允許查找字符串而不是一個模式;egrep 是擴展 grep,支持基本及擴展的正則表達式,但不支持 \q 模式范圍的應用及與之相對應的一些更加規范的模式。
find
find 命令的作用是在目錄中搜索文件,它的使用權限是所有用戶。
格 式: find [path] [options] [expression]
參 數:
- path:指定目錄路徑,系統從這里開始沿著目錄樹向下查找文件。它是一個路徑列表,相互用空格分離,如果不寫 path,那么默認為當前目錄。
- options 指定參數:
- depth:使用深度級別的查找過程方式,在某層指定目錄中優先查找文件內容。
- maxdepth levels:表示至多查找到開始目錄的第 level 層子目錄。level 是一個非負數,如果 level 是 0 的話表示僅在當前目錄中查找。
- mindepth levels:表示至少查找到開始目錄的第 level 層子目錄。
- mount:不在其它文件系統(如 Msdos、Vfat 等)的目錄和文件中查找。
- version:打印版本。
- expression 是匹配表達式,是 find 命令接受的表達式,find 命令的所有操作都是針對表達式的。它的參數非常多,這里只介紹一些常用的參數。
- name:支持統配符 * 和 ? 。
- atime n:搜索在過去 n 天讀取過的文件。
- ctime n:搜索在過去 n 天修改過的文件。
- mtime <24小時數>:查找在指定時間曾被更改過的文件或目錄,單位以 24 小時計算。
- group grpoupname:搜索所有組為 grpoupname 的文件。
- user 用戶名:搜索所有文件屬主為用戶名(ID 或名稱)的文件。
- size n:搜索文件大小是 n 個 block 的文件。
- print:輸出搜索結果,并且打印。
實 例:
上圖中表示,從當前目錄開始,向下查找文件名為 Makefile 的文件。
find 命令查找文件的幾種方法
例如,我們想要查找一個文件名是 lilo.conf 的文件,可以使用如下命令:find / -name lilo.conf,find 命令后的 “/” 表示搜索整個硬盤。
根據文件名查找文件會遇到一個實際問題,就是要花費相當長的一段時間,特別是大型 Linux 文件系統和大容量硬盤文件放在很深的子目錄中時。如果我們知道了這個文件存放在某個目錄中,那么只要在這個目錄中往下尋找就能節省很多時間。比如 smb.conf 文件,從它的文件后綴 “.conf” 可以判斷這是一個配置文件,那么它應該在 /etc 目錄內,此時可以使用下面命令 find /etc -name smb.conf,這樣,使用“快速查找文件”方式可以縮短時間。
有時我們知道只某個文件包含有 abvd 這 4 個字,那么要查找系統中所有包含有這 4 個字符的文件可以輸入下面命令find / -name ‘*abvd*’,注意:表達式必須用單引號括起來。輸入這個命令以后,Linux 系統會將在 / 目錄中查找所有的包含有 abvd 這 4 個字符的文件(其中*是通配符),比如 abvdrmyz 等符合條件的文件都能顯示出來。
find 命令可以使用混合查找的方法,例如,我們想在 /etc 目錄中查找大于 500000 字節,并且在 24 小時內修改的某個文件,則可以使用 -and (與)把兩個查找參數鏈接起來組合成一個混合的查找方式。find /etc -size +500000c -and -mtime +1。
cat
使用權限: 所有使用者
使用方式: cat [-AbeEnstTuv] [--help] [--version] fileName
說 明: 把文件串連接后傳到基本輸出到屏幕上或加上 > fileName 到一個文件中
參 數:
- -n 或 --number:由 1 開始對所有輸出的行數編號
- -b 或 --number-nonblank:和 -n 相似,只不過對于空白行不編號
- -s 或 --squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行
- -v 或 --show-nonprinting:
范 例:
more
用 法: more [options] file...
參 數:
- -d: display help instead of ring bell
- -f: count logical, rather than screen lines
- -l: suppress pause after form feed
- -p: suppress scroll, clean screen and disblay text
- -c: suppress scroll, display text and clean line ends
- -u: suppress underlining
- -s: squeeze multiple blank lines into one
- -NUM: 指定每頁的行數為num
- +NUM: display file beginning from line number NUM
- +/STRING: display file beginning from search string match
- -V: output version information and exit
man
??man 命令用來提供在線幫助,使用權限是所有用戶。在 Linux 系統中存儲著一部聯機使用的手冊,以供用戶在終端上查找。使用 man 命令可以調閱其中的幫助信息,非常方便和實用。
格 式: man [-acdfhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [-P pager] [-S section_list] [section] name ...
參 數:
- -C config_file: 指定設定文件 man.conf,缺省值是/etc/man.conf。
- -M path: 指定了聯機手冊的搜尋路徑, 如果沒有指定則使用環境變數 MANPATH 的設定;如果沒有使用 MANPATH, 則會使用/usr/lib/man.conf 內的設定;如果 MANPATH 是空字串,則表示使用缺省值。
- -P pager: 指定使用何種 pager.man 會優先使用此選項設定,然后是依環境變數 MANPAGER 設定,然后是環境變數 PAGER;man 缺省使用/usr/bin/less -is。
- -S section_list man: 所搜尋的章節列表(以冒號分隔),此選項會覆蓋環境變數 MANSECT 的設定。
- -a man: 缺省情況是在顯示第一個找到的手冊之后,就會停止搜尋,使用此選項會強迫 man 繼續顯示所有符合 name 的聯機手冊。
- -c: 即使有最新的 cat page,也繼續對聯機手冊重新作排版,本選項在屏幕的行列數改變時或已排版的聯機手冊損壞時特別有意義。
- -d: 不要真的顯示聯機手冊,只顯示除錯訊息。
- -D: 同時顯示聯機手冊與除錯訊息。
- -h: 顯示求助訊息然后結束程式 。
- -K: 對所有的聯機手冊搜尋所指定的字串。請注意,本功能回應速度可能很慢,如果指定
section(區域)會對速度有幫助。 - -m system: 依所指定的 system 名稱而指定另一組的聯機手冊。
??man 是 manual(手冊)的縮寫。在輸入命令有困難時,可以立刻得到這個文檔。例如, 如果使用 ps 命令時遇到困難,可以輸入 man ps 得到幫助信息,此時會顯示出 ps 的手冊頁(manpage)。
注意:
- [q] 退出;
- [Enter] 一行行地下翻;
- [Space] 一頁頁地下翻;
- [/] 后跟一個字符串和[Enter]來查找字符串;
- [n] 發現上一次查找的下一個匹配。
mkdir
mkdir 命令的作用是建立指定名稱的子目錄,與 MS DOS 下的 md 命令類似,它的使用權限是所有用戶。
格 式: mkdir [options] 目錄名
參 數:
- -m, --mode=模式: 設定權限<模式>,與 chmod 類似。
- -p, --parents: 需要時創建上層目錄;如果目錄早已存在,則不當作錯誤。
- -v, --verbose: 每次創建新目錄都顯示信息。
- --version: 顯示版本信息后離開。
??在進行目錄創建時可以同時設置目錄的權限,此時使用的參數是 -m。假設要創建的目錄名是 “tsk”,讓所有用戶都有 rwx(即讀、寫、執行的權限),那么可以使用以下命令 mkdir -m 777 tsk
rmdir
使用方式: rmdir [-p] dirName
說 明: 刪除空的目錄。(只能用來刪除空目錄)
參 數:
- -p: 是當子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。
實 例:
上例中,文件夾 1 中包含文件夾 2,刪除 2 后,1 變成了空,-p 參數表示 1 如果為空,則刪除 1。
rm
格 式: rm [選項] 文件…
功 能: 刪除一個目錄中的一個或多個文件或目錄,如果沒有使用 -r 選項,則 rm 不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。
參 數:
- -f, --force: 刪除目錄或文件時,從不給出提示。(默認不提示)
- -i, --interactive: 進行交互式刪除,刪除時給出提示
- -r, -R, --recursive: 全部目錄和子目錄均遞歸地刪除。
- -v, --verbose: 詳細顯示進行的步驟
- --help: 顯示此幫助信息并退出
- --version: 輸出版本信息并退出
mv
??mv 命令用來為文件或目錄改名,或者將文件由一個目錄移入另一個目錄中,它的使用權限是所有用戶。該命令如同 DOS 命令中的 ren 和 move 的組合。
格 式: mv [options] 源文件或目錄 目標文件或目錄
參 數:
- -i: 交互方式操作。如果 mv 操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答“y”或“n”,這樣可以避免誤覆蓋文件。
- -f: 禁止交互操作。mv 操作要覆蓋某個已有的目標文件時不給任何指示,指定此參數后 -i 參數將不再起作用。
示 例:
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=模式,所有權,時間戳
- -t, --target-directory=DIRECTORY: 指出拷貝的目的目錄。例如:cp -t /home/zcshou 源文件
–preserve[=屬性列表`: 保持指定的屬性(默認:模式,所有權,時間戳),如果可能保持附加屬性:環境、鏈接、xattr 等 - -R, -r, --recursive: 復制目錄及目錄內的所有項目
實 例:
chown
格 式: chown [選項]... [所有者][:[組]] 文件...
功 能: 通過chown改變文件的擁有者和群組。在更改文件的所有者或所屬群組時,可以使用用戶名稱和用戶識別碼設置。普通用戶不能將自己的文件改變成其他的擁有者。其操作權限一般為管理員。
參 數:
- 必要參數:
- -c: 顯示更改的部分的信息
- -f: 忽略錯誤信息
- -h: 修復符號鏈接
- -R: 處理指定目錄以及其子目錄下的所有文件
- -v: 顯示詳細的處理信息
- -deference: 作用于符號鏈接的指向,而不是鏈接文件本身
- 可選參數:
- --reference=<目錄或文件>: 把指定的目錄/文件作為參考,把操作的文件/目錄設置成參考文件/目錄相同擁有者和群組
- --from=<當前用戶:當前群組>: 只有當前用戶和群組跟指定的用戶和群組相同時才進行改變
- --help: 顯示幫助信息
- --version: 顯示版本信息
實 例:
改變指定目錄以及其子目錄下的所有文件的擁有者和群組
- 命令:chown -R -v root:mail test6
- 輸出:
chmod
格 式: chmod [-cfvR] [–help] [–version] mode file
功 能: 用于改變文件或目錄的訪問權限,用它控制文件或目錄的訪問權限。
參 數:
-
必要參數:
- -c: 當發生改變時,報告處理信息
- -f: 錯誤信息不輸出
- -R: 處理指定目錄以及其子目錄下的所有文件
- -v: 運行時顯示詳細處理信息
-
可選參數:
- --reference=<目錄或者文件>: 設置成具有指定目錄或者文件具有相同的權限
- --version: 顯示版本信息
- <權限范圍>+<權限設置>: 使權限范圍內的目錄或者文件具有指定的權限
- <權限范圍>-<權限設置>: 刪除權限范圍的目錄或者文件的指定權限
- <權限范圍>=<權限設置>: 設置權限范圍內的目錄或者文件的權限為指定的值
-
權限范圍:
- u:目錄或者文件的當前的用戶
- g:目錄或者文件的當前的群組
- o:除了目錄或者文件的當前用戶或群組之外的用戶或者群組
- a:所有的用戶及群組
注意:多個選項之間用,分隔開,例如:chomd u+x,g+x,o+x 文件名
-
權限代號:
- r:讀權限,用數字 4 表示
- w:寫權限,用數字 2 表示
- x:執行權限,用數字 1 表示
- -:刪除權限,用數字 0 表示
- s:特殊權限
該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
-
文字設定法:chmod [who] [+ | - |=] [mode] 文件名
-
數字設定法:
??我們必須首先了解用數字表示的屬性的含義:0表示沒有權限,1表示可執行權限,2表示可寫權限,4表示可讀權限,然后將其相加。所以數字屬性的格式應為3個從0到7的八進制數,其順序是(u)(g)(o)。
??例如,如果想讓某個文件的屬主有“讀/寫”二種權限,需要把4(可讀)+2(可寫)=6(讀/寫)。數字設定法的一般形式為:chmod[mode]文件名
??數字與字符對應關系如下:r=4,w=2,x=1。若要 rwx 屬性則 4+2+1=7;若要 rw- 屬性則 4+2=6;若要 r-x 屬性則 4+1=7。
上圖中,2.c 的權限增加 u+x,g+x,o+x
ln
格 式: ln[參數] [源文件或目錄] [目標文件或目錄]
功 能: 該命令用來建立文件或目錄的鏈接(目標文件鏈接到源文件的鏈接)
參 數:
- -b: 刪除,覆蓋以前建立的鏈接
- -d: 允許超級用戶制作目錄的硬鏈接
- -f: 強制執行
- -i: 交互模式,文件存在則提示用戶是否覆蓋
- -n: 把符號鏈接視為一般目錄
- -s: 軟鏈接(符號鏈接)
- -v: 顯示詳細的處理過程
- -S “-S<字尾備份字符串> ”或 “--suffix=<字尾備份字符串>”
- -V “-V<備份方式>”或“--version-control=<備份方式>”
- --help: 顯示幫助信息
- --version: 顯示版本信息
說 明:
- 硬鏈接:
- 軟鏈接:
- 區別:
總結
以上是生活随笔為你收集整理的Linux 之一 基本命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华大 MCU 之三 时钟控制器(CMU)
- 下一篇: Linux 之二 Linux 多线程