我想定义连续运行以下两个命令的别名。
gnome-screensaver
gnome-screensaver-command --lock
现在,我已经添加
alias lock='gnome-screensaver-command --lock'
我的.bashrc但因为我锁我的工作站经常它会更容易只需要输入一个命令。
我想定义连续运行以下两个命令的别名。
gnome-screensaver
gnome-screensaver-command --lock
现在,我已经添加
alias lock='gnome-screensaver-command --lock'
我的.bashrc但因为我锁我的工作站经常它会更容易只需要输入一个命令。
尝试:
alias lock='gnome-screensaver; gnome-screensaver-command --lock'
要么
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
在你的.bashrc
第二个解决方案允许你使用参数。
其他答案回答的问题充分,但你的例子看起来像第二个命令取决于第一个是成功退出。 你可能想尝试一个短路评价你的别名:
alias lock='gnome-screensaver && gnome-screensaver-command --lock'
现在第二个命令甚至不会尝试,除非第一个是成功的。 短路评价的更好的描述在此被描述SO问题 。
别名都是为了混叠命令名称。 任何超出应函数来完成。
alias ll='ls -l' # The ll command is an alias for ls -l
别名是仍与原来的名称相关联的名称。 ll
只是一个稍微特定种类的ls
。
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
一个功能是,其具有内部逻辑的新命令。 这不只是另一个命令的重命名。 它的内部操作。
从技术上讲,在Bash shell语言别名功能,他们是极其不适合用于任何涉及多单指令多是如此有限。 用它们来制作一个命令,没有更多的小突变。
既然目的是创建一个执行它在内部将在其他命令解析操作的新命令,唯一正确的答案是在这里使用的函数:
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目录中一个微不足道的脚本。
我第二@mouviciel方法。 使用下面的作品相当不错简单的命令:
alias doSomething='command1; command2'
有关命令需要的参数只是使用功能:
doSomething() {
command1
command2 --lock
}
声明别名为当我走进一个问题~/.bashrc
。 我的终端不承认我在声明的别名~/.bashrc
。 我从文章(连在底部)是Mac OS X上运行了解到login-shell
默认因此它会调用~/.bash_profile
,而不是~/.bashrc
。
如果你进入中声明你的别名同样的问题,你可以参考下面的链接来解决问题:
http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html