.bash_profile alias with variables
我正在尝试创建一个别名,它将创建一个文件并在VS Code中打开它。
创建一个名为create 的别名,该别名将执行touch && code 。
例如,create app.js应该执行touch app.js && code app.js。
从man bash开始,在ALIASES下:
There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used (see FUNCTIONS below)."
从而:
1
| create() { touch"$1"; code"$1"; } |
-
您应该几乎总是双引号变量(和参数)。此外,function关键字是非标准的;我建议使用语法create() { touch"$1"; code"$1"; }
-
@GordonDavisson:我同意引用。我不同意function:标签是bash,而不是sh,因此标准是man bash所说的。
-
man bash表示function关键字是可选的。无论如何,将它放在那里只会使你的代码不那么便携。
-
@tripleee:我想我也应该用x += 1替换C中的所有x++,因为Ruby无法理解++,以防万一......好......
-
这是荒谬的减少。 Shell脚本可以是可移植的,也可以是特定shell的特定脚本。如果你需要来自特定shell的功能,那么当然努力实现可移植性没有任何意义;但无偿破坏其他便携式代码只是懒惰。
-
@tripleee:如果是一个专为发行而设计的脚本,我会同意你的看法。但我们谈论的是想要定制他特定的bash环境的用户。 OP将把它填入他们的.bashrc并且永远不会再看它。 OP在Bourne shell上运行它的可能性要小于我将C代码转换为Ruby的机会。在过去的二十年里,我甚至没有见过Bourne shell。你为什么这么挂便携?
-
因为不只是OP最终会读到这个。更广泛的论证在我对stackoverflow.com/questions/11710552/useless-use-of-cat的回答中