2017-06-13 111 views
0

我在Linux中使用Bourne shell,我試圖在我的.profile中創建一個快捷方式,以便在子目錄之間快速跳轉。Linux更改目錄快捷方式

我想創建一個快捷方式「cds」從第一個目錄跳到下面的第二個目錄。這些只是他例子的示例目錄。

/網頁/網站/ DEV1/CSS
/網頁/網站/ TEST1/CSS

用法:CDS DEV1 test1的

cds() { 
    echo `pwd` | sed -e "s/$1/$2/g" 
    cd `pwd` | sed -e "s/$1/$2/g" 
    pwd 
} 

回聲作品,但裁線沒有。你能告訴我爲什麼它不起作用,以及如何使它起作用?謝謝你的幫助。

+0

堆棧溢出是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。如果您覺得它在其他地方的話題,然後[請求遷移](http://meta.stackoverflow.com/q/254851) – jww

回答

1

在你的功能,當你做

echo `pwd` | sed -e "s/$1/$2/g" 

輸出從echo被管道輸送到sed和更改。 sed會將其輸出打印到標準輸出。

然而,cd不寫入任何輸出,所以你cd荷蘭國際集團當前目錄(pwd),然後通過管道將(空)輸出到sed的替換目錄。相反,您可以撥打cd,輸入pwd的參數輸出爲sed

這是你想要的,而不是代碼:

cds() {   
    cd $(pwd | sed -e "s/$1/$2/g") 
    pwd 
} 

首先,這種評估代碼$()內,即pwd | sed -e "s/$1/$2/g"pwd將當前路徑打印到stdout,而sed將替換由參數給出的部分路徑。所以$(pwd | sed -e "s/$1/$2/g"評估到新的目錄。然後,cd轉到該目錄。

+0

謝謝你的教訓,以及答案。它的工作原理,我現在知道爲什麼。 –