编辑已有脚本 Editing the scripts you already have

来自MagicLinux 百科
Sejishikong讨论 | 贡献2021年12月20日 (一) 20:13的版本 (创建页面,内容为“==<center>编辑已有脚本</center>== *[http://www.linuxcommand.org/wss0020.php 原文链接 : http://www.linuxcommand.org/wss0020.php] *[http://mlwiki.maihaohui.com/index.php/Linux%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B9%8B%E8%8F%9C%E9%B8%9F%E5%AD%A6%E4%B9%A0%E7%AF%87 返回目录] 在我们开始编写新的脚本之前,我要指出你其实已经拥有了一些你所独有的脚本。在你的帐户被创建之初,这些脚本被置于你的home目录,用…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

编辑已有脚本

在我们开始编写新的脚本之前,我要指出你其实已经拥有了一些你所独有的脚本。在你的帐户被创建之初,这些脚本被置于你的home目录,用于配置你电脑中各项程序的默认行为。你可以通过编辑这些脚本来改变它们的默认配置。

本课中,我们将通过分析两个脚本文件来学习一点有关脚本的重要的新知识点。


命令---无处不在

迄今为至,我们还不曾探讨过命令的确切含义。命令可以有多种不同的形式。shell本身内置了一些命令。这也正是,shell本身能够自动理解部分命令的原因所在。cd和pwd命令便属于此种类型。将命令嵌入shell的过程称为shell内置。想查看bash中内置的命令列表,可以输入help命令查看。

命令的第二种形式是可执行程序。大部的命令属于这一类型。可执行程序是指位于你path路径中目录中的全部文件。

最后两类命令包含在你执行时间的环境中。在执行任务时,系统将有关全局的一些细节载入内存中。这此信息称为环境。这一环境包含你的路径、用户名、邮件传输文件的名称以及更多内容。你可以通过set命令来查看你系统环境中包含内容的完整清单。

环境中所包含的这两类命令类型就是别名和shell functions功能模块。


别名(Aliases)

现在,让我们来定义一个别名,以免你对我所讲的感到困惑。进入你的home目录。用你喜欢的文本编辑器打开.bash_profile文件,并在文件的底部加入下面一行内容:


alias l='ls -l'


.bash_profile文件是一个shell脚本,每次你登录后它都将被执行。通过在文件中加入alias命令行,我们定义了一个新的命令“l"用来实现"ls -l"功能。注销后重新登录试一下你的新命令。通过这一技巧,你可以创建任何你想自定义的命令。以下定义供你参考:

alias today='date +"%A, %B %-d, %Y"'

上述别名定义了一个新的命令today用于以特定的格式显示当天的日期。


(注:在部分linux的汉化版本中,通常对date命令进行了别名定义,如magiclinux中,在/etc/bashrc文件中定义为alias date='date +%c'。如想成功运行本文中的定义,需对date命令进行初始化,命令为: alias date=date,然后再进行如上别名定义,命令可成功运行。详细内容可通过date --help命令进行学习)。


顺便提一下,alias命令只是另一个shell内置命令。你可以在命令提示符下创建别名定义;然而,它们仅在当前的shell任务中生效。例如:

[me@linuxbox me]$ alias l='ls -l'

Shell Fuctions功能模块

定义别名对很简单的命令非常有效,但如果你想创建更为复杂的东西,你可以尝试一下shell functions功能模块。Shell functions功能模块可以理解为“脚本中的脚本”或者小型的子脚本。让我们来试一下,用文本编辑器打开.bash_profile文件用以下内容替换today的别名定义内容:



function today {

   echo "Today's date is:"
   date +"%A, %B %-d, %Y"

}



不管相信与否,function,同alias一样,也是shell内置命令。你可以在命令提示符后直接输入function定义。


[me@linuxbox me]$ function today {

> echo "Today's date is:"

>date +"%A, %B %-d, %Y"

> }

[me@linuxbox me]$


type

因为命令的形式多种多样,想要清楚的阐述什么是别名,shell functions功能模块或者可执行文件十分困难。想确认一个命令是什么,可以使用type命令。type会显示命令是哪种类型。使用方法如下:


[me@linuxbox me]$ type 命令

.bashrc

虽然,将别名和shell functions功能模块写入.bash_profile文件可以使其生效,但这种方式并非最佳选择。有一个被称为 .bashrc的独立文件可用来解决这一问题。你可能已经注意到了,在.bash_profile文件头部有一个小段代码,内容类似如下:



if [ -f ~/.bashrc ]; then

   . ~/.bashrc

fi


这一小段代码用于检查在你的homme目录中是否存在.bashrc文件。如果存在,脚本将先读取其中的内容。如果在你的.bash_profile文件中含有类似代码,你可以编辑.bashrc文件,将自定义的别名和shell functions功能模块置于其中。


要知后事如何,且看:《Here 脚本 Here Scripts

© 2000-2007, William Shotts, Jr. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.

Linux® is a registered trademark of Linus Torvalds.