bashスクリプトのエイリアスと関数


11

bashシェルのエイリアスと関数の違いを知りたい-どちらをいつ使うべきか。

関数は引数を取ることができるので、関数ははるかに強力です-私は主にネットブックを持ち、エネルギーと処理能力を節約したいので、特にパフォーマンスの違いについてもう少し知りたいですbashの機能を拡張するこの2つの方法の1つです。


1
自己嫌悪する必要はありません。あなたの質問が望まない場合、それは反対票が投じられます。そして、誰かがあなたにあなたの質問を明確にすることを望んでいるなら、彼はコメントでそれを言うでしょう。そして、人々にあなたの投稿を編集することを禁止することは、一種の要点を見逃しているのです。このサイトは、すべての人が編集できるように設計されています。
k0pernikus

私は禁止するつもりはありませんでしたが、彼らがそれを必要と考えるかどうかを明確にする機会を与えてください。私はほとんど知らないトピックについて非常に単純な質問をした経験があり、それから、もっと複雑なことについて尋ねていることを完全に明白であると人々に考えて、欲しいものを尋ねる方法がわからないのを正す。もちろん、このプラットフォームの大きな利点の1つは、ピアが編集できるということです。それを損なうことはしませんでした。あなたのフィードバックをありがとう、私に考えさせました:)
MaxAxeHax

回答:


10

エイリアスはニックネームと考えてください。頻繁に実行するが短くしたいコマンドがあるかもしれません。

例として、コマンドラインでデスクトップに直接行きたいことがよくあるので、これを行うことができます

alias desktop="cd ~/Desktop"

それから、あなたはただタイプしてください

desktop

ターミナルで、それはcd ~/Desktopあなたのために実行されます。

関数にはロジックが含まれています。関数では、いくつかの異なるプログラムを呼び出す場合があります。これは簡単なエコー関数です

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

呼び出すとエイリアスのように見えることがありますが

e Hello

あなたのe()は多くの異なることを起こすことができます。上記は単純な例です。

エイリアスは、単純な使用例のために予約する必要があります。個人的な例- rmこのようにコマンドを置き換えました

alias rm='trash-put'

rmを実行すると、ディスクから削除されるのではなく、ゴミ箱に送られます。これは、重要なファイルを(ときどき)誤って削除する可能性があるターミナルでの不器用さに対応します。

覚えておく必要がある関数はロジックの一部です。通常、関数をスタンドアロンで使用することはありません。大きなスクリプトの一部になります。すべてのファイルを受け取り、それらの名前を豚のラテン語バージョンに変更するスクリプトを想像してみてください。それを行うにはさまざまな方法があることを無視してください。

しかし、実行できることは、ディレクトリ内のすべてのファイルをループして、ファイルパスをRenameAsPigLatin関数に渡すことです。RenameAsPigLatin関数には、数字が関係する追加のロジックが含まれている場合があります。この場合、数字で終わるファイルの名前を変更しないように決定します。

すぐに、それを関数として持つことの利点を確認できます。残りのスクリプトは必要に応じてさまざまなディレクトリをトラバースできますが、関数は奇妙なルールによる名前の変更に集中できます。


2
私の意見では、関数をスタンドアロンで使用する理由はたくさんあります。実際、私はエイリアスとともにいくつかの関数を定義しています。たとえば、cdを同じ名前の関数に置き換えたので、機能を犠牲にすることなく、各cdの後に自動的にlsを実行できます。これは少しのロジックを必要とするため、エイリアスでは実行できません。
Scott Severance

3

エイリアスは、長いコマンドを入力したり、常に同じオプションを繰り返すことを避けるためにコンソールで使用される単純なショートカットです。

古典的な例は次のようになります。

alias ll='ls -l'

Aliasはインタラクティブコンソールでのみ機能し、スクリプトで使用するためのものではありません。

関数はスクリプトまたはコンソールで使用できますが、スクリプトでより頻繁に使用されます。

単に値で置き換えられるエイリアスとは異なり、関数はbashシェルによって解釈されます。

関数はエイリアスよりもはるかに強力であり、非常に複雑なプログラムを構築するために使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.