[英]Using a pipe within a bash alias
我沒有shell腳本編寫經驗,因此無法看到以下情況的問題:
我已經定義了以下形式的別名( file.c
位於~/dir
):
alias code="cd ~/dir | vim file.c"
輸入它時,出現以下警告,並且沒有打開正確的文件:
Vim: Warning: Input is not from a terminal
2 files to edit
我認為在這種情況下,管道運算符將分隔兩個命令,首先更改目錄,然后打開文件。
既然您提到您沒有shell經驗,那么我會很冗長。
問題是您使用的管道錯誤。
cmd1 | cmd2
表示將cmd1的輸出重定向到cmd2的輸入。 也許您將它與OR運算符||混淆了,該運算符可以用作:
cmd1 || cmd2
“如果cmd1不成功,請執行cmd2”。 但是,這對您沒有幫助。 前面的兩個答案都對您有用:
alias code="cd ~/dir; vim file.c"
使用分號,這只是一個簡單的命令分隔符。 還是我個人的最愛
alias code="cd ~/dir && vim file.c"
其中使用AND運算符。
cmd1 && cmd2
表示“執行cmd1。如果成功,則繼續執行cmd2。否則,停止”。
更好的別名是:
alias code="cd ~/dir && vim file.c && cd -"
如果cd
失敗,這將確保您不會在當前目錄中打開文件,並返回到原來的目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.