我没有shell脚本的经验,所以我无法看到以下情况的问题:
我已定义以下表单的别名(file.c
位于~/dir
):
alias code="cd ~/dir | vim file.c"
输入时,我收到以下警告,并且没有打开正确的文件:
Vim: Warning: Input is not from a terminal
2 files to edit
我认为此实例中的管道操作符会将两个命令分开,首先更改目录,然后打开文件。
答案 0 :(得分:5)
既然你提到你没有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。否则,请停止”。
答案 1 :(得分:3)
答案 2 :(得分:3)
更好的别名是:
alias code="cd ~/dir && vim file.c && cd -"
如果cd
失败,这将确保您不会在当前目录中打开文件并返回到您所在的旧目录。