Linux命令行工具使用小貼士及技巧(一)
相關(guān)內(nèi)容
如果你剛開(kāi)始在 Linux 系統(tǒng)中使用命令行工具,那么你應(yīng)該知道它是 Linux 操作系統(tǒng)中功能***大和有用的工具之一。學(xué)習(xí)的難易程度跟你想研究的深度有關(guān)。但是,無(wú)論你的技術(shù)能力水平怎么樣,這篇文章中的一些小貼士和技巧都會(huì)對(duì)你有所幫助。
在本系列的文章中,我們將會(huì)討論一些非常有用的命令行工具使用小技巧,希望你的命令行使用體驗(yàn)更加愉快。
但是在開(kāi)始下一步之前,我得強(qiáng)調(diào)一點(diǎn),這篇文章中的測(cè)試實(shí)例都是在 Ubuntu 14.04LTS 系統(tǒng)下測(cè)試通過(guò)的。我們使用命令行 Shell 版本是 bash 4.3.11 。
Linux 命令行工具使用的一些小技巧
我們假設(shè)你已經(jīng)掌握了一些 Linux 命令行的基礎(chǔ)知識(shí),比如什么是 root 賬號(hào)及 home 目錄,什么是環(huán)境變量,如何查看目錄內(nèi)容等等。說(shuō)明這些小技巧的同時(shí)也會(huì)介紹涉及到的概念,如果有的話。
輕松切換目錄 —— 快捷方式
假設(shè)你正在命令行下做一些操作,并且你需要經(jīng)常在兩個(gè)目錄間來(lái)回切換。而且這兩個(gè)目錄在完全不同的兩個(gè)路徑下,比如說(shuō),分別在 /home/ 和 /usr/ 下。你會(huì)怎么做呢?
其中,最簡(jiǎn)單直接的方式就是輸入這些目錄的全路徑。雖然這種方式本身沒(méi)什么問(wèn)題,但是卻很浪費(fèi)時(shí)間。另外一種方式就是打開(kāi)兩個(gè)終端窗口分別進(jìn)行操作。但是這兩種方式使用起來(lái)既不方便,也顯得沒(méi)啥技術(shù)含量。
你應(yīng)該感到慶幸的是,還有另外一種更為簡(jiǎn)捷的方法來(lái)解決這個(gè)問(wèn)題。你需要做的就是先手動(dòng)切換到這兩個(gè)目錄(通過(guò) cd 命令分別加上各自的路徑),之后你就可以使用 cd - 命令在兩個(gè)目錄之間來(lái)回快速切換了。
例如:
我現(xiàn)在在下面的目錄:
- $ pwd
- /home/himanshu/Downloads
然后,我切換到 /usr/ 路徑下的其它目錄:
- cd /usr/lib/
現(xiàn)在,我可以很方便的使用下面的命令來(lái)向前、向后快速地切換到兩個(gè)目錄:
- cd -
下面是 cd - 命令的操作截圖:
The Linux cd command
有一點(diǎn)我得跟大家強(qiáng)調(diào)下,如果你在操作的過(guò)程中使用 cd 加路徑的方式切換到第三個(gè)目錄下,那么 cd - 命令將應(yīng)用于當(dāng)前目錄及第三個(gè)目錄之間進(jìn)行切換。
輕松切換目錄 —— 相關(guān)細(xì)節(jié)
對(duì)于那些有強(qiáng)烈好奇心的用戶(hù),他們想搞懂 cd - 的工作原理,解釋如下:如大家所知道的那樣, cd 命令需要加上一個(gè)路徑作為它的參數(shù)。現(xiàn)在,當(dāng) - 符號(hào)作為參數(shù)傳輸給 cd 命令時(shí),它將被 OLDPWD 環(huán)境變量的值所替代。
The cd command explained
現(xiàn)在應(yīng)該明白了吧, OLDPWD 環(huán)境變量存儲(chǔ)的是前一個(gè)操作目錄的路徑。這個(gè)解釋在 cd 命令的 man 幫助文檔中有說(shuō)明,但是,很遺憾的是你的系統(tǒng)中可能沒(méi)有預(yù)先安裝 man 命令幫助工具(至少在 Ubuntu 系統(tǒng)下沒(méi)有安裝)。
但是,安裝這個(gè) man 幫助工具也很簡(jiǎn)單,你只需要執(zhí)行下的安裝命令即可:
- sudo apt-get install manpages-posix
然后做如下操作:
- man cd
打開(kāi) man 幫助文檔主頁(yè)后,你將會(huì)看到下面很明確的解釋?zhuān)?/p>
- —— 當(dāng) - 符號(hào)被用作 cd 命令的參數(shù)值時(shí),將等同于下面的操作命令:
- cd "$OLDPWD" && pwd
毫無(wú)疑問(wèn), cd 命令設(shè)置了 OLDPWD 環(huán)境變量值。因此每一次你切換操作目錄時(shí),上一個(gè)目錄的路徑就會(huì)被保存到這個(gè)變量里。這還讓我們看到很重要的一點(diǎn)就是:任何時(shí)候啟動(dòng)一個(gè)新的 shell 實(shí)例(包括手動(dòng)執(zhí)行或是使用 shell 腳本),都不存在 ‘上一個(gè)工作目錄’。
Hyphen and the cd command
這也很符合邏輯,因?yàn)?cd 命令設(shè)置了 OLDPWD 環(huán)境變量值。因此,除非你至少執(zhí)行了一次 cd 命令,否則 OLDPWD 環(huán)境變量不會(huì)包含任何值。
繼續(xù),盡管這有些難以理解, cd - 和 cd $OLDWPD 命令的執(zhí)行結(jié)果并非在所有環(huán)境下都相同。比如說(shuō),你重新打開(kāi)一個(gè)新的 shell 窗口時(shí)。
cd command example
從上面的截圖可以清楚的看出,當(dāng)執(zhí)行 cd - 命令提示未設(shè)置 OLDPWD 值時(shí), cd $OLDPWD 命令沒(méi)有報(bào)任何錯(cuò);實(shí)際上,它把當(dāng)前的工作目錄改變到用戶(hù)的 home 目錄里。
那是因?yàn)?OLDPWD 變量目前還沒(méi)有被設(shè)置, $OLDPWD 僅僅是一個(gè)空字符串。因此, cd $OLDPWD 命令跟 cd 命令的執(zhí)行結(jié)果是一致的,默認(rèn)情況下,會(huì)把用戶(hù)當(dāng)前的工作目錄切換到用戶(hù)的 home 目錄里。
***,我還遇到過(guò)這樣的要求,需要讓 cd - 命令執(zhí)行的結(jié)果不顯示出來(lái)。我的意思是,有這樣的情況(比如說(shuō),在寫(xiě) shell 腳本的時(shí)候),你想讓 cd - 命令的執(zhí)行結(jié)果不要把目錄信息顯示出來(lái)。那種情況下,你就可以使用下面的命令方式了:
- cd - &>/dev/null
上面的命令把文件描述符 2(標(biāo)準(zhǔn)輸入)和 1(標(biāo)準(zhǔn)輸出)的結(jié)果重定向到 /dev/null 目錄。這意味著,這個(gè)命令產(chǎn)生的所有的錯(cuò)誤不會(huì)顯示出來(lái)。但是,你也可以使用通用的 $? 方式來(lái)檢查這個(gè)命令的執(zhí)行是否異常。如果這個(gè)命令執(zhí)行報(bào)錯(cuò), echo $? 將會(huì)返回 1,否則返回 0。
或者說(shuō),如果你覺(jué)得 cd - 命令出錯(cuò)時(shí)輸出信息沒(méi)有關(guān)系,你也可以使用下面的命令來(lái)代替:
- cd - > /dev/null
這個(gè)命令僅用于將文件描述符 1 (標(biāo)準(zhǔn)輸出)重定向到 /dev/null 。
總結(jié)
遺憾的是,這篇文章僅包含了一個(gè)跟命令行相關(guān)的小技巧,但是,我們已經(jīng)地對(duì) cd - 命令的使用進(jìn)行了深入地探討。建議你在自己的 Linux 系統(tǒng)的命令行終端中測(cè)試本文中的實(shí)例。此外,也強(qiáng)烈建議你查看 man 幫助文檔,然后對(duì) cd 命令進(jìn)行全面測(cè)試。
如果你對(duì)這篇文章有什么疑問(wèn),請(qǐng)?jiān)谙旅娴脑u(píng)論區(qū)跟大家交流。同時(shí),敬請(qǐng)關(guān)注下一篇文章,我們將以同樣的方式探討更多有用的命令行使用技巧。