使用bash創建自己的腳本

學習Linux

無論我們使用哪種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.

我希望並希望該腳本對您有用。