2017-03-06 78 views
1
cd = 'cd !* ;set prompt="! $host `dirs` % "' 

這個別名是在我常用的紅帽企業Linux服務器上,我無法弄清楚它對我有什麼作用。有任何想法嗎?這個別名在Red Hat Linux中有什麼作用?

+4

對我來說看起來不像Bash。 –

+0

cd命令是否在bash shell中運行? – user2602925

+1

是的,Bash * does *有內建的'cd',但這裏的賦值有空格,並且使用'set'的方式與我在Bash中使用它的方式不同。 –

回答

0

我認爲這是爲了更改目錄並顯示提示中的以前的目錄。 !*是一個bash歷史擴展,意思是沒有第一個單詞的前一個命令。例如。如果先前的命令是cd project,則!*project。請參閱man bash中的歷史擴展部分,更具體地說here

dirs只顯示目錄堆棧,並且是bash內建的,請參閱鏈接瞭解詳細信息。

然而,在標準的bash,你會使用export PS1=...代替set prompt=,所以也許別名筆者意味着它在csh而非bash,例如使用見here。歷史擴展!*具有相同的語義,例如, 爲tcsh

+0

似乎沒有運行任何不同於正常的cd命令,至少據我所知。 – user2602925

+0

我沒有訪問RHEL主機的權限,但在標準bash中,您可以使用'export PS1 = ...'而不是'set prompt ='。也許這就是爲什麼你沒有看到變化。 – dimid

+2

我認爲別名的作者意味着它被用在'csh'而不是'bash'中,例如請參閱[這裏](http://superuser.com/questions/399047/customizing-csh-prompt)。 – dimid

0

在csh混疊中,!*是接收到的命令的輸入,例如,
alias + emacs \!* &和運行+ somefile將使用emacs打開某些文件並將其移動到後臺。
現在你行 - 它改變目錄,無論你給它(*!),並設置提示(你的書寫區之前寫在你的終端對應的線路)的主機名,路徑(如pwd)和%

只是一個快速註釋 - 注意我的別名行中的\ - 您必須在別名中轉義特殊字符並注意this