我没有shell脚本的经验,所以我无法看到以下情况的问题:
我已经定义了以下形式的别名(file.c位于~/dir):
alias code="cd ~/dir | vim file.c"
Run Code Online (Sandbox Code Playgroud)
输入时,我收到以下警告,并且没有打开正确的文件:
Vim: Warning: Input is not from a terminal
2 files to edit
Run Code Online (Sandbox Code Playgroud)
我认为这个实例中的管道操作符会将两个命令分开,首先更改目录,然后打开文件.
既然你提到你没有shell的经验,我会很冗长.
问题是你使用管道错了.
cmd1 | cmd2
Run Code Online (Sandbox Code Playgroud)
表示将cmd1的输出重定向到cmd2的输入.也许你把它与OR运算符混淆了||,它可以用作:
cmd1 || cmd2
Run Code Online (Sandbox Code Playgroud)
"如果cmd1不成功,请执行cmd2".不过,这对你的情况没有帮助.以前的答案都适合你:
alias code="cd ~/dir; vim file.c"
Run Code Online (Sandbox Code Playgroud)
使用分号,这只是一个简单的命令分隔符.或者我个人的最爱
alias code="cd ~/dir && vim file.c"
Run Code Online (Sandbox Code Playgroud)
哪个使用AND运算符.
cmd1 && cmd2
Run Code Online (Sandbox Code Playgroud)
表示"执行cmd1.如果成功,请继续执行cmd2.否则,请停止".