bashを使用して独自のスクリプトを作成する

Linuxの学習

私たちが使用しているLinuxディストリビューションに関係なく、このシステムを使用するようになるとすぐに、「間違いなく私のお気に入りはUbuntuです」 自動化のニーズ。 つまり、私たちを作成します 独自のコマンド パーソナライズされた方法で特定のコマンドを実行します。 この必要性は、特定の原因が原因である可能性があります。

  • 構文を単純化する 私たちが通常実行するコマンドの。
  • あらゆるものをカバーする行動を取る システムで予見されていない必要性 運用可能。
  • シーケンスの順序 私たちが熱心に繰り返すこと。

bashスクリプトは任意のディレクトリで/から実行できますが、通常は これらのスクリプトをホストするディレクトリを作成します。 私の場合:

$ mkdir /home/pedro/.bin

私はこれを信じています ディレクトリ(名前の前にピリオドを付けることで非表示) そこで使用するすべてのスクリプトを保持します。 ディレクトリの名前が非表示になっていることは、明示的に指定されていない限り、他の意味はありません。 グラフィカルモードでファイルビューアから/ホーム/ペドロを表示しているときは表示されません.

今、あなたはしなければなりません 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シェルは/ bin / bashアドレスにあります。 ただし、スクリプトで提案する場所 どこにあるのかわからないと思います bashインタプリタ。 私は彼にそのアドレスを提供するようにシステムに依頼します.

XNUMX行目:ご覧のとおり、XNUMX行目はifです。 文字をbashする場合«$#« コマンドラインから渡すパラメータの数が含まれています。 したがって、»if [$#-lt1];» 文字通り「パラメータの数が1未満の場合」を意味します.

XNUMX行目: その後 (文字通り英語からの翻訳:その後)、ここでは次に何が来るかが示されています 状態評価時に実行されます if 本当だ:言い換えると、パラメータの数は1未満、つまりゼロです。

XNUMX行目:パラメーターを指定せずにスクリプトを実行すると、ターミナルに「パラメーターを渡す必要があります」と表示されます。

XNUMX行目:以下が実行されることを示します 宣言した条件が真でない場合.

XNUMX行目:Se コマンド«を実行しますwhereis« 私たちが渡したコンテンツを伴う 最初のパラメータ.

XNUMX行目:«付きfi»ブロックが終了することを示します if.

スクリプトのテスト

それが重要です 書き込み権限を追加する スクリプトに:

$ chmod -x ~/.bin/donde

これがないと、「許可が拒否されました」というエラーが表示されます。。 その後、スクリプトを実行できます。

$ donde php

これにより、phpバイナリの場所、それらのソースファイル、およびmanページが表示されます。 そんな感じ:

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. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ミゲル

    非常によく説明されていますが、パラメータは何を指しますか?

    1.    Pedro RuizHidalgoプレースホルダー画像

      ミゲルありがとう!

      私は、プログラム、関数、またはシステムに提供されるすべての補足情報をパラメーターによって理解します。 これは面倒なことがあるので、いくつか例を挙げて答えさせてください。

      ファイルa.txtをファイルb.txtにコピーするLinuxコマンドでは、次のように記述します。

      $cp a.txt b.txt

      ここでのcpプログラムは、XNUMXつのファイルの名前であるXNUMXつのパラメーターを受け取ります。最初の(存在する必要があります)a.txtとXNUMX番目のb.txtです。

      別の例:コマンドを使用してコンソールから印刷するために送信する場合

      $ lp file.pdf

      この場合、「file.pdf」はlpプログラムのパラメーターです。

      私はあなたの疑問を満足させたと思います。

      よろしく

  2.   ミゲル

    私のコメントは出ません、それは尊敬の欠如です、私は再びこのフォーラムに戻りません。

    1.    Pedro RuizHidalgoプレースホルダー画像

      何が起こったのかわかりませんが、いずれにせよ公開されています。

      ご挨拶。