使用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.

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


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   米格爾 他說:

    很好,解釋也很好,但是參數指的是什麼?

    1.    Pedro Ruiz Hidalgo的佔位符圖像 他說:

      謝謝米格爾!

      我可以通過參數了解提供給程序,功能或系統的所有補充信息。 因為這可能很麻煩,所以讓我列舉一些例子。

      在將文件a.txt複製到文件b.txt的linux命令中,我們將編寫以下內容:

      $cp a.txt b.txt

      此處的cp程序接收兩個參數,它們是兩個文件的名稱,第一個(必須存在)a.txt和第二個b.txt。

      另一個示例:如果您使用以下命令從控制台發送打印信息

      $ lp文件.pdf

      在這種情況下,“ file.pdf”是lp程序的參數。

      希望我能解決您的疑問。

      問候

  2.   米格爾 他說:

    我的評論沒有出來,這是一種缺乏尊重,我不再回到這個論壇。

    1.    Pedro Ruiz Hidalgo的佔位符圖像 他說:

      我不知道發生了什麼事,無論如何這本已經出版了。

      問候。