Linux / Mac 下 基本的 bash shell 命令詳解
前言
本篇主要介紹了cd 、ls 這兩個(gè)基本命令,本博客同時(shí)發(fā)表在CSDN和簡(jiǎn)書。
遍歷目錄 cd
cd destination
cd命令可以帶單個(gè)參數(shù)destination,用以制定你想切換到的目錄名。如果用戶沒有指定目標(biāo)路徑,將會(huì)切換到當(dāng)前用戶主目錄。
目錄路徑參數(shù)可以使用兩種方式表達(dá):
絕對(duì)文件路徑
用戶可在虛擬目錄中采用==絕對(duì)文件路徑==來引用目錄名。絕對(duì)文件路徑定義了在虛擬目錄結(jié)構(gòu)中該目錄的確切位置,以虛擬目錄的根目錄開始,相當(dāng)于目錄的全名。
即以“/”開頭的目錄的絕對(duì)路徑,當(dāng)當(dāng)前所在的目錄已經(jīng)在工作目錄中時(shí),可以使用cd /回到根目錄。-
相對(duì)文件路徑
==相對(duì)文件路徑==允許用戶指定一個(gè)基于當(dāng)前位置的目錄文件路徑,而無需再?gòu)母夸涢_始。相對(duì)文件路徑不以代表根目錄的正斜線(/)開頭,而以目錄名(如果用戶準(zhǔn)備切換到當(dāng)前工作目錄下的一個(gè)目錄)或是一個(gè)表示基于用戶當(dāng)前目錄的相對(duì)位置的特殊字符開始。有兩個(gè)特殊字符:- 單點(diǎn)符(.),表示當(dāng)前目錄;
- 雙點(diǎn)符(..),表示當(dāng)前目錄的父級(jí)目錄。
例如:
cd ../Desktop cd ./Doc cd ../../etc
列表命令 ls
基本列表功能
命令區(qū)分大小寫。
ls命令的基本格式會(huì)顯示當(dāng)前目錄下的文件和目錄。
ls命令輸出的列表是按字母排序的(按列排序而不是按行排序)。如果用戶用的是支持彩色的終端模擬器(==Mac 電腦終端默認(rèn)是沒有色彩的,可以百度添加配置文件==),ls命令還可以用不同的顏色來區(qū)分不同類型的文件。LS_COLORS環(huán)境變量控制著這個(gè)功能。
-
ls -F:該命令會(huì)在結(jié)果中的目錄名后面加正斜線(/),以方便用戶在輸出中分辨它們。類似的,他會(huì)在可執(zhí)行文件后面加個(gè)星號(hào),以便找出可在系統(tǒng)上運(yùn)行的文件。 -
ls -a:該命令可以將隱藏文件和目錄一起顯示出來。 -
ls -R:該命令可以列出當(dāng)前目錄下的包含的目錄中的文件。如果有很多個(gè)目錄,這個(gè)輸出會(huì)很長(zhǎng)。
修改輸出信息
ls命令并沒有輸出每個(gè)文件額太多相關(guān)信息。需要顯示更多的信息,需要使用改命令:
-
ls -l:該參數(shù)會(huì)產(chǎn)生長(zhǎng)列表格式的輸出,包含了目錄中每個(gè)文件的更多的相關(guān)信息:
這種超列表格式的輸出在每一行中列出了單個(gè)文件或目錄。除了文件名,輸出中還有其他有用信息。輸出的第一行顯示了目錄中包含的塊的總數(shù)。之后每一行都包含了關(guān)于文件(或目錄)的下述信息:- 文件類型,比如目錄(d)、文件(-)、字符型文件(c)或者塊文件(b);
- 文件的權(quán)限;
- 文件的硬鏈接總數(shù);
- 文件屬主的用戶名;
- 文件屬主的組名;
- 文件的大?。ㄒ炎止?jié)為單位);
- 文件的上次修改時(shí)間;
- 文件名或目錄名。
完整的參數(shù)列表
在進(jìn)行文件管理時(shí),ls命令的很多參數(shù)可能會(huì)派上用場(chǎng)。針對(duì)ls運(yùn)行一下man命令,你就能看到可用來修改ls命令輸出的參數(shù)就有好幾頁。man ls
ls命令采用兩種格式的命令行參數(shù):
- 單字母參數(shù);
- 全字母參數(shù);
單字母參數(shù)通常是由英文破折號(hào)開始,全字參數(shù)則更易于看懂,通常以雙英文破折號(hào)開始。許多參數(shù)都有單字母和全字母兩種版本,而有些則只有一種。
==Mac 終端下,測(cè)試了幾個(gè)命令并不用輸入“--”,直接輸入“-”加后面的命令即可,還有就是下表的一些命令,在Mac 并沒有響應(yīng)。目前不知道是測(cè)試輸入錯(cuò)誤還是本身并不支持。==
| 單字母 | 全字 | 描述 |
|---|---|---|
| -a | --all | 輸出包括以“.”打頭的隱藏文件 |
| -A | --almost-all | 不要輸出“.”和“..”文件 |
| --author | 輸出每個(gè)文件的作者 | |
| -b | --escape | 輸出不可打印的字符的八進(jìn)制值 |
| --block-size=size | 按照size字節(jié)的大小來計(jì)算大小塊(快數(shù)) | |
| -B | --ignore-backups | 不要列出名稱中包含波浪線(~)的條目(波浪線用來表示備份的副本) |
| -c | 按最后一次修改時(shí)間排序 | |
| -C | 按列輸出條目 | |
| --color=when | 何時(shí)使用彩色(always,never或者auto) | |
| -d | --directory | 列出目錄條目而非內(nèi)容,并且不用跟蹤符號(hào)鏈接 |
| -F | --classify | 給條目追加文件類型標(biāo)識(shí)符 |
| --file-type | 只在部分文件類型(非可執(zhí)行文件)后追加文件類型標(biāo)識(shí)符 | |
| --format=word | 將輸出格式化成across(交叉)、commas(逗號(hào))。horizontal(水平)、long(長(zhǎng))、single-column(單列)、verbose(詳細(xì))或vertical(垂直) | |
| -g | 輸出除文件屬主之外所有信息 | |
| --group-directories-first | 在文件之前列出所有目錄 | |
| -G | --no-group | 在長(zhǎng)列表輸出格式下,不顯示組名 |
| -h | --human-readable | 打印大小,K表示千字節(jié) |
| --si | 和-h相同,但進(jìn)率為1000,而非1024 | |
| -i | --inode | 顯示每個(gè)文件的所有值(inode) |
| -l | 按長(zhǎng)列表輸出格式顯示 | |
| -L | --dereference | 對(duì)于鏈接文件,顯示原文件信息 |
| -n | --numeric-uid-gid | 顯示數(shù)字類型的userid和groupid以替代名字 |
| -o | 在長(zhǎng)列表格式下不顯示組名 | |
| -r | --reverse | 在輸出文件和目錄時(shí),反轉(zhuǎn)排序的順序 |
| -R | --recursive | 遞歸的列出子目錄的內(nèi)容 |
| -s | --size | 輸出每個(gè)文件的塊大小 |
| -S | --sort=size | 按文件大小排序輸出 |
| -t | --sort=time | 按文件修改時(shí)間排序輸出 |
| -u | 輸出文件的最后訪問時(shí)間而非最后修改時(shí)間 | |
| -U | --sort=none | 不要將輸出排序 |
| -v | --sort=version | 將文件版本排序輸出 |
| -x | 按行而非按列輸出條目 | |
| -X | --sort=extension | 按文件擴(kuò)展名排序輸出 |
如果需要,也可以一次使用多個(gè)參數(shù)。多個(gè)雙破折線參數(shù)必須分開輸入,而多個(gè)單波折線可以組合成一個(gè)字符串跟在一個(gè)單破折線后面。例如:ls -alis 。單命令無關(guān)順序。
過濾輸出列表
由前面的例子可以知道,默認(rèn)情況下,ls命令會(huì)輸出目錄下的所有文件。
ls命令還支持在命令行下定義過濾器。它會(huì)用過濾器決定應(yīng)該在輸出中顯示哪些文件和目錄。
這個(gè)過濾器就是個(gè)進(jìn)行簡(jiǎn)單文本匹配的的字符串,可以在要用的命令行參數(shù)后添加這個(gè)過濾器:
ls -l 匹配字符串
當(dāng)用戶指定特定的文件名稱作為過濾器時(shí),ls命令只會(huì)顯示那個(gè)文件的信息。
有時(shí)候當(dāng)不知道要找的文件的確切名稱。ls命令可以識(shí)別標(biāo)準(zhǔn)通配符,并在過濾器中用它們來進(jìn)行模式匹配:
- 問好代表一個(gè)字符。
- 星號(hào)代表零個(gè)或多個(gè)字符。
問號(hào)可用在過濾器字符串中替代任意位置的單個(gè)字符。
例如:
ls -l mypro?
ls -l mypro*