无论我们使用哪种Linux发行版,“毫无疑问,我最喜欢的是Ubuntu”,只要我们开始使用该系统, 自动化需求。 那就是说:创建我们的 自己的命令 以个性化的方式执行某些命令的命令。 这种需求可能是由于某些原因造成的:
- 简化语法 我们通常执行的命令。
- 采取任何行动 系统中未预见到的需求 操作。
- 顺序顺序 我们努力地重复。
虽然bash脚本可以在任何目录的/中运行,但通常 创建一个目录来托管这些脚本。 就我而言:
$ mkdir /home/pedro/.bin
我相信这个 目录(通过在名称前面加句号来隐藏) 存放我在那里使用的所有脚本。 除非另外明确指定,否则隐藏目录名称没有其他含义- 在图形模式下从文件查看器查看/ home / pedro时不会出现.
现在你必须 通知Linux,它也应该放在那儿 (/home/pedro/.bin)从终端执行的订单。
$ PATH=$PATH;/home/pedro/.bin
这样,系统将在此处查找我们的订单 直到我们结束会议. 使该协会永久化:
$ sudo nano /etc/environment
然后我们添加
:/home/pedro/.bin
在PATH行的末尾,非常重要的一点是不要忘记我们要包含的目录地址之前的冒号,因为 这是加法机制.
我们的第一个分步脚本
我们创建文件,在我的情况下是这样的:
$ touch ~/.bin/donde
要对其进行编辑,可以使用首选的编辑器或遵循以下指示:
$ gedit ~/.bin/donde &
并且我们添加以下内容:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
脚本分析
我们的第一通电话 «家当»(#!/ Usr / bin / env bash) 要求Linux报告 bash外壳所在的位置 然后根据bash的要求执行下一步。 这个预防措施 可以很方便地确保 我们的脚本适用于任何安装。 另一种可能 家当 他笑了:
#!/bin/bash
它们之间的差异可能非常怪异,我将对其进行解释。 在这最后 我认为在我们的系统中 bash shell位于/ bin / bash地址。 但是,我在脚本中提出的建议 我想我不知道在哪里 bash解释器。 我要求系统为他提供该地址.
第三行:如您所见,第二行是if。 对于bash字符«$#« 包含我们从命令行传递的参数数量。 因此,»if [$#-lt 1];» 字面意思是“如果参数数量小于1”.
第四行: 然后 (从英语直译为:then),这里表明接下来会发生什么 条件评估时将执行 if 是真实的:换句话说,参数的数量小于1,即为零。
第五行:如果我们执行的脚本没有任何参数,我们将在终端“您需要传递参数”中显示。
第六行:指示将执行以下操作 当我们声明的条件不成立时.
第七行:硒 运行命令«哪里« 伴随着我们通过的内容 第一个参数.
第八行:带有«fi»表示块结束 if.
测试我们的脚本
重要的是 添加写权限 脚本:
$ chmod -x ~/.bin/donde
否则,将出现“权限被拒绝”错误。。 之后,我们可以运行脚本。
$ donde php
它应该向我们显示php二进制文件的位置,它们的源文件和手册页。 像这样的东西:
php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php /usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache /usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz
翻盖
- 我们启用 目录“ .bin”来存放我们的脚本.
- 我们提供 提供给Linux的信息,以便在命令搜索中包含此目录.
- 我们创建脚本。
- 之间的区别 不同 家当.
- 用于 $#传递的参数数量.
- 用于 第一个参数 同 $1.
我希望并希望该脚本对您有用。
很好,解释也很好,但是参数指的是什么?
谢谢米格尔!
我可以通过参数了解提供给程序,功能或系统的所有补充信息。 因为这可能很麻烦,所以让我列举一些例子。
在将文件a.txt复制到文件b.txt的linux命令中,我们将编写以下内容:
$cp a.txt b.txt
此处的cp程序接收两个参数,它们是两个文件的名称,第一个(必须存在)a.txt和第二个b.txt。
另一个示例:如果您使用以下命令从控制台发送打印信息
$ lp文件.pdf
在这种情况下,“ file.pdf”是lp程序的参数。
希望我能解决您的疑问。
问候
我的评论没有出来,这是一种缺乏尊重,我不回到这个论坛。
我不知道发生了什么事,无论如何这本已经出版了。
问候。