

在本文中,我们将看到如何创建用于自动执行任务的自定义外壳命令,这将通过节省时间来帮助专注于其他富有成效的事情。 它易于设置,也很有趣,因为我们可以创建任何自定义命令,从非常有用的命令到有趣的命令。 我们可以为以下内容创建一个命令:
- 将youtube视频转换为mp3
- 使用Tmuxinator使用单个命令启动所有数据库服务器和所有应用
- 从网站中提取一些信息
- 获取git ssh密钥并将其复制到剪贴板中
- 获取有关消耗过多RAM / CPU的前5个程序的详细信息,等等。
自定义命令基本上是某种功能/方法,就像任何其他语言一样,它们可能会也可能不会接受输入并执行某些操作。 我们可以在一个函数中堆叠任意数量的命令,然后在该函数调用上运行该命令。 下面共享了有关编写功能以及设置为在终端内部作为命令使用的更多详细信息。 下面给出的示例将在任何基于UNIX的系统上工作。
让我们从创建一个自定义命令并使该命令在终端中可用的简单示例开始。
这是一个示例:
函数print_my_input(){
echo'您的输入:'$ 1
}
如果向函数发送一些输入,则第一个参数将存储在$1变量中,第二个参数将存储在$2 ,依此类推。
将上述函数复制并粘贴到您的终端中,然后尝试像这样调用该函数:
print_my_input 'Just trying out my new command'
输出应为:
Your input: Just trying out my new command
2.1我们将创建一个新的bash脚本文件,其中将保留所有命令。 我们将通过添加一个点使其成为隐藏文件(
. )放在文件名前面,因为它将仅由终端使用,并且还可以防止意外删除。
让我们转到终端中的主目录( ~ )。 cd ~将带您到那里。 现在,使用以下命令创建一个新的bash脚本:
touch .my_custom_commands.sh
现在,在任何文本编辑器中打开上述文件,然后粘贴以下代码并保存。
#!/ bin / bash#打印输入
函数print_my_input(){
echo'您的输入:'$ 1
}
- 第一行是编写Shell脚本时使用的约定,该约定向Shell提供信息以使用适当的解释器。 例如
#!/usr/bin/env python -
#用于撰写评论
2.2设置文件权限
默认情况下,新创建的文件仅具有读取权限。 由于我们只需要将文件加载到命令行管理程序中,因此已经存在的读取权限对我们来说已经足够。 因此,在此会话期间,我们不需要更改文件的权限。
但仅出于了解,您可以尝试使用./{{script_name}}格式的命令执行脚本,在本例中为./.my_custom_command.sh 。 您将看到“权限被拒绝”消息。
但是,如果需要像上述那样通过终端显式运行脚本,则可以使用以下命令为文件设置“可执行”权限:
chmod +x .my_custom_commands.sh
2.3使命令在终端中可用
还记得我们在终端中粘贴了函数print_my_input并尝试运行它吗? 这将使该命令(实际上只是一个函数/方法)仅可用于该特定选项卡的当前终端会话。 如果您尝试打开新选项卡并执行命令,则该命令将不存在。
让我们研究一下如何在任何终端会话中加载命令。
我们的文件已经存在,已保存并准备就绪。
让我们从新鲜开始。
- 退出终端并启动一个新终端并进入主目录。
- 检查此
print_my_input命令是否有效。 现在不应该工作。 - 现在,使用如下所示的源命令加载文件内容:
source ~/.my_custom_commands.sh - 现在尝试键入
print_my_input命令,然后按Enter。 - 工作正常吗? 现在,我们必须告诉终端在每个终端会话中加载脚本的内容。 为此,我们在命令行管理程序的
rc(运行控制)文件中添加了用于加载脚本的命令。 在每次交互式Shell启动期间,Shell都会加载/执行运行控制文件中的所有命令。
Bash是几乎所有基于UNIX的系统的默认外壳。 但是,也有ZSH等不同的口味。 根据我们使用的外壳,我们将修改~/.bashrc或~/.zshrc文件。 如果您对此不了解,则转至~/.bashrc文件。 请注意,我在描述这些文件时使用的是完整路径。
将我们的命令添加到 rc 文件中:
- 使用您拥有的任何文本编辑器打开
~/.bashrc或~/.zshrc - 在最后一行或您想要的任何位置之后添加以下命令
source ~/.my_custom_commands.sh - 添加新行后保存文件并退出终端
- 由于我们已经告诉终端在每个终端会话上加载文件,因此
print_my_input在当前选项卡中尝试此命令print_my_input,也可以打开一个新选项卡。 即使我们退出并启动新终端,它也应该在任何地方都可以工作。
这仅仅是开始。 您可以更深入地了解shell脚本,如何使用变量,循环,是否存在条件以及如何创建新命令,并继续在this( my_custom_commands.sh )文件中添加新功能。
这是我最近从公共YouTube视频网址下载mp3时使用的便捷自定义命令。
#将youtube视频转换并保存到mp3
函数convert_to_mp3(){
youtube-dl-提取音频-音频格式mp3 $ 1
}
如果没有,必须先安装youtube-dl和ffmpeg库。 然后,将以下功能复制到自定义命令文件中。 重新加载终端或转到新标签并尝试如下命令:
convert_to_mp3'https://youtube.com/{{youtube_url_of_some_song}}'
如果您已经拥有youtube-dl -U并抛出一些错误,请尝试通过youtube-dl -U更新该库。
参考文献:
–运行控制文件-
Bash脚本