是否可以在 bash 中定义命令?

是否可以在 bash 中定义命令?

例如我可以设置:

gb = cd /media/Dan/evolution

...这样每次我gb在 bash 中执行时,我都可以cd到那个特定的目录?

我在网上找到了一些东西:alias命令。但似乎无法完成上面的工作。

有可能做到吗?如何?

答案1

只需输入:

alias gb='cd /media/Dan/evolution'

要使此设置永久化(以便在重新启动或打开另一个控制台后它会保留),请将此行添加到文件 ~/.bashrc (假设您使用 bash 作为默认 shell)

答案2

别名的替代方案

gb() { cd /media/Dan/evolution; }

这定义了 shell 函数 gb,它不带任何参数,并执行 cd /media/Dan/evolution。与其他建议一样,可以将其添加到 ~/.bashrc

答案3

这是可能的,并且alias是您正在寻找的命令。例如,alias ll="ls -l"在 bash 中,您可以键入ll而不是ls -l.请注意,设置别名时不使用空格。man alias也可能有用。

答案4

或者,可以编写一个 C 程序来调用所需的命令并将其保存到 /usr/bin。

#include <stdio.h>
#include <string.h>

int main () {
    char command[50]; //notice you can change this to fit your needs
    int return_val;

    strcpy( command, "echo \"cd /media/Dan/evolution\" | bash -i" );
    return_val = system(command); 

   //this is equivalent to entering the command in a new bash, 
   //which will return and exit

    return return_val;
}

要编译它,请转到保存源代码的目录(在 bash 中)并执行(您可能需要 sudo):

 gcc ./gb.c -o /usr/bin/gb

经过进一步研究这里,我意识到简单地输入命令system()对于 bash 内置命令不起作用。这就是为什么您需要创建一个交互式 bash 实例并向其回显您的命令。它只是过于复杂并且可能没用,除非您想缩短对 shell 脚本的调用(some_script而不是sh ~/radgeRayden/Scripts/some_script)。

system() 函数的参考

相关内容