在bash中的别名多个命令在bash中的别名多个命令(Multiple commands in an

2019-05-12 20:40发布

我想定义连续运行以下两个命令的别名。

gnome-screensaver
gnome-screensaver-command --lock

现在,我已经添加

alias lock='gnome-screensaver-command --lock'

我的.bashrc但因为我锁我的工作站经常它会更容易只需要输入一个命令。

Answer 1:

尝试:

alias lock='gnome-screensaver; gnome-screensaver-command --lock'

要么

lock() {
    gnome-screensaver
    gnome-screensaver-command --lock
}

在你的.bashrc

第二个解决方案允许你使用参数。



Answer 2:

其他答案回答的问题充分,但你的例子看起来像第二个命令取决于第一个是成功退出。 你可能想尝试一个短路评价你的别名:

alias lock='gnome-screensaver && gnome-screensaver-command --lock'

现在第二个命令甚至不会尝试,除非第一个是成功的。 短路评价的更好的描述在此被描述SO问题 。



Answer 3:

别名都是为了混叠命令名称。 任何超出应函数来完成。

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
}

在这样的情况下别名的使用运行到了很多的问题。 相反功能,作为命令执行,别名被扩展到当前命令,结合此别名“命令”与其他命令时,这将导致非常意外的问题。 他们也没有在脚本。



Answer 4:

这难道不是工作?

alias whatever='gnome-screensaver ; gnome-screensaver-command --lock'


Answer 5:

这将运行2个命令此起彼伏:

alias lock='gnome-screensaver ; gnome-screensaver-command --lock'


Answer 6:

因此,使用一个分号:

alias lock='gnome-screensaver; gnome-screen-saver-command --lock'

如果你要提供参数的第一个命令,这并不正常工作。 另外,建立在$ HOME / bin目录中一个微不足道的脚本。



Answer 7:

我第二@mouviciel方法。 使用下面的作品相当不错简单的命令:

alias doSomething='command1; command2'

有关命令需要的参数只是使用功能:

doSomething() {
    command1
    command2 --lock
}


Answer 8:

声明别名为当我走进一个问题~/.bashrc 。 我的终端不承认我在声明的别名~/.bashrc 。 我从文章(连在底部)是Mac OS X上运行了解到login-shell默认因此它会调用~/.bash_profile ,而不是~/.bashrc

如果你进入中声明你的别名同样的问题,你可以参考下面的链接来解决问题:

http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html



文章来源: Multiple commands in an alias for bash