無論我們使用哪種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程序的參數。
希望我能解決您的疑問。
問候
我的評論沒有出來,這是一種缺乏尊重,我不再回到這個論壇。
我不知道發生了什麼事,無論如何這本已經出版了。
問候。