我知道如何创建自定义终端命令,这对于我在文件夹中编译所有 Java 类非常有用。我还看到,为了做到这一点,人们通常会创建一个文件夹 ~/bin,并将文件 .sh 和他们希望运行的行放在其中,但我无法很好地理解它,例如,我创建了一个 compile.sh,其中包含一些行
-gcc file -o file
-gcc file1 -o file1
但是当我阅读时,我还需要在隐藏在主文件夹中的名为 .bashrc 的文件中添加一行,但我不知道该怎么做,有没有更简单的方法可以编辑此文件?执行此操作后,我的自定义命令将是 .sh 文件的名称(编译)?
答案1
让计算机的所有用户都可以使用 Bash 脚本的最简单方法是将它们放在 中/usr/local/bin
。但这要求您具有管理员权限。
创建脚本:
打开您最喜欢的文本编辑器并写下您希望脚本运行的所有命令,每行一个命令。
您可以通过以 开始一行来向 Bash 脚本添加注释
#
。完成后,将下面这一行作为脚本顶部的第一行添加。它被称为“shebang”,用于告诉 shell 使用哪个解释器来执行脚本。
#!/bin/bash
这是一个完整脚本的简单示例,运行您在问题中提到的两个命令:
#!/bin/bash # Compile 'file': gcc file -o file # Compile 'file1': gcc file1 -o file1
将脚本移动到正确的位置:
您应该为所有用户放置自己的脚本的位置是
/usr/local/bin
。由于该目录归用户所有
root
,因此您必须是管理员并使用sudo
才能将文件移动到那里。我假设您在主目录中创建了脚本
~/my_script.sh
。只需打开终端并输入以下命令,将其替换SCRIPTNAME
为您想要的名称。此名称将是您必须输入才能运行它的命令。.sh
文件扩展名不是必需的。sudo mv ~/myscript.sh /usr/local/bin/SCRIPTNAME
设置正确的所有者和权限:
该脚本应由 拥有并可由 写入
root
,但每个人都可读取和执行。以下两个命令可确保这一点:sudo chown root: /usr/local/bin/SCRIPTNAME sudo chmod 755 /usr/local/bin/SCRIPTNAME
运行脚本并享受:
现在您只需在终端上输入
SCRIPTNAME
(或无论您如何称呼它)即可执行脚本。
答案2
虽然编写脚本是一种非常方便的执行方式一个文件中的许多命令,我建议使用只需要一两个命令的函数。
以下面的函数定义为例
compile()
{
gcc "$1" -o "${1%%.*}" && printf "<<< Compiled successfully\n"
}
通过将其放入您的.bashrc
文件中(然后运行source ~/.bashrc
或打开新的终端选项卡),您可以从任何地方运行此命令,而无需~/bin
添加到您的PATH
变量中,并提供文件名作为命令行参数,如下所示
compile somecode.c
附注:您只需从命令行调用即可编辑该gedit ~/.bashrc
文件
对于那些想知道"$1"
和是什么意思的人"${1%%.*}"
,"$1"
指的是第一个命令行参数(在本例中"somecode.c"
),至于"${1%%.*}"
- 那是参数扩展,特别是那个执行后缀删除的参数扩展,它会丢弃点后面的所有内容。换句话说, 变成了somecode.c
。somecode
有关更多信息,请阅读bash 手册页参数扩展部分
答案3
在开始之前,我想澄清一下,您不是在创建新的命令,而是在创建可以作为可执行文件运行的脚本。但它们的行为方式与命令相同,因为您可以从任何地方运行它们。
如果您的主文件夹中没有名为“bin”的文件夹,请创建一个。
现在打开一个终端窗口并输入nano ~/.bashrc
。
这将打开一个编辑器。在此文件的底部,添加一行新内容PATH="$HOME/bin:$PATH"
。
现在按 CTRL+O(字母 o,而不是零)保存文件,然后按 ENTER。按 CTRL+X 退出编辑器。注销并重新登录以使更改生效,或者如果不起作用,请重新启动计算机。
现在,您在 bin 文件夹中创建的任何脚本都可以在终端窗口的任何位置访问。
您可以使用 nano、gedit(Ubuntu 图形文本编辑器)或任何您想要的文本编辑器创建这些脚本。只需记住将脚本保存在 ~/bin 文件夹中并使文件可执行即可。有两种方法可以做到这一点:
GUI:右键单击文件并转到权限选项卡,然后选中“允许作为程序执行”框。
终端 :chmod +x /location/of/your/file