Linux
我如何在我的 cshrc 中 cd 然後 ls
我希望能夠 cd 進入路徑並
ls
自動擁有它。我試過做一個功能,比如cs() { cd "@a" ; ls}
但這會導致錯誤提示“放置錯誤()”,所以我認為我不能執行功能。我也試過
alias cs ' cd !:1 ; ls '
我可以用這個來獲取我的 .cshrc 但是當我呼叫它時,它什麼也沒做,我仍然在同一個文件夾中。
你非常非常親近。Unix 喜歡反斜杠;Unix 早餐吃反斜杠。你需要
alias cs 'cd \!:1; ls'
如果您查看 csh(及其後代)的文件,您會看到它
!
指的是歷史機制,它可以讓您參考以前的命令。最簡單的例子是!!
,它呼叫並重複最近的命令。!:1
表示引用命令中的單詞 #1(其中命令本身是單詞 #0;因此,例如 ingrep needle *.txt
、!:0
isgrep
和!:1
isneedle
)。Bash 和 Bourne shell 的其他後代有一個非常相似的功能。
C shell 別名有點奇怪。當您執行別名時,您輸入的命令 (例如,
cs vacation_photographs
)被視為“上一個命令”。因此,當別名執行時,!:1
將替換為vacation_photographs
.問題是當別名執行時會發生這種情況*。* 但是當別名被定義時,歷史擴展也會發生。所以,例如,如果你
.cshrc
說set prompt = '% ' alias cs 'cd !:1; ls'
then
!:1
被評估為prompt
,別名被定義為cd prompt; ls
。為了能夠引用您鍵入的命令 (vacation_photographs
),您需要將別名cd !:1; ls
定義!:1
為當它被定義時。如果你一直在做
alias cs 'cd !:1; ls'
它什麼也沒做*(*甚至沒有給你錯誤資訊),我無法解釋。