Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash别名中使用管道_Bash_Pipe_Alias - Fatal编程技术网

在bash别名中使用管道

在bash别名中使用管道,bash,pipe,alias,Bash,Pipe,Alias,我没有编写shell脚本的经验,因此无法看到以下情况的问题: 我定义了以下形式的别名(file.c位于~/dir): 输入时,我收到以下警告,并且没有打开正确的文件: Vim: Warning: Input is not from a terminal 2 files to edit 我认为本例中的管道操作符会将这两个命令分开,首先更改目录,然后打开文件。您不需要管道。使用分号作为命令分隔符 alias code="cd ~/dir; vim file.c" 您还可以在alias中使用返回上

我没有编写shell脚本的经验,因此无法看到以下情况的问题:

我定义了以下形式的别名(
file.c
位于
~/dir
):

输入时,我收到以下警告,并且没有打开正确的文件:

Vim: Warning: Input is not from a terminal
2 files to edit

我认为本例中的管道操作符会将这两个命令分开,首先更改目录,然后打开文件。

您不需要管道。使用分号作为命令分隔符

alias code="cd ~/dir; vim file.c"

您还可以在alias中使用返回上一个目录。

您不需要管道。使用分号作为命令分隔符

alias code="cd ~/dir; vim file.c"

您还可以在alias中使用以返回上一个目录。

更好的别名是:

alias code="cd ~/dir && vim file.c && cd -"

如果
cd
失败并返回到原来的目录,这将确保您没有打开当前目录中的文件。

更好的别名是:

alias code="cd ~/dir && vim file.c && cd -"

这将确保如果
cd
失败并返回到您所在的旧目录,您不会打开当前目录中的文件。

既然您提到您没有使用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。否则,请停止”。

既然您提到您在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。否则,请停止”。

也许这可能会有帮助也许这可能会有帮助也许用户考虑了错误的用例,但如果您回答了所问的问题,仍然会很好,可能提供了一个包含管道命令的bash别名示例。可能用户考虑了错误的用例,但如果您回答了所问的问题,仍然会很好,可能提供了一个包含管道命令的bash别名示例。