使用别名和Bash Shell函数创建自己的Linux命令。 驯服重复性任务,截断冗长的进程,并使用您经常使用且难以记住的选项配置标准命令。
别名和Shell脚本是Linux和类似Unix的操作系统中的强大技术,使您可以根据自己的需要磨练命令行体验。 您可以定义自己的命令以适合您的特定需求,并减轻重复任务的负担。
别名和Shell脚本执行相同的工作。 它们允许您定义和命名一组Bash shell功能,然后可以使用您为其赋予的名称来调用它。 键入名称比每次要使用它们都必须键入所有步骤或命令更容易,更方便。
别名和脚本之间的区别是复杂性和规模之一。 脚本更适合保存更长,更复杂的代码块。 别名非常适合保存更短,更简洁的命令集。
为您预定义了一些别名。 要查看系统中定义的别名列表,请使用不带参数的alias命令:
别名
这些是本文研究过的Ubuntu测试机上定义的别名。 如果Id定义了任何自定义别名,这些别名也将显示在此列表中。
在清单的顶部,有一个外观复杂的别名,称为Alert。 好一会儿。 ls命令有很多不同的别名,还有一组别名为grep系列命令提供了颜色输出。 例如,无论何时键入,都定义了这些别名:
grep系统将其解释为:
grep --color = auto这显示了一个重要的别名。 它们可以与现有命令具有相同的名称。它们甚至可以包含原始命令。
这是grep别名的定义。
alias grep = grep --color = auto alias命令用于定义别名。别名如下。 在此示例中为grep。等号将别名的名称连接到别名的主体。 对于所有非常简单的别名,别名的主体用单引号引起来。别名的主体是在命令行上使用别名时执行的部分。该别名的主体仅调用grep 使用--color = auto选项的命令。
为了方便起见,您可以使用警报别名来通知您命令的执行时间,以便您知道它的作用。 它还指示命令是否成功完成。 它在屏幕顶部提供图形系统警报。
这是一个简单的例子。 sleep命令将睡眠五秒钟。然后将调用警报别名。 别名检查上一条命令的响应。 它从历史记录文件中提取最后一个命令。 它确定命令是否成功完成。 然后,将结果显示在系统警报中。
如果命令按预期完成,则系统警报中的图标是一个小的终端窗口。 如果命令返回了错误代码,则系统警报中的图标为红色错误图标。
睡5; 警报
五秒钟后,我们看到以下系统警报:
该图标是一个小的终端窗口,表示一切正常。 让我们用一个我们知道会失败的命令再试一次:
DoomedToFail; 警报
我们的系统警报现在有一个错误图标。
如我们所见,要定义别名,我们使用alias命令。
将为clear命令创建一个化名。 我们的别名将称为cls,它将调用clear命令。
我们的别名定义非常琐碎,以至于不能保证将其用单引号引起来。 如果别名的内容比这更复杂,或者包含空格,则将其用单引号引起来。 定义好别名,使用ls在终端窗口中放置一些输出,然后使用我们的新别名cls清除屏幕。
别名cls = clearls -lcls
屏幕被清除。成功,尽管寿命很短。 只要该终端窗口保持打开状态,别名将一直存在。 窗口关闭后,别名将消失。
那么我们如何使别名永久化呢?
您可能想知道预包装别名的定义位置。 它位于主文件夹中的.bashrc文件中。 每当启动交互式外壳程序时,都会读取该文件并执行其中的命令。 即,当您打开终端窗口时。
在主文件夹中键入以下命令,以突出显示语法查看.bashrc文件的内容。
在主文件夹中键入以下命令,以突出显示语法查看.bashrc文件的内容。
这将启动加载了.bashrc文件的gedit编辑器。
突出显示的区域显示了两个定义了别名的区域。
滚动浏览该文档将发现其他两个与别名有关的部分:
第一个是警报别名的定义。 第二个是if语句。 如果存在.bash_aliases文件,则将其转换为读入。
如果您只想定义几个别名,则可以将它们放在.bashrc文件中。 将它们塞入包含ls别名的部分下面。
如果要创建很多别名,或者只是想将别名封装在自己的文件中,则可以在.bash_aliases文件中定义它们。 在.bash_aliases文件中创建它们的一个优点是,您不能意外更改.bashrc文件中的任何设置。 另一个优点是您的别名很容易复制到新系统中,因为它们与.bashrc文件完全分离。
.bash_aliases文件在创建之前将不存在。可以使用以下命令创建该文件:
触摸.bash_aliases
让我们编辑文件并为其添加一些别名。 此命令将在gedit编辑器中打开.bash_aliases文件。
让我们编辑文件并为其添加一些别名。 此命令将在gedit编辑器中打开.bash_aliases文件。
我们添加了三个别名。 第一个是我们先前使用的cls别名。 下一个称为h。 并且是调用history命令的快捷方式。
第三个别名称为ftc。 这代表文件类型计数。
该别名涉及更多,因此用单引号引起来。 它使用通过管道链接在一起的命令链。 它生成一个不同文件扩展名和目录名称的排序列表,并为每个列表条目计数。
相关文章如何在Linux上使用管道
保存.bash_aliases文件后,我们可能希望别名能够生效并且可以访问。 事实并非如此。 别名定义生效之前,必须由Bash shell读取该文件。 只要打开交互式外壳,便会执行此操作。
我们还可以使用内置的Bash shell。 读取并执行文件中的命令。 因为处理.bashrc时会读取我们的.bash_alias文件,所以我们应该通过调用.bashrc来执行测试。 这样,我们可以检查是否从.bashrc调用了.bash_alias文件,并且我们的别名是否有效。
我们使用的命令是:
gedit .bash_alias编辑.bash_alias文件。
。 .bashrc这将读取并执行.bashrc中的命令,该命令将调用.bash_alias。
ftc这将称为ftc别名。
我们的别名响应,这意味着Bash已读入.bashrc和.bash_aliases,并且新的别名现已生效。
现在,您可以继续将新别名添加到.bash_aliases文件中。 如果发现自己做事不止一次或两次,请考虑为其做一个别名。
有一个删除别名的命令,以便BAsh不能识别它们也不响应它们。 令人耳目一新的是,该命令称为unalias。
要使用它,请提供您希望Bash忘记的别名的名称。 为了使Bash忘记我们的ftc别名,请使用如下非别名:
unalias ftc您可以使用unalias删除已定义的别名和任何预定义的别名。
要从系统中删除所有别名,请使用-a(所有)选项:
但是,unalias -aBashs内存丢失将不是永久的。 下次打开终端窗口时,被忘记的别名将返回。 要真正清除它们,您需要从.bashrc和.bash_alias文件中删除它们。
如果您想将它们恢复原样,请不要从.bashrc文件中删除它们。 而是通过在每个别名行的开头添加井号#来注释掉它们。 要使您的.bash_alias文件无效,请对其进行重命名。 如果您的.bashrc文件看不到它,则它将无法读取它。逆转这些步骤以恢复您的别名是一件小事。
Lika别名,Bash shell函数可以在.bashrc文件中定义,但是将它们放在自己的定义文件中通常比较整洁。 遵循.bash_aliases文件的约定,将其称为.bash_functions。
这意味着我们需要告诉.bashrc文件读取我们的定义。 我们可以复制并修改在.bash_aliases文件中读取的代码片段。 启动gedit并使用以下命令加载.bashrc文件:
这意味着我们需要告诉.bashrc文件读取我们的定义。 我们可以复制并修改在.bash_aliases文件中读取的代码片段。 启动gedit并使用以下命令加载.bashrc文件:
您需要添加下面显示的突出显示的部分。
您可以突出显示别名部分,然后按Ctrl + C,然后移至所需的新部分,然后按Ctrl + V粘贴文本的副本。 然后,您要做的就是将显示为.bash_aliases的两个位置更改为.bash_functions。
我们可以保存这些更改并关闭gedit。
现在,我们将创建和编辑.bash_functions文件,并将函数定义放入其中。
触摸.bash_functionsgedit .bash_functions
这将在gedit中打开空的.bash_functions文件。
将要添加一个简单的函数。 up将使用单个命令行参数,该参数是一个数字。 然后将调用cd ..的次数。 因此,如果您使用了命令
up 2up将调用cd ..两次,并将在目录树中上移两个级别。
定义函数有不同的方法。 继承人之一:
function up(){单词function是可选的。 如果您是传统主义者,请使用它,如果您不愿意输入它,请不要使用它。
这是我们在gedit中的全部功能:
function up(){这标志着我们函数定义的开始,并命名了函数。
level = $ 1这将创建一个名为level的变量并将其设置为第一个参数的值。 该参数将是用户调用函数时提供的数字。 $ 1表示第一个命令行参数。
而[[$ levels] -gt“ 0”]; 然后我们进入一个循环。 这意味着当level的值大于零时,请执行循环体内包含的内容。
在循环体内,我们有两个命令。 他们是:
cd ..在目录树中上移一个级别。
level = $(($ levels-1))将级别设置为新值,该值比当前值小一。
然后,我们返回到循环的顶部,再次进行电平值与零之间的比较。 如果级别大于零,则再次执行循环的主体。 如果它不大于零,则循环结束,然后进入完成的语句,函数结束。
保存这些更改并关闭gedit。
仔细阅读并执行.bashrc中的命令,然后应阅读并执行.bash_functions文件中的命令。
仔细阅读并执行.bashrc中的命令,然后应阅读并执行.bash_functions文件中的命令。
我们可以通过移动到目录树中的某个位置并使用up移回目录树中的更高位置来测试该功能。
我们可以通过移动到目录树中的某个位置并使用up移回目录树中的更高位置来测试该功能。
该功能有效。 在树中移动了两个目录级别。
当您建立一组别名和函数库时,很难记住特定命令是别名还是函数。 您可以使用type命令来提醒您。 这里很酷的事情是您还可以看到定义。
让我们在ftc别名和up函数上使用type。
键入ftctype up
我们非常有用地提醒每个命令是什么类型的命令,以及它们的定义。
别名和功能可以极大地加快您对命令行的使用。 它们可以缩短命令序列,并且可以让您使用通常与标准命令一起使用的选项。
每次看到漂亮的单行代码或有用功能时,您都可以对其进行修改和个性化,然后将其添加到.bash_aliases或.bash_functions文件中。