Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

UNIX(Linux)
入門編

  1. UNIX(Linux)とは
  2. ディストリビューションとは
  3. CentOSとMacOSとCUIについて
  4. 仮想化ソフトウェアを使ったCentOSのインストールとMacOSのCUI環境について
  5. ログインとrootユーザーとシャットダウン等について
  6. コマンドの構造と注意点について
  7. ファイルシステムとカレントディレクトリの移動と表示(cdとpwd)について
  8. 各主要ディレクトリの解説とディレクトリ等の内容表示(ls)について
  9. ちょっと高度なディレクトリの移動(cd)とパスについて
  10. 『ls』コマンドの応用(1)とドットファイルについて
  11. 『ls』コマンドの応用(2)
  12. タブキーを使った入力補完について
  13. ディレクトリの作成方法(mkdir)について
  14. ファイルの簡易作成(touch)とファイルについて
  15. 標準入出力とリダイレクション(>と>>)を使ったファイル生成とechoとcatについて
  1. ファイルとディレクトリの削除(rm)について
  2. ファイルとディレクトリのコピー(cp)について
  3. ファイルとディレクトリの移動と名前変更(mv)について
  4. viエディタとは
  5. viの基本的な使い方(1)
  6. viの基本的な使い方(2)
  7. ターミナル(sshとTera Term)を使ったリモート操作について
  8. ソフトウェアのインストール方法(yumとパッケージ管理ツール)について
  9. ユーザーの概要と確認と追加と切り替え(adduserとsu)について
  10. ユーザーのパスワードと削除と更新と管理者権限での実行(passwdとuserdelとusermodとsudo)について
  11. グループの概要と確認方法(groups)について
  12. グループの追加と削除と設定変更(groupaddとgroupdelとgroupmod)とユーザー追加方法について
  13. パーミッション(権限)について
  14. パーミッションの設定方法(chmodとchown)について
  1. トップページ
  2. UNIX(Linux)入門編 - タブキーを使った入力補完について

タブキーを使った入力補完について

みなさまどうもおはこんばんちわわでございます。

さてこれまでCentOSくんをCUIでちょいちょいイジイジしてきているわけでございますがマウスとかでちょいちょいイジイジできるGUIと違って「CUIって操作というかタイピングがちょっとてぇーへんだぜ...(*´ω`*)」って気持ちになっちゃいますよね。

多分プログラミングとかじゃないと使わない記号とかもかなり出てくるので「ぶっちゃけブラインドタッチすら中々きびCデス٩( 'ω' )و」って人もかなり多いのではと思います。

さて、そんな悩める皆さんにこれまで紹介していなかった超優秀な子を1人ご紹介したいと思います。それは『タブキー』(tabキー)くんでございます。はい、皆さんのキーボードの左側に居るであろうそこの可愛い子でございます。

なんとUNIX系OSではこの『タブキー』くんを使うと『入力補完』する事ができます。なので今回はその補完機能について色々と試してみましょう。ちなみに『タブキー』を使って補完するので『TAB補完』とか『タブ補完』なんて呼ばれることもありますね。

さてではちょいとCentOSを開いてログインしてみて下さい。カレントディレクトリはどこでもOKでございます。

そして補完機能を試す為に今回もコマンド、『ifconfig』くんを紹介したいと思います。この子はネットワーク系のインターフェース(コネクタとか端子とか)の情報を確認したりできるコマンドなのでございます。

んでこのコマンドの使い方は以下のように

[root@localhost ~]# ifconfig

「ifconfig」って叩けばOKなのですがちょいと「ifco」だけ打ち込んで見て下さい。以下のような感じですね。

[root@localhost ~]# ifco

そしてこの状態で『タブキー』を1回ぽんっと押すと

[root@localhost ~]# ifconfig

なんとコマンドを補完してくれました。あとはエンターキーをバシッと押せば実行できる感じになります。

んで今回の補完では『タブキー』を1回押すだけで補完してくれましたがこの際に補完出来る候補が複数存在した場合は1回の『タブキー』だけでは補完することは出来ません。なのでちょいとその動作を確認してみましょう。

まずCentOSのデフォルトの状態で「ifco...」と続くコマンドは『ifconfig』のみになるのですが「ifc...」になると『ifconfig』の他にもう1つ『ifcfg』コマンドという子が居ます。そんでもって「ifc」とだけ打ち込んで『タブキー』を1回だけ押すとどうなるのかというとこうなります。

[root@localhost ~]# ifc

はい、何も起こらない感じですね。サウンドをONにしていた場合はピープー音が鳴ったかと思いますがまだこの段階では補完は行われません。

んでもう1回『タブキー』を押すと今度はこうなります。

[root@localhost ~]# ifc
ifcfg     ifconfig

補完候補を教えてくれていますね。こんな感じで『タブキー』を2回押す、っていうのがポイントです。

んでこのまま『ifconfig』を実行したい場合はこの出力結果を参考にスペルを確認しつつまた再度『タブキー』を1回押せばOKです。

もういっちょ試してみましょう。コマンドで「i」から始まるものは沢山あるわけなのですが「i」だけ打ち込んだ状態で補完しようとすると以下のような感じになります。

[root@localhost ~]# i
i386                     initctl                  ipmaddr
iconv                    insmod                   iptables
iconvconfig              insmod.static            iptables-1.4.7
iconvconfig.x86_64       install                  iptables-multi
id                       install-info             iptables-multi-1.4.7
idn                      installkernel            iptables-restore
if                       ionice                   iptables-restore-1.4.7
ifcfg                    ip                       iptables-save
ifconfig                 ip6tables                iptables-save-1.4.7
ifdown                   ip6tables-1.4.7          iptables-xml
ifenslave                ip6tables-multi          iptables-xml-1.4.7
ifup                     ip6tables-multi-1.4.7    iptunnel
igawk                    ip6tables-restore        iscsi-iname
in                       ip6tables-restore-1.4.7  iscsiadm
indxbib                  ip6tables-save           iscsid
info                     ip6tables-save-1.4.7     iscsistart
infocmp                  ipcalc                   iscsiuio
infokey                  ipcmk                    isosize
infotocap                ipcrm
init                     ipcs

沢山の候補がありますがどどーっと教えてくれていますね。この後は『ifconfig』の時と同じようにスペルを確認しつつ目的のコマンドを打ち込んでしまえばOKです。

結構コマンドって長年やってても普段使わないやつはすぐ忘れてしまったりすることが多いのですが「コマンド忘れちったー!(*'▽'*)」となってもこの補完機能の存在を知ってれば全く問題にはなりません。OSくんはほんと良い仕事をしてくれる可愛いやーつでございますね。

あともうお察しかもですが「コマンドがこのOSにインストールされているかどうか」も補完機能を使うことである程度確認することが出来ます。完璧な確認とまではいかないのですが保管機能だけでほぼ把握出来るかと思いますのでそういう目的で使うこともありですね。

続いて『パス』の補完についてです。上記の補完は「コマンドの補完」だったわけなのですが補完機能はコマンドに渡す『パス』なども対応してくれるので超便利でございます。

というわけでちょいと試してみましょう。これまで出てきた『ls』コマンドくんを使ってみます。

まず「ls」と打ち込んでそこに半角スペースを置きます。

[root@localhost ~]# ls 

そこに更に「/r」とだけ打ち込んでみます。

[root@localhost ~]# ls /r

そして『タブキー』を押すとあらふしぎ。

[root@localhost ~]# ls /root/

なんと『/root/』と補完してくれました。とっても便利でございますね。

続いて候補が複数あった場合ですがこれもコマンドの時と同じように『タブキー』を2回押すことで候補を出力してくれる感じになります。以下は「ls /s」と打ち込んで『タブキー』を2回押した場合のサンプルです。

[root@localhost ~]# ls /s
sbin/    selinux/ srv/     sys/

またもやどどーっと教えてくれていますね。使い方は先程と変わらないので同じようにスペルを確認しつつ入力していけばOKです。

CentOSの初期状態のこの補完機能は『シェル』の1つである『bash』というものに実装されている機能なのですが、『シェル』によっては補完候補が複数存在した場合に『タブキー』を1回押すごとに補完候補を上から順番に入力状態にしてくれる場合があります。著者が長年愛用している『zsh』なんかはこれになりますね。

動作としては以下のような感じになります。

まずカレントディレクトリはどこでもOKなのですが適当に「vi」とだけ打ち込んで『タブキー』を1回押します。するとこんな感じで

[@:~]$ vi
VirtualBox  vi          view        vifs        vim         vimdiff     vimtutor    vipw        vis         visudo

「vi...」に該当するコマンドがざざっと出力してくれるのですがそこで更に『タブキー』を押すと

[@:~]$ VirtualBox
VirtualBox  vi          view        vifs        vim         vimdiff     vimtutor    vipw        vis         visudo

最初の候補である『VirtualBox』が入力された状態になります。ここで更に『タブキー』を押すと

[@:~]$ vi
VirtualBox  vi          view        vifs        vim         vimdiff     vimtutor    vipw        vis         visudo

今度は次の候補である『vi』が入力された状態になりました。こんな感じで次々と候補を入力してくれるのでタイピングする必要がなくとっても楽ちんです。

『パス』の補完なんかも同じように『タブキー』を連打するだけで入力してくれる感じになりますね。

[@:~]$ ls ~/
Applications/            Desktop/                 Downloads/               Movies/                  Pictures/                VirtualBox\ VMs/
Creative\ Cloud\ Files/  Documents/               Library/                 Music/                   Public/
[@:~]$ ls ~/Applications/
Applications/            Desktop/                 Downloads/               Movies/                  Pictures/                VirtualBox\ VMs/
Creative\ Cloud\ Files/  Documents/               Library/                 Music/                   Public/
[@:~]$ ls ~/Creative\ Cloud\ Files/
Applications/            Desktop/                 Downloads/               Movies/                  Pictures/                VirtualBox\ VMs/
Creative\ Cloud\ Files/  Documents/               Library/                 Music/                   Public/

ここでちょっと注意点なのですが、補完候補を選択している最中に『タブキー』以外のキーを押すと「補完候補が選択済み」として扱われてしまう仕組みになっているのでそこは少しご注意ですね。

例えば補完機能を使って「ls ~/Desktop/」を出力してもらってる最中に左カーソルキーを押すと「~/Desktop」までは入力されたものとして扱われるために末尾の「/」が消され、

[@:~]$ ls ~/Desktop
Applications/            Desktop/                 Downloads/               Movies/                  Pictures/                VirtualBox\ VMs/
Creative\ Cloud\ Files/  Documents/               Library/                 Music/                   Public/

その後にもう一度『タブキー』を押すと「~/Desktop」までは入力されたものとして扱われ、すると候補は「~/Desktop/」のみになるので「ls ~/Desktop/」となり、

[@:~]$ ls ~/Desktop/
Applications/            Desktop/                 Downloads/               Movies/                  Pictures/                VirtualBox\ VMs/
Creative\ Cloud\ Files/  Documents/               Library/                 Music/                   Public/

そこで更にタブキーを押すと今度は「『~/』ではなく『~/Desktop/』の中のディレクトリやファイル」が補完されるようになります。

[@:~]$ ls ~/Desktop/
test/
test.html

言葉で説明するとちょっとややこしいかもですが、実際に使ってみるとどういう動作になるのかがすぐに把握できると思うので色々な状況で補完機能を試してみるとよいかもです。

シェル』とはユーザーが入力したデータを元に色々な橋渡しをしてくれるソフトウェアの事です。「コマンドシェル」とか「コマンドラインシェル」なんて呼ばれることもありますね。

『シェル』について調べてみると「カーネル等に対してインターフェイスを提供する使用ユーザーの為のプログラム群であり〜」みたいに難しく書いてある事が多いのですが、要するにキーボードとかで入力された内容を元に該当するプログラムを実行してくれるソフトウェアだと思って貰えればOKです。

例えば『ls』コマンドを実行させる時の流れって「キーボードで『ls』と打ち込んでエンターキーを押す」ってわけなのですがこの際に「キーボードで『ls』と入力されてエンターキーが押されたら『ls』コマンドのプログラムを実行すること」って処理を行っているのが『シェル』くんになりますね。なので『シェル』くんはほぼ全ての処理の橋渡しをしてくれているとっても優秀かつ偉い子になります。

この『シェル』には沢山の種類があり、最近のUNIX系OSで基本シェルとして導入されてる事が圧倒的に多いのが『bash』(バッシュ)くんになります。

そんでもって著者が長年愛用しているのが『zsh』になりますね。「ジーシェル」、「ズィーシェル」、「ゼットシェル」、「ゼッシェル」、「ゼットエスエイチ」とか呼ばれている子になります。長年使われてる『シェル』なので様々な呼び方をされる子なんですが正式名からすると「ズィーシェル」が正しい呼び名らしいです。

『zsh』はかなり使いやすいので「他の『シェル』も試してみたいぜー」って気分になったら最初に『zsh』を使ってみると良いかもです。インストール方法は検索するとすぐに見つかるはずなので色々と試してみて下さい。

今回紹介した補完機能ですが、初期状態では大文字と小文字を別のものとして扱われてしまっている事が多いので気をつけて下さい。例えば「『ls』コマンドを打ち込みたいぜー」って気分になったときに大文字の「L」でコマンド補完しようと『タブキー』を沢山連打しても『ls』はさっぱり出てきません。

[root@localhost ~]# L

もし大文字と小文字を区別せずに補完したいとなるとちょいと設定が必要&『シェル』によって設定方法が違う感じになりますので現在使っている『シェル』と合わせて検索してみると良いかもです。

例えば現在使っている『シェル』が『bash』なら「bash 大文字 小文字 補完」といった感じですね。

というわけで補完機能のご紹介でしたがいかがでしたでしょうか。

これらは本当に便利な機能というか、これらの補完機能が無いとCUIは非常に使いにくいものになると思います。コマンドはともかく『パス』なんていちいち丸暗記してられないのでこの機能を思いついて創世記から実装しているUNIXくんを作った皆様はほんと素晴らしいでございますね。

続いての記事ではディレクトリの作成方法についてみていきたいと思います。ではではこの辺で失礼致します。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。