Home

技術系のメモと日々の雑感

もっと bash の補完機能を使い倒す

bash の man ページを見ていたら、補完機能はコマンドやパスだけではなく、シェル変数やユーザ名やホスト名にも使えると書かれていた。
今まで使ったことがなかったのが不思議なぐらいだ。
で、意外と知られてなさそうなので書いておくことにした。
まず、$ で始まる文字列に続けてタブを入力するとシェル変数が補完される。
たとえば echo $HISTS[Tab] といった使い方だ。
当然だけど、タブを2回入力するとリストしてくれる。

# $[Tab][Tab]    ※抜粋
$BASH               $JSERVER            $SHELLOPTS
$BASH_ENV           $LANG               $SHLVL
$BASH_VERSINFO      $LESSOPEN           $SSH_ASKPASS
$BASH_VERSION       $LINENO             $SSH_CLIENT
$CANNA_SERVER       $LINES              $SSH_CONNECTION

set | grep hoge するより簡単だね。
チルダ「~」だとユーザ名の補完。
cd ~ro[Tab] で cd ~root に補完するといった感じだ。
やはり、リストもしてくれる。

# ~[Tab][Tab]    ※抜粋
~adm        ~ftp        ~lp         ~nobody     ~rpcuser    ~uucp
~apache     ~games      ~mail       ~nscd       ~rpm        ~vcsa
~avahi      ~gdm        ~mysql      ~operator   ~shutdown   ~xfs
~bin        ~gopher     ~nagios     ~postfix    ~sshd
~daemon     ~haldaemon  ~named      ~root       ~sync

そして @ の場合はホスト名の補完。
/etc/hosts を参照しているみたいなので、ここに書いてあるホスト名なら、たとえば ssh web@ex[Tab] で ssh web@example.com に補完してくれる。
もちろん、これもタブ2回でリストしてくれる。

# @[Tab][Tab]
@localhost              @hoge                 @hoge.localdomain
@localhost.localdomain  @example.com

で、この3つのパターンに該当しないときに初めて、コマンドやパスの補完が実行されるそうだ。
ちなみに、オライリーの「入門 bash」を見たら最初の方にちゃんと書かれてた。
ずっと昔に読んだはずなのに・・・。

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/11(水) 00:00:22

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/05(木) 20:01:39

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/04(水) 22:55:39

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/29(金) 11:45:46

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/26(火) 06:14:56

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/18(月) 17:30:23

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 09:48:59

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 02:26:24

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 20:12:22

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 17:56:44

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 11:05:16

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 23:53:26

-

管理人の承認後に表示されます

  • From: |
  • 2013/08/24(土) 12:53:07

-

管理人の承認後に表示されます

  • From: |
  • 2013/07/14(日) 19:27:50

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する