我想定义一个连续运行以下两个命令的别名。bash中的多个命令别名
gnome-screensaver
gnome-screensaver-command --lock
现在我已经添加
alias lock='gnome-screensaver-command --lock'
我的.bashrc但因为我锁我的工作站经常它会更容易只需要输入一个命令。
我想定义一个连续运行以下两个命令的别名。bash中的多个命令别名
gnome-screensaver
gnome-screensaver-command --lock
现在我已经添加
alias lock='gnome-screensaver-command --lock'
我的.bashrc但因为我锁我的工作站经常它会更容易只需要输入一个命令。
尝试:
alias lock='gnome-screensaver; gnome-screensaver-command --lock'
在你的.bashrc
或
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
第二个解决方案允许你使用参数。
这不行吗?
alias whatever='gnome-screensaver ; gnome-screensaver-command --lock'
这将运行2个命令此起彼伏:
alias lock='gnome-screensaver ; gnome-screensaver-command --lock'
因此,使用分号:
alias lock='gnome-screensaver; gnome-screen-saver-command --lock'
如果你要提供这个论点不顺利到第一个命令。 或者,在$ HOME/bin目录中创建一个简单的脚本。
别名是指别名命令名称。除此之外的任何事情都应该用功能来完成。
alias ll='ls -l' # The ll command is an alias for ls -l
别名是仍然与原始名称相关联的名称。 ll
只是一个稍微特殊的ls
。
d() {
if exists colordiff; then
colordiff -ur "[email protected]"
elif exists diff; then
diff -ur "[email protected]"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
函数是一个具有内部逻辑的新命令。这不仅仅是对另一个命令的重命名。它做内部操作。
从技术上讲,Bash shell语言中的别名在功能方面受限制很大,以至于他们极其不适合涉及多于单个命令的任何事情。用它们来做一个单一命令的小变化,仅此而已。
既然目的是创建一个执行它在内部将在其他命令解析操作的新命令,唯一正确的答案是使用此一功能:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
别名的使用像一个场景这会遇到很多问题。与作为命令执行的函数相反,别名被扩展为当前命令,当将该别名“命令”与其他命令组合时,这会导致非常意外的问题。他们也不能用脚本工作。
其他答案充分回答了这个问题,但您的示例看起来像第二个命令取决于第一个成功退出。你可能想尝试在你的别名short-circuit evaluation:
alias lock='gnome-screensaver && gnome-screensaver-command --lock'
现在第二个命令甚至不会尝试,除非第一个是成功的。 SO question中描述了更好的短路评估说明。
当将别名声明为~/.bashrc
时,我遇到了问题。我的终端没有识别我在~/.bashrc
中声明的别名。我从文章(附在底部)了解到,默认情况下,Mac OS X运行login-shell
,因此它调用~/.bash_profile
而不是~/.bashrc
。
你应该进入中声明你的别名同样的问题,你可以参考下面的链接来解决这个问题:
http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
不应该说是“功能锁定(){}嗒嗒” ? – emeraldjava 2010-01-14 12:12:53
我使用`sh`语法,它也适用于`bash`。 – mouviciel 2010-01-14 13:54:55
你如何通过论证?嵌套在'lock()'括号中的变量'msg'给出错误`语法错误附近的意外令牌msg'` .. – geotheory 2014-03-25 14:57:54