Linuxシェルプログラミング学習記31:aliasとunalias操作コマンドのエイリアス

目次

  1. 0 まえがき
  2. 1 エイリアスの定義
  3. 2 エイリアスを表示する
    1. 2.1 すべてのエイリアスを表示する
    2. 2.2 エイリアスの表示
      1. 2.2.1 エイリアス エイリアス
      2. 2.2.2 エイリアス | grep エイリアス文字列
      3. 2.2.3 Ctrl+Alt+E キーの組み合わせを使用する
  4. 3 ウナリアス: エイリアスの削除
  5. 4 エイリアスではなくコマンド自体を実行する方法
    1. 4.1 方法 1: Ctrl+Alt+E キーの組み合わせと & unalias を使用する
    2. 4.2 方法 2: コマンドの前にコマンドファイルの絶対パスを追加する
    3. 4.3 方法 3: コマンドの前に相対パスを追加する
    4. 4.4 方法 4: コマンドの前にバックスラッシュを追加します\
  6. 5 エイリアスを永続的にする方法
  7. 6 一重引用符の使用が推奨されるのはなぜですか?
  8. 7 参考文献

0 まえがき

DOS には doskey コマンドがあることに注意してください。doskey コマンドを使用してマクロを定義できます。マクロの実行優先順位は最も高く、DOS の組み込みコマンドよりも高くなります (DOS でのコマンド実行優先順位は高から低の順にあります)。 : マクロ コマンド、DOS 内部コマンド、com 拡張子を持つ実行可能プログラム、exe 拡張子を持つ実行可能プログラム、bat 拡張子を持つバッチ プログラム)。

これは、定義したマクロの名前が dos の組み込みコマンド (dir など) と同じである場合、コマンド ラインに dir と入力すると、システムは dos の組み込みコマンドではなくマクロを最初に実行することを意味します。これにより、内部のコマンド機能の方法を変更する機会が得られます。

では、Linux にも同様の機能があるのでしょうか?

1 エイリアスの定義

Linux では、alias コマンドを使用してコマンド エイリアスを定義します。形式は次のとおりです。

エイリアス [コマンドエイリアス[=値]]

変数の定義と同様に、コマンド エイリアスを定義するときは、次の点に注意してください。

  • 等号 (=) の前後にスペースを入れることはできません。スペースを入れないと比較となり、構文エラーが発生します。
  • 値にスペースまたはタブが含まれる場合は、値を一重引用符または二重引用符で囲む必要があります (一重引用符を推奨)

2 エイリアスを表示する

2.1 すべてのエイリアスを表示する

すべてのエイリアスを表示するには、オプションやパラメーターを指定せずに、alias コマンドを直接入力します。

purpleEndurer @ bash $エイリアス
エイリアス egrep='egrep --color=auto'
エイリアス fgrep='fgrep --color=auto'
エイリアス grep='grep --color=auto'
エイリアス l.='ls -d .* --color=auto'
エイリアス ll='ls -l --color=auto' ;
エイリアス ls='ls --color=auto'
purpleEndurer @ bash $

現在 6 つのコマンド エイリアスが定義されています 

2.2 エイリアスの表示

エイリアスを表示するにはいくつかの方法があります。

2.2.1 エイリアス エイリアス

例 2.2.1.1 abc という名前のエイリアスを表示するには、コマンド alias abc を使用します。

purpleEnduler @ bash $エイリアス abc
bash: エイリアス: abc: 見つかりません

 

abc という名前のエイリアスがシステムに存在しないため、システム フィードバックは見つかりません。

例 2.2.1.2 ls という名前のエイリアスを表示するには、コマンド alias ls を使用します。

purpleEnduler @ bash $エイリアス ls
エイリアス ls='ls --color=auto'

コマンドラインで使用する ls コマンドは、実際にはパラメーターを備えた ls コマンドであることがわかります。

これは、一部のコマンド オプションが頻繁に使用されるが、そのコマンドのデフォルト オプションではない場合、エイリアスを定義できるため、それらのオプションを毎回入力する必要がないことを意味します。

  • 注: エイリアス ビューのエイリアスはワイルドカードをサポートしていません

たとえば、l で始まるすべてのエイリアスを検索するには、次のようにします。

purpleEnduler @ bash $エイリアス l*
bash: エイリアス: l*: 見つかりません

2.2.2 エイリアス | grep エイリアス文字列

たとえば、ls を含むすべてのエイリアスを検索したいとします。

purpleEnduler @ bash $エイリアス | grep ls*
エイリアス egrep='egrep --color=auto'
エイリアス fgrep='fgrep --color=auto& #39;
エイリアス grep='grep --color=auto'
エイリアス l.='ls -d .* --color=auto'
エイリアス ll='ls -l --color=auto'
エイリアス ls=' ;ls --color=auto'
purpleEnduler @ bash $

grep は正規表現をサポートしているため、正規表現を使用して修飾されたコマンド エイリアスを取得することもできます。

例 2.2.2.1 ls で始まり、その後に文字、数字、アンダースコア、または漢字が続くコマンド エイリアスを取得します。

purpleEnduler @ bash $ エイリアス | grep "\bls\w*="
エイリアス ls='ls --color=auto'

コマンド内の文字列「\bls\w*=」は正規表現です。ここで、

  1. \b は単語の先頭または末尾に一致します
  2. \w 文字、数字、アンダースコア、または漢字

この方法では、一致するコマンド エイリアスが 1 つだけ見つかります。

例 2.2.2.2 l で始まり、その後に文字、数字、アンダースコア、または漢字が続くコマンド エイリアスを取得します。

purpleEnduler @ bash $ エイリアス | grep "\bl\w*="
エイリアス ll='ls -l --color=auto'
エイリアス ls= 'ls --color=auto'

これにより、一致するコマンド エイリアスが 2 つ見つかります。

例 2.2.2.3 l で始まり、その後に改行文字を除く任意の文字を続けることができるコマンド エイリアスを取得します。

purpleEnduler @ bash $ エイリアス | grep "\bl.*="
エイリアス l.='ls -d .* --color=auto'
エイリアスll='ls -l --color=auto'
エイリアス ls='ls --color=auto'

コマンドの正規表現「\bl.*=」

  • . は改行文字を除く任意の文字を表します

2.2.3 Ctrl+Alt+E キーの組み合わせを使用する

ターミナルのコマンド ラインにコマンドを入力した後、Ctrl+Alt+E キーの組み合わせを押します。エイリアスが設定されている場合は、そのエイリアスが自動的に実際のコマンドになります。

例 2.2.3.1 ターミナルのコマンド ラインで、まずコマンド エイリアスを入力して現在のコマンド エイリアスをすべて表示し、次にコマンド ls を入力して Ctrl+Alt+E を押します。実際のコマンドを確認するには

purpleEnduer @ bash $ エイリアス
エイリアス alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)」 "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;& ;|]\s*alert$//'\'')"'
alias egrep='egrep --color =auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color =auto'
エイリアス l='ls -CF'
エイリアス la='ls -A'< /span> --color=autols purpleEnduer @ bash $  エイリアス ls='ls --color=auto'
エイリアス ll='ls -alF'

 

まず、コマンド ラインに alias と入力して、現在のコマンド エイリアスをすべて表示します。ls コマンド エイリアスに対応する実際のコマンドが 'ls --color=auto' であることがわかります。

次に、コマンド ラインに ls と入力し、Ctrl+Alt+E を押します。このとき、コマンド ラインのコマンドは ls --color=auto になります。

知らせ:

  • このショートカット キーはすべての端末で利用できるわけではありません。一部の端末のショートカット キーはこのショートカット キーと競合するため、この方法は機能しません。

3 ウナリアス: エイリアスの削除

定義されているコマンド エイリアスが多すぎると、利便性ではなく問題が生じることがよくあります。したがって、エイリアスを削除する方法も習得する必要があります。

エイリアスを削除するには、una​​lias コマンドを使用できます。コマンド形式は次のとおりです。

ウナリアス [-a] エイリアス 1 [エイリアス 2 ...]

で:

  • -a オプションは、定義されているすべてのコマンド エイリアスを削除します。

例 3.1 コマンド エイリアス egrep を削除する

purpleEndurer @ bash $ エイリアス
エイリアス egrep='egrep --color=auto'
エイリアス fgrep='fgrep --color=auto'
エイリアス grep='grep --color=auto'
エイリアス l.='ls -d .* --color=auto'
エイリアス ll='ls -l --color=auto' ;
エイリアス ls='ls --color=auto'
purpleEndurer @ bash $ unalias egrep
purpleEndurer @ bash $ エイリアス
エイリアス fgrep='fgrep --color=auto' purpleEndurer @ bash $  エイリアス ls='ls --color =auto' エイリアス ll='ls -l --color=auto' エイリアス l.='ls -d .* --color=auto& #39;
エイリアス grep='grep --color=auto'



まず、alias コマンドを使用して、現在のすべてのコマンド エイリアスを表示します。

次に、コマンド unalias egrep を使用してコマンド alias egrep を削除します。

現在のすべてのコマンド エイリアスを表示するには、alias コマンドを再度使用します。今回は、コマンド エイリアス egrep が表示されなくなります。

例 3.2 コマンド エイリアスの egrep、fgrep、grep を削除する

purpleEndurer @ bash $ エイリアス
エイリアス egrep='egrep --color=auto'
エイリアス fgrep='fgrep --color=auto'
エイリアス grep='grep --color=auto'
エイリアス l.='ls -d .* --color=auto'
エイリアス ll='ls -l --color=auto' ;
エイリアス ls='ls --color=auto'
purpleEndurer @ bash $ unalias egrep fgrep grep
purpleEndurer @ bash $ エイリアス
エイリアス l.='ls -d .* --color =auto'
エイリアス ll='ls -l --color=auto'
エイリアス ls='ls - -color=auto'
purpleEndurer @ bash $ 

 

まず、alias コマンドを使用して、現在のコマンド エイリアスをすべて表示します。コマンド エイリアス egrep、fgrep、および grep が表示されます。

次に、コマンド unalias egrep fgrep grep を使用して、コマンド エイリアス egrep、fgrep、および grep を削除します。

現在のすべてのコマンド エイリアスを表示するには、alias コマンドを再度使用します。今回は、コマンド エイリアスの egrep、fgrep、および grep が表示されなくなります。

例 3.3 すべてのコマンド エイリアスを削除する

purpleEnduler @ bash $ エイリアス
エイリアス l.='ls -d .* --color=auto'< /span>エイリアス< /span> purpleEndurer @ bash $  purpleEndurer @ bash $ unalias -a purpleEndurer @ bash $ エイリアス ls='ls --color=auto' ;
エイリアス ll='ls -l --color=auto'



まず、alias コマンドを使用して、現在のコマンド エイリアスをすべて表示します。コマンド エイリアス l.、ll、および ls が表示されます。

次に、コマンド unalias -a を使用して、すべてのコマンド エイリアスを削除します。

現在のすべてのコマンド エイリアスを表示するには、alias コマンドを再度使用します。今回は、コマンド エイリアスは表示されません。

4 エイリアスではなくコマンド自体を実行する方法

エイリアスは便利ですが、欠点もあります。たとえば、定義されたエイリアスがたまたまコマンドと同じ名前だった場合、そのエイリアスは常に地獄で実行されます。

この場合、エイリアスではなく実際のコマンドを実行したい場合はどうすればよいでしょうか?この問題を解決するには 4 つの方法があります。

4.1 方法 1: Ctrl+Alt+E キーの組み合わせと & unalias を使用する

ターミナルのコマンド ラインにコマンドを入力した後、Ctrl+Alt+E キーの組み合わせを押します。エイリアスが設定されている場合、そのエイリアスが自動的に実際のコマンドになります。実際のコマンドが実行したいものと一致しない場合は、次のようになります。 we unalias を使用してエイリアス定義を削除できます。その後、実際のコマンドを入力して実行します。

4.2 方法 2: コマンドの前にコマンドファイルの絶対パスを追加する

たとえば、pwd コマンドの機能は、現在の作業ディレクトリを表示することです。

コマンド alias pwd='ls' を使用して変数エイリアスを定義する場合は、「pwd」と入力して Enter キーを押します。表示されるのは、ls コマンドの実行結果です。

この時点で元の pwd コマンドの実行を継続したい場合は、コマンドに対応するファイルの絶対パスを pwd コマンドの前に追加できます。つまり、/ビン/パスワード

purpleEnduer @sh /bin $ pwd
/bin
purpleEnduer @sh /bin $ dd hostname netstat sh zcat /bin/bin/pwd purpleEnduer @sh / bin $ dnsdomainname 1inux32 ping su dmesg kill pidof stty df ipcalc nice sleep date gzip mv setarch watch cpio gunzip mount sed vi cp grep more rpm usleep ch自分の getopt mktemp rmdir 解凍  chmod fgrep mknod rm uname chgrp fdflush mkdir rev umount 猫 false ls pwd true busybox.suid egrep login ps touchbusybox echo ln printeny tarash dumpkmap 1inux64 ping6 syncpwd purpleEnduer @sh /bin $ エイリアス pwd='ls'
















 

4.3 方法 3: コマンドの前に相対パスを追加する

絶対パスを追加するだけでなく、相対パスを使用することもできます。

例えば:

pwd コマンドを実行すると、現在の作業ディレクトリが /home/tc であることが表示されます。

コマンド alias pwd='ls' を使用して変数エイリアスを定義する場合は、「pwd」と入力して Enter キーを押します。表示されるのは、ls コマンドの実行結果です。 /home/tc にはファイルとディレクトリがないため、コマンドは結果を表示しません。

pwd コマンドに対応するファイルは /bin にあります。

この時点で絶対パスを追加するだけでなく、元の pwd コマンドの実行を継続したい場合は、/bin/pwd

相対パス、つまり ../../bin/pwd を追加することもできます。 

purpleEnduer @sh ~ $ pwd
/home/tc
purpleEnduer @sh ~ $ a purp leEnduer @sh $ /home/tc /bin/pwd purpleEnduer @sh $  /home/tc../../bin/pwd purp leEnduer @sh $ pwdlias pwd='ls'

 

 

パープル by Enduer @sh 

 絶対パスを使用するか相対パスを使用するかは、主にどちらが短いかによって決まります。そのため、一部の文字が失われる可能性があります^_^

4.4 方法 4: コマンドの前にバックスラッシュを追加します\

例えば:

pwd コマンド エイリアスが存在する場合、実際の pwd コマンドを実行したい場合は、次のコマンドを使用できます。\pwd

purpleEnduer @sh ~ $ pwd
/home/tc
purpleEnduer @sh ~ $ purpleEnduer @sh $ /home/tc\pwd purpleEnduer @sh ~ $ -sh: /pwd: 見つかりません/pwd purpleEnduer @sh~$ pwd purpleEnduer @sh $ エイリアス pwd='ls'





 

5 エイリアスを永続的にする方法

alias コマンドで設定したエイリアスは、現在のシェルでのみ使用できます。システムを再起動すると、新しく設定したエイリアスは無効になります。

エイリアスを永続的に有効にしたい場合は、すべてのエイリアスを ($HOME) ディレクトリの .alias ファイルに追加する必要があります。

このファイルがシステムに存在しない場合は、作成できます。

次に、このコードを .bashrc ファイルに追加します。

# エイリアスを追加します
if [ -f ~/.alias ];その後
  。 ~/.alias
フィ

この設定後は、システムがどのように再起動されたとしても、.alias 内のエイリアスは有効になります。

6 一重引用符の使用が推奨されるのはなぜですか?

環境変数 PWD は現在の作業ディレクトリの絶対パスを保存し、それを使用して現在の作業ディレクトリを理解できます。

まず、次のコマンド シーケンスを見てみましょう。

purpleEnduler @ bash ~ $ echo $PWD
/home/csdn

現在の作業ディレクトリが /home/csdn であることがわかります。

次に、エイリアス mypwd="echo $PWD" を定義し、次を実行します。

purpleEndurer @ bash ~ $ エイリアス mypwd="echo $PWD"
purpleEndurer @ bash ~ $ mypwd
/home/csdn

エイリアス mypwd を実行した結果は、echo $PWD コマンドと同じになります。

次に、現在の作業ディレクトリを /home/csdn/a に変更します。

purpleEnduler @ bash ~ $ cd a

コマンド echo $PWD を実行します。


purpleEndurer @ bash ~/a $ echo $PWD
/home/csdn/a

コマンドの実行結果は正しいです。

エイリアス mypwd をもう一度試してください。


purpleEndurer @ bash ~/a $ mypwd
/home/csdn

結果は間違っています。

何か問題があるのはなぜですか?まず、エイリアス mypwd によって実際に実行されるコマンドを見てみましょう。


purpleEndurer @ bash ~/a $ エイリアス mypwd
エイリアス mypwd='echo /home/csdn'

見えますか?エイリアス mypwd を定義するときに二重引用符を使用したため、システムはこのエイリアスの作成時に p 文字列 $PWD を保持せず、値 PWD /home/csdn に置き換えました。

このようにして、現在の作業ディレクトリがどのように変更されても、エイリアス mypwd には常に /home/csdn が表示されます。

理由がわかったら、一重引用符を使用した定義に切り替えて、mypwd によって実行される実際のコマンドを確認します。

purpleEnduler @ bash ~/a $ エイリアス mypwd='echo $PWD'

purpleEndurer @ bash ~/a $ エイリアス mypwd
エイリアス mypwd='echo $PWD'

一重引用符を使用して定義すると、$PWD は正常に保存され、その値で置き換えられません。

このエイリアスを再度実行してみましょう。

purpleEndurer @ bash ~/a $ mypwd
/home/csdn/a 

今度は実行結果が正しくなりました。

7 参考文献

ドスキー | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/doskey

おすすめ

転載: blog.csdn.net/Purpleendurer/article/details/134642886