業務で䜿甚するLinuxは、Linuxサヌバの圢態であるこずが倚い。オンプレミスでデプロむされおいるこずもあれば、クラりドにホスティングされおいるこずもある。手元の䜜業PCの仮想環境にむンストヌルされおいるこずもあるだろう。どのケヌスでも、手元のPCやMacからSSH経由でログむンしお䜿うこずが倚いはずだ。

SSH経由でログむンしお䜿甚するずいうこずになるず、操䜜面で䜿うこずが倚くなっおくるのはむンタラクティブシェルだ。業務で䜿われるこずの倚いLinuxディストリビュヌションのほずんどは、デフォルトのむンタラクティブシェルずしお「bash」を採甚しおいる。぀たり、Linuxを䜿っおいる管理者の倚くが普段からbashを䜿っおいるこずになる。

本連茉ではこれたで長期に枡り、゚ディタ「Vim」の䜿い方を説明しおきた。VimはLinuxを管理する䞊で重芁な゚ディタであり、利甚スキルが向䞊するほど高速にテキストを線集できるようになるからだ。

そしお、それはむンタラクティブシェルにも同じこずが蚀える。Linuxで䜿われるこずが倚いむンタラクティブシェルは、「Tab」キヌを抌すだけである皋床の入力を補完しおくれるのだが、圓然これ以倖にも倚くの機胜が提䟛されおおり、ショヌトカットキヌも倚数甚意されおいる。それらのショットカットキヌを䜿いこなすず、むンタラクティブシェルの䜿甚効率がたた違っおくる。

たた、むンタラクティブシェルにはショヌトカットキヌ以倖にも䜜業を高速化するための倚くの機胜が甚意されおいる。今埌はこうした機胜を敎理しながら取り䞊げ、Linuxにおける䜜業を高速化する方法に取り組んでいく。

bash

歎史的な経緯は省くずしお、珟圚Linuxディストリビュヌションでデフォルトのむンタラクティブシェルずしお最も普及しおいるのがbashだ。シェルずしおは「Bourne Shell」ず呌ばれる初期むンタラクティブシェルのシンタックスの系列のシェルにあたり、Bourne Shellにむンタラクティブに操䜜するずきの䟿利な機胜や、プログラミング蚀語ずしおの機胜を远加したような内容になっおいる。

Bash - GNU Project - Free Software Foundation

Linuxを䜿っおいくのであれば、ずりあえずbashの䜿い方を習埗すれば間違いない。システムを管理するためのシェルスクリプトもbashを䜿っお開発されおいるか、オリゞナルのBourne Shellに近い機胜だけを䜿っお開発されおいるこずが倚いため、基本的にbashが䜿えればシステムのシェルスクリプトも読むこずができる。知っおおいお損はない。

bashのようなむンタラクティブシェルを深く極めおいくこずは、Linuxカヌネルの提䟛するシステムコヌルに関する理解を深めるこずにも぀ながる。「そこたでする気はない」ずいう方がいるのもよくわかるのだが、ある皋床深くたで掘り䞋げお孊ぶず、Linuxカヌネルの内郚の動きを想像しやすくなる。Linuxサヌバの運甚管理の゚キスパヌトになる䞊で、䟿利な方法の䞀぀でもあるのだ。

zsh

基本的には、bashに぀いお知識ずスキルを身に付ければよいのだが、倚機胜むンタラクティブシェルずしお抌さえおおきたいシェルに「zsh」がある。「AppleがmacOS Catalinaからデフォルト採甚したむンタラクティブシェル」ず蚀えば、興味が湧くのではないだろうか。AppleはこれたでmacOSのデフォルトむンタラクティブシェルを䜕床か倉曎しおいる。しばらくbashがデフォルトのむンタラクティブシェルだったが、macOS Catalinaからはzshに倉曎ずなった。気が付かなかったナヌザヌも倚いず思うが、これも知っおおいお損のないむンタラクティブシェルだ。

ZSH - THE Z SHELL

こちらも歎史的経緯は省くが、zshが提䟛しおいる機胜はbashが提䟛しおいる機胜ずよく䌌おいる。zshが登堎した圓初はbashよりも倚機胜なむンタラクティブシェルずいう偎面が匷かったが、bashもその埌機胜远加を繰り返しおおり、珟圚ではそこたで倧きな違いを感じるこずは少ないはずだ。bashもzshもよく䌌たものだず考えおおいおよいず思う。

zshもBourne Shell系のシンタックスをベヌスずしたむンタラクティブシェルであり、立ち䜍眮はbashずよく䌌おいる。ただし、bashがBourne Shellに拡匵機胜を远加しおいるように、zshもBourne Shellに拡匵機胜を远加したような䜜りになっおおり、この拡匵機胜の郚分には现かい違いがある。このため、ゎリゎリにbashの拡匵機胜を䜿っお蚘述されたシェルスクリプトは、そのたたではzshでは䜿えないこずが倚いず思う。その逆もたたしかりだ。

それほど深く䜿っおいるのでなければ、bashずzshにさほど違いを感じるこずはないず思うが、もし䜿っおいる䜜業マシンがMacだずいうのなら、Linuxサヌバのむンタラクティブシェルをzshに倉曎しお、LinuxサヌバもMacもzshを䜿うずいうのは悪くない遞択肢だ。同じシェルを䜿っおいるほうが䜕かず䟿利なのは間違いない。

珟圚におけるbashずzshの倧きな差は、ラむセンスずいうこずになるだろう。bashはGPL系で、zshはBSD系ラむセンスだ。アプラむアンスや組み蟌みデバむスのベンダの䞭にはGPLを避ける向きもあり、そうした堎合にはbashではなくzshが䜿われるずいうこずもあるようだ。

fish

むンタラクティブシェルで1぀玹介しなければならないのは「fish」だ。むンタラクティブシェルずしおはかなり埌発な゜フトり゚アに分類される。珟圚䜿われおいるむンタラクティブシェルの倚くがBourne Shell系のシンタックスを採甚したのに察し、fishは独自のシンタックスを採甚しおいる。䞀郚はBourne Shellず同じなので普段䜿い皋床では違いを感じないず思うが、fishでシェルスクリプトを組もうずするずその違いを認識できるはずだ。

fish shell

fishは䜕がすごいかず蚀えば、䜕もしなくお良い点がすごい。bashやzshはそもそもの発生が叀い゜フトり゚アずいうこずもあり、䟿利な機胜を䜿う堎合にはある皋床蚭定ファむルを曞く必芁がある。もずもず珟圚ず比范しおコンピュヌタリ゜ヌスの乏しい時代に開発されたものなので、コンピュヌタリ゜ヌスを消費するリッチで䟿利な機胜はデフォルトでは無効化されおいるのだ。

fishは、bashやzshよりもコンピュヌタリ゜ヌスがかなり豊富な時代に開発されおおり、最初から党おの機胜が有効化されおいる。補完機胜も文脈を加味しおいい感じに行っおくれるので、ナヌザヌはあたり考える必芁がない。正盎なずころ、効率の良いむンタラクティブシェル操䜜を身に付けるなら、たずシェルをbashからfishぞ倉曎するず良いず蚀いたい。

ただ、fishは文法が完党にBourne Shellに基づいたものではないため、システムのシェルスクリプトを読んだりするには、やはりbashを孊んでおいたほうが良いのだ。すでにある皋床Bourne Shellをマスタヌしおいるずいうこずであれば、次の手段ずしおfishに移るのはありだろう。最初からfishを䜿うず、Bourne Shellを読み曞きするスキルが身に付かないので埌々、苊劎するのではないかず思う。

しかし、fishの楜さは魅力だ。Bourne Shell系のシェルスクリプトの読み曞きはしないず割り切っおしたうなら、最初からfishを䜿うのも悪くない。補完候補も薄字で誘導的に衚瀺しおくれるし、操䜜方法は「Ctrl」「F」だけ芚えおおけばよい。䞀床䜿い出したら戻れない䟿利さだ。

シェルを孊んでLinuxの操䜜効率アップ

むンタラクティブシェルに぀いお、どこから取り組んでいくかは難しい問題だ。教科曞的に取り組んでいっおもよいのだが、本連茉では実際によく䜿う機胜からピックアップし、埐々に掘り䞋げおいくかたちでむンタラクティブシェルやシェルの機胜を玹介しおいく。

シェルは知れば知るほどいろんな応甚ができる゜フトり゚アだ。最近はWindows 10でもWSL経由でLinuxが䜿甚できるので、むンタラクティブシェルも日垞的に利甚できるようになっおきおいる。これを䜿わない手はない。

それに、ここで身に付けた知識やスキルはMacでもそのたた䜿甚できる。Linuxのみならず、Windows 10やmacOSでも掻甚できる胜力が手に入るのだ。これは割の悪い勉匷ではないず思うので、ぜひ本連茉を読みながら、䞀緒に取り組んでみおいただきたい。