\r\n\r\n
エイリアスやbashshell関数を使って、独自のLinuxコマンドを作成することができます。繰り返しの多い作業、長い処理の切り捨て、よく使うが覚えにくいオプションで標準コマンドを設定することができます。
エイリアスやシェルスクリプトは、LinuxやUnix系OSの強力な技術で、コマンドラインの使い勝手を思い通りに改良することができます。お客様のニーズに合わせて独自のコマンドを定義し、繰り返し行われる作業の負担を軽減することができます。
エイリアスやシェルスクリプトも同じような働きをします。これらの関数により、一連のbashshell関数を定義し、名前を付けることができ、その名前に従って呼び出すことができるようになります。使うたびにすべての手順やコマンドを入力するよりも、名前を入力するほうがシンプルで便利です。
エイリアスとスクリプトの違いは、複雑さと大きさの違いです。スクリプトは、より長く、より複雑なコードブロックを保持するのに適しています。エイリアスは、より短く、より簡潔なコマンド群を保持するのに適しています。
システムで定義されているエイリアスのリストを見るには、引数なしでaliasコマンドを使用します。
aliasこの記事のために調査したUbuntuのテストマシンで定義されたエイリアスです。カスタムエイリアスを定義している場合は、このリストにも表示されます。
リストの一番上にあるのは、複雑そうなエイリアスの警告です。これについては後で詳しく説明します。lsコマンドにはたくさんの異なるエイリアスがあり、grepコマンド群にカラー出力を提供するエイリアスセットがあります。例えば、これらのエイリアスを定義しておけば、いつタイプしても大丈夫です。
grepと解釈しています。
grep --color=autoこのことは、エイリアスが既存のコマンドと同じ名前を持ち、さらにその中に元のコマンドを含むことができるという重要な点を示しています。
以下は、grepの別名の定義です。
alias grep='grep --color=auto'このエイリアスの本体は、単に --color=auto オプションを使用して grep コマンドを起動します。
少し余談ですが、何をするものなのかを説明すると、alertというエイリアスは、コマンドが完了したことを知らせるために使われます。また、コマンドが正常に終了したかどうかも表示される。画面上部にグラフィカルなシステムアラートを表示します。
以下は簡単な例です。sleepコマンドは5秒間ハイバネートした後、アラームのエイリアスを呼び出します。エイリアスは、前のコマンドに対する応答をチェックする。ヒストリーファイルから最後のコマンドを抽出します。コマンドが正常に終了したかどうかを判断します。その結果は、システムアラートとして表示されます。
コマンドが期待通りに完了すると、システムアラートのアイコンが小さなターミナルウィンドウになります。コマンドがエラーコードを返した場合、システムアラートのアイコンは赤のエラーアイコンになります。
sleep 5; alert5秒後、システムアラート:が表示されました。
アイコンは小さなターミナルウィンドウで、すべてがうまくいっていることを意味します。
DoomedToFail; alertシステムアラートにエラーアイコンが表示されるようになりました。
エイリアスを定義するには、これまで見てきたように、aliasコマンドを使用します。
このエイリアスは cls と呼ばれ、clear コマンドを呼び出します。
私たちのエイリアス定義は非常にシンプルで、一重引用符で囲むことを保証するものではありません。エイリアスの本文がこれより複雑な場合、またはスペースを含む場合は、一重引用符で囲んでください。エイリアスを定義し、ターミナルウィンドウに ls を使って出力を入力し、新しいエイリアス cls を使って画面をクリアします。
alias cls=clear ls -l cls画面はクリアされます。短時間ではありますが、成功しました。エイリアスは、このターミナルウィンドウが開いている場合にのみ存在し続けます。ウィンドウが閉じられると、エイリアスは消えます。
では、どうすればエイリアスを永久保存できるのでしょうか?
プリパッケージのエイリアスが定義されている場所を知りたい場合があります。メインフォルダ内の「.bashrc」ファイル内にあります。対話型シェルを起動すると、このファイルが読み込まれ、中のコマンドが実行されます。つまり、ターミナルウィンドウを開いたときです。
メインフォルダーで次のコマンドを入力すると、「.bashrc」ファイルの内容がシンタックスハイライトで表示されます。
gedit .bashrcこれにより、geditエディターが起動し、「.bashrc」ファイルが読み込まれます。
ハイライトされた部分は、エイリアスが定義されている2つの領域を示しています。
ドキュメントをスクロールすると、エイリアスに関連する他の2つのセクションが表示されます。
1つ目は、アラートエイリアスの定義です。2つ目は、if文です。意味は、"ファイル「.bashētu alias」が存在するならば、それを読み込んでください "です。
もし、いくつかのエイリアスを定義したいだけなら、それらを ".bashrc" ファイルに記述して、ls のエイリアスを含むセクションの下に挟んでおくことができます。
エイリアスをたくさん作りたい場合、あるいは自分のファイルでラップしたい場合は、「.bashu aliases」ファイルで定義します。.bash³³" ファイルで作成する利点は、"bashrc" ファイルの設定を誤って変更することがないことです。また、エイリアスは「.bashrc」ファイルとは完全に分離されているため、新しいシステムにコピーしやすいという利点もあります。
.bashu aliases "ファイルは、以下のコマンドで作成するまで存在しません。
touch .bash_aliasesこのコマンドは、".bashu alias "ファイルをgeditエディターで開きます。
gedit .bash_aliases3つのエイリアスを追加しました。1つ目は、先ほど使用したclsのエイリアスです。次にhというのがありますが、これはhistoryコマンドを呼び出す略語です。
3つ目のエイリアスは、「File Type Count」の略である「ftc」です。
このエイリアスはより複雑であるため、一重引用符で囲まれている。パイプで結ばれた一連のコマンドを使用します。さまざまなファイル拡張子やディレクトリ名のソートされたリストを生成し、各リストの項目にはカウントが設定されています。
関連:Linuxでのパイプの使い方
.bashu aliases" ファイルを保存するとき、エイリアスが有効でアクセス可能であることを期待することができます。ということはありません。Bashシェルは、エイリアス定義が有効になる前に、このファイルを読み込む必要があります。これは、対話型シェルが開かれるたびに行われます。
また、バッシュシェル内蔵のものを使うこともできます。ファイルからコマンドを読み込んで実行する。.bashrc」を処理する際に「.bashu alias」ファイルを読み込むので、「.bashrc」を呼び出してテストを実行することになります。こうすることで、「.bashrc」から「.bashanthus alias」ファイルが呼び出され、エイリアスが有効であることを確認することができるのです。
以下のコマンドを使用します。
gedit .bash_alias.bashu alias "ファイルを編集します。
. .bashrcこれは、「.bashrc」にあるコマンドを読み込んで実行し、「.bashui alias」を呼び出すものです。
ftcこれは、ftcのエイリアスを呼び出します。
エイリアスが反応するということは、Bashが「.bashrc」と「.Bashu aliases」を読み込んで、新しいエイリアスがアクティブになったことを意味します。
これで、新しいエイリアスを「.bashētu aliases」ファイルに追加して行くことができます。もし、1度や2度では済まないようなことがあれば、別名をつけることを検討してください。
BAshがエイリアスを認識しないように、エイリアスを削除するコマンドもあります。爽やかでわかりやすい、unaliasと呼ばれるコマンドです。
使用するには、Bashに忘れさせたいエイリアスの名前を指定します。Bashにftcのエイリアスを忘れさせるには、以下のunaliasを使用します。
unalias ftc定義されたエイリアスおよび事前に定義されたエイリアスは、unaliasを使用して削除することができます。
システムからすべてのエイリアスを削除するには、-a(all)オプションを使用します。
unalias -aしかし、バッシュの記憶喪失は永久に続くわけではない。次にターミナルウィンドウを開くと、「忘れた」エイリアスが戻ってきます。本当に取り除くには、".bashrc "と".bashanthus alias "ファイルから削除する必要があります。
もし、元に戻したい場合は、".bashrc "ファイルから削除しないでください。代わりに、各エイリアス行の先頭にハッシュを追加してコメントアウトしてください。.bashu alias "ファイルを無効にするには、ファイル名を変更します。.bashrc」ファイルに表示されない場合は、読み込まれません。この手順を逆にすれば、エイリアスを復元するのは簡単です。
エイリアス同様、bashshell関数も".bashrc "ファイルで定義することができますが、独自の定義ファイルに記述したほうがすっきりすることが多いようです。.bashu alias "にならって "bashu functions "と命名しました。
つまり、「.bashrc」ファイルに定義を読み込むように指示する必要があるのです。.bash</a> aliases "ファイルから読み取ったコードスニペットをコピーし、修正することができます。geditを起動し、以下のコマンドで「.bashrc」ファイルを読み込みます。
gedit .bashrc以下のハイライト部分を追加する必要があります。
エイリアスセクションをハイライトしてCtrl+Cを押し、新しいセクションが必要な場所に移動してCtrl+Vを押し、テキストのコピーを貼り付けることができます。あとは、".bash⇄エイリアス "を".bash⇄関数 "に変更するだけです。
この変更を保存して、geditを閉じればいいのです。
ここでは、「.bash_gu functi*** 」ファイルを作成・編集し、その中に関数定義を配置することにします。
touch .bash_functi*** gedit .bash_functi***これで、空の「.bashu functi*** 」ファイルがgeditで開かれます。
upはコマンドラインの引数、つまり数字を1つだけ受け取ります。だから何度も。そのため、コマンドで
up 2cd.を2回呼び出すと、ディレクトリツリーで2階層上に移動します。
関数を定義する方法はいろいろあるが、ここではその一つを紹介する。
function up() {ワード機能はオプションです。伝統主義者なら使えばいいし、入力するのが面倒なら使わなくていい。
以下、geditにあるものをそのまま掲載します。
function up() {これは、関数定義の始まりを意味し、関数の名前を上げる。
levels=$1これは、levelsという変数を作り、それを最初のパラメーターの値に設定します。このパラメータは、関数が呼び出されたときにユーザーから提供された番号になります。$1 は "最初のコマンドライン引数" を意味します
while [ "$levels" -gt "0" ]; doこれは、"levelsの値が0より大きいとき、ループの本体に含まれるアクションが実行される "と解釈できる。
ループの内部では、2つのコマンドを用意しています。
cd ..ディレクトリツリーで1つ上の階層に移動する。
levels=$(($levels - 1))レベルを現在の値より1つ小さい新しい値に設定する。
その後、ループの先頭に戻り、再びlevelsとzeroの値を比較する。levels が 0 よりも大きい場合、ループ本体が再度実行される。0より大きくなければループは終了し、done文にジャンプして関数は終了します。
これらの変更を保存して、geditを閉じます。
.bashrc "にあるコマンドを読み込んで実行します。".bashui function "ファイルにあるコマンドを読み込んで実行する必要があります。
. .bashrcこの機能は、ディレクトリツリー内のある場所に移動し、upを使ってディレクトリツリー内の「上位」ポイントに戻ることで試すことができます。
cd ./work/backup/ up 2ディレクトリツリーを2階層上に移動させました。
エイリアス・スイートや関数ライブラリーを構築する際、特定のコマンドがエイリアスなのか関数なのかを覚えておくのは難しいものです。typeコマンドを使えば、このことを思い出すことができる。クールなのは、その定義も確認できることです。
ftcのaliasとup関数でtypeを使ってみよう。
type ftc type upそれぞれがどのようなコマンドで、どのように定義されているのか、非常に有用なヒントを得ることができます。
エイリアスや関数は、コマンドラインの使用を大幅にスピードアップさせることができます。これらは、コマンドシーケンスを短縮したり、標準的なコマンドで常に使用されるオプションをベイクすることができます。
素敵なワンライナーや便利な関数を見かけたら、それを微調整してパーソナライズし、".bashētu alias" や ".bashētu function" ファイルに追加してください。