自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux命令行工具使用小貼士及技巧(三)

系統(tǒng) Linux 系統(tǒng)運(yùn)維
在這篇教程中,我們將會(huì)通過簡單易懂的實(shí)例來討論 CDPATH 這個(gè)環(huán)境變量。我們也會(huì)討論關(guān)于此變量的一些進(jìn)階細(xì)節(jié)。

Linux命令行工具使用小貼士及技巧

在這個(gè)系列的***部分,我們詳細(xì)地討論了 cd - 命令,在第二部分,我們深入探究了 pushd 和 popd 兩個(gè)命令,以及它們使用的場景。

繼續(xù)對命令行的討論,在這篇教程中,我們將會(huì)通過簡單易懂的實(shí)例來討論 CDPATH 這個(gè)環(huán)境變量。我們也會(huì)討論關(guān)于此變量的一些進(jìn)階細(xì)節(jié)。

在這之前,先聲明一下此教程中的所有實(shí)例都已經(jīng)在 Ubuntu 14.04 和 4.3.11(1) 版本的 Bash 下測試過。

環(huán)境變量 CDPATH

即使你的命令行所有操作都在特定的目錄下 - 例如你的主目錄,然而在你切換目錄時(shí)也不得不提供絕對路徑。比如,考慮我現(xiàn)在的情況,就是在 /home/himanshu/Downloads 目錄下:

  1. $ pwd/home/himanshu/Downloads 

現(xiàn)在要求切換至 /home/himanshu/Desktop 目錄,我一般會(huì)這樣做:

  1. cd /home/himanshu/Desktop/ 

或者

  1. cd ~/Desktop/ 

或者

  1. cd ../Desktop/ 

能不能只是運(yùn)行以下命令就能簡單地實(shí)現(xiàn)呢:

  1. cd Desktop 

是的,這完全有可能。這就是環(huán)境變量 CDPATH 出現(xiàn)的時(shí)候了。你可使用這個(gè)變量來為 cd 命令定義基礎(chǔ)目錄。

如果你嘗試打印它的值,你會(huì)看見這個(gè)環(huán)境變量默認(rèn)是空值的:

  1. $ echo $CDPATH 

現(xiàn)在 ,考慮到上面提到的場景,我們使用這個(gè)環(huán)境變量,將 /home/himanshu 作為 cd 命令的基礎(chǔ)目錄來使用。

最簡單的做法這樣:

  1. export CDPATH=/home/himanshu 

現(xiàn)在,我能做到之前所不能做到的事了 - 當(dāng)前工作目錄在 /home/himanshu/Downloads 目錄里時(shí),成功地運(yùn)行了 cd Desktop 命令。

  1. $ pwd 
  2. /home/himanshu/Downloads 
  3. $ cd Desktop/ 
  4. /home/himanshu/Desktop 

這表明了我可以使用 cd 命令來到達(dá) /home/himanshu 下的任意一個(gè)目錄,而不需要在 cd 命令中顯式地指定 /home/himanshu 或者 ~,又或者是 ../ (或者多個(gè) ../)。

要點(diǎn)

現(xiàn)在你應(yīng)該知道了怎樣利用環(huán)境變量 CDPATH 在 /home/himanshu/Downloads 和 /home/himanshu/Desktop 之間輕松切換。現(xiàn)在,考慮以下這種情況, 在 /home/himanshu/Desktop 目錄里包含一個(gè)名字叫做 Downloads 的子目錄,這是將要切換到的目錄。

但突然你會(huì)意識(shí)到 cd Downloads 會(huì)切換到 /home/himanshu/Downloads。所以,為了確保這不會(huì)發(fā)生,你可以這樣做:

  1. cd ./Downloads 

雖然上述命令本身沒有問題,但你還是需要耗費(fèi)點(diǎn)額外的精力(雖然很小),尤其是每次這種情況發(fā)生時(shí)你都不得不這樣做。所以,有一個(gè)更加優(yōu)雅的解決方案來處理,就是以如下方式來設(shè)定 CDPATH 環(huán)境變量。

  1. export CDPATH=".:/home/himanshu" 

它的意思是告訴 cd 命令先在當(dāng)前的工作目錄查找該目錄,然后再嘗試搜尋 /home/himanshu 目錄。當(dāng)然, cd 命令是否以這樣的方式運(yùn)行,完全取決于你的偏好和要求 - 討論這一點(diǎn)的目的是為了讓你知道這種情況可能會(huì)發(fā)生。

就如你現(xiàn)在所知道的,一旦環(huán)境變量 CDPATH 被設(shè)置,它的值 - 或者它所包含的路徑集合 - 就是系統(tǒng)中 cd 命令搜索目錄的地方 ( 當(dāng)然除了使用絕對路徑的場景 )。所以,完全取決于你來確保該命令行為的一致性。

繼續(xù)說,如果一個(gè) bash 腳本以相對路徑使用 cd 命令,***還是先清除或者重置環(huán)境變量 CDPATH,除非你覺得遇上不可預(yù)測的麻煩也無所謂。還有一個(gè)可選的方法,比起在終端使用 export 命令來設(shè)置 CDPATH,你可以在測試完當(dāng)前的 shell 是交互式還是非交互式之后,再在你的 .bashrc 文件里設(shè)置環(huán)境變量,這樣可以確保你對環(huán)境變量的改動(dòng)只對交互式 shell 生效。

環(huán)境變量中,路徑出現(xiàn)的順序同樣也是很重要。舉個(gè)例子,如果當(dāng)前目錄是在 /home/himanshu 目錄之前列出來,cd 命令就會(huì)先搜索當(dāng)前的工作目錄然后才會(huì)搜索 /home/himanshu 目錄。然而,如果該值為 /home/himanshu:.,搜索就首先從 /home/himanshu 開始,然后到當(dāng)前目錄。不用說,這會(huì)影響 cd 命令的行為,并且不注意路徑的順序可能會(huì)導(dǎo)致一些麻煩。

要牢記在心的是,環(huán)境變量 CDPATH,就像其名字表達(dá)的,只對 cd 命令有作用。意味著在 /home/himanshu/Downloads 目錄里面時(shí),你能運(yùn)行 cd Desktop 命令來切換到 /home/himanshu/Desktop 目錄,但你不能使用 ls。以下是一個(gè)例子:

  1. $ pwd 
  2. /home/himanshu/Downloads 
  3. $ ls Desktop 
  4. ls: cannot access Desktop: No such file or directory 

然而,這還是有簡單的變通處理的。例如,我們可以用以下不怎么費(fèi)力的方式來達(dá)到目的:

  1. $ cd Desktop/;ls 
  2. /home/himanshu/Desktop 
  3. backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~ 

不過,不是每種情況就能變通處理的。

另一個(gè)重點(diǎn)是:就像你可能已經(jīng)觀察到的,每次你使用 CDPATH 環(huán)境變量集來運(yùn)行 cd 命令時(shí),該命令都會(huì)在輸出里顯示你切換到的目錄的完整路徑。不用說,不是所有人都想在每次運(yùn)行 cd 命令時(shí)看到這些信息。

為了確保該輸出被制止,你可以使用以下命令:

  1. alias cd='>/dev/null cd' 

如果 cd 命令運(yùn)行成功,上述命令不會(huì)輸出任何東西,如果失敗,則允許產(chǎn)生錯(cuò)誤信息。

***,假如你遇到設(shè)置 CDPATH 環(huán)境變量后,不能使用 shell 的 tab 自動(dòng)補(bǔ)全功能的問題,可以嘗試安裝并啟用 bash 自動(dòng)補(bǔ)全(bash-completion)。更多請參考 這里。

總結(jié)

CDPATH 環(huán)境變量時(shí)一把雙刃劍,如果沒有掌握完善的知識(shí)和隨意使用,可能會(huì)令你陷入困境,并花費(fèi)你大量寶貴時(shí)間去解決問題。當(dāng)然,這不代表你不應(yīng)該去試一下;只需要了解一下所有的可用選項(xiàng),如果你得出結(jié)論,使用 CDPATH 會(huì)帶來很大的幫助,就繼續(xù)使用它吧。

你已經(jīng)能夠熟練地使用 CDPATH 了嗎?你有更多的貼士要分享?請?jiān)谠u論區(qū)里發(fā)表一下你的想法吧。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2017-04-12 13:29:08

Linux命令行工具

2017-03-27 14:40:01

Linux命令行工具技巧

2017-04-05 14:10:55

Linux命令行工具技巧

2021-07-08 08:56:30

Linux命令刪除用戶

2018-03-14 14:27:00

2009-08-11 09:26:06

2009-12-23 14:14:09

Linux高級命令行

2010-08-24 09:10:14

Linux命令行工具

2017-09-05 08:57:02

Linux命令行技巧

2010-07-15 12:45:30

Perl命令行

2017-03-13 08:50:35

科技新聞早報(bào)

2010-07-20 14:27:46

Perl命令行

2023-03-08 15:38:56

Linux命令dict

2022-06-12 15:32:27

bashLinux

2014-01-24 09:09:32

Linux命令行網(wǎng)速

2010-06-01 19:14:53

SVN命令行

2019-08-27 10:32:01

Linux操作系統(tǒng)Windows

2020-12-10 16:16:08

工具代碼開發(fā)

2020-12-11 06:44:16

命令行工具開發(fā)

2015-05-25 10:40:22

Linux命令行技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)