ターミナルにまつわる、いくつかの悩み
数週間前、ターミナルについてのアンケートを実施しました(結果はこちらで読めます)。最後に、次の質問をしました。
ターミナルを使っていて、いちばんいら立つことは何ですか?
1600人が回答してくれたので、数日かけて回答をすべて分類することにしました。その過程で、質的データの分類は簡単ではないと学びましたが、できる限り頑張りました。回答をもっと速く分類できるように、専用のツールまで作りました。
いつものアンケートと同じで、方法論は特に科学的なものではありません。MastodonとTwitterにアンケートを投稿し、数日間実施して、たまたま投稿を見て回答したいと思った人から答えを集めただけです。
それでは、悩みの多かったカテゴリーを紹介します!
回答を読むときには、次の点を念頭に置いておくとよいと思います。
- 回答者の40%は、ターミナルを21年以上使っています
- 回答者の95%は、ターミナルを少なくとも4年以上使っています
まったくの初心者から出たコメントではありません。
こちらが、悩みのカテゴリーです。括弧内の数字は、その悩みを挙げた人数です。これは主に自分のためにまとめています。ターミナルについてのzineを書こうとしていて、みんなが何に困っているのかを把握したかったからです。
構文を覚えておくこと(115)
次のようなものの構文を覚えておくのに苦労する、という声がありました。
- awk、jq、sedなどのCLIツールの構文
- リダイレクトの構文
- tmuxやテキスト編集などのキーボードショートカット
コメントの一例です。
すべての機能を使いこなすには、本当にたくさんの細かい「豆知識」を覚えておかなければなりません。何年使っていても、stderrが2なのか1なのか、
>と>>のどちらがどちらなのかを、ときどき忘れてしまいます。
ターミナルを切り替えるのが難しい(91)
システムを切り替えるとき(自宅と職場のコンピューターを切り替えるときや、SSH接続するときなど)に、次のような問題にぶつかるという声がありました。
- OSによるキーボードショートカットの違い(LinuxとMacなど)
- 使い慣れたテキストエディターが入っていないシステム(「vimがない」または「vimしかない」)
- 同じコマンドでもバージョンが違う(Mac OSのgrepとGNU grepなど)
- タブ補完がない
- 使い慣れていないシェル(「zshとbashの微妙な違い」)
同じシステムの中でも、ページャー同士の挙動が一貫していない(git diffのページャーと、それ以外のページャーなど)といった違いがあります。
コメントの一例です。
fishとviモードに慣れてしまったのですが、サーバーやコンテナにSSH接続すると使えません。
色(85)
色に関する問題もたくさんありました。たとえば次のようなものです。
- 明るい背景色では読めない色をプログラムが設定する
- 気に入ったカラースキームを見つけ、それを複数のアプリで一貫して使えるようにするのが難しい
- SSHやtmuxなどを何層も重ねると、その中では色が機能しない
- デフォルトの色が気に入らない
- そもそも色を使いたくないのに、無効にするのに苦労する
このコメントにはとても共感しました。
ターミナルエミュレーターとfishの間で、ターミナルのテーマを適切に設定すること(何年も前に設定したので、面倒で細かい調整が必要だったことは覚えています。今のテーマはちゃんと動いているので、設定をもう一度触るのが怖く、そこから抜け出せない気分です)。
キーボードショートカット(84)
キーボードショートカットについてのコメントの半分は、LinuxやWindowsでは、ターミナルでコピーや貼り付けをするキーボードショートカットが、OSの他の場所と違うというものでした。
コピーや貼り付け以外にも、キーボードショートカットには次のような問題があります。
- ブラウザー上のターミナルで
Ctrl-Wを押すと、ウィンドウが閉じてしまう - ターミナルが対応しているキーボードショートカットの種類が限られている(
Ctrl-Shift-、Super、Hyperが使えない。Ctrl-,のように、多くのctrl-ショートカットも使えない) - OS側の設定によって、ターミナルのキーボードショートカットが使えない(たとえばMac OSでは、デフォルトで
Ctrl+left arrowが別の操作に割り当てられている) - ターミナルでemacsを使うときの問題
- バックスペースが機能しない(2)
コピーと貼り付けに関するその他の問題(75)
「コピーと貼り付けのキーボードショートカットが違う」という話以外にも、コピーと貼り付けにはたくさんの問題がありました。たとえば次のようなものです。
- SSH越しにコピーする
- tmuxとターミナルエミュレーターが、それぞれ違う方法でコピーと貼り付けを行う
- 複数のクリップボード(システムのクリップボード、vimのクリップボード、Linuxの「中央クリック」のクリップボード、tmuxのクリップボードなど)を扱い、必要なら同期する
- ターミナルからコピーすると、関係のないスペースがランダムに追加される
- 複数行のコマンドを貼り付けると、恐ろしいことに自動的に実行されてしまう
- マウスを使わずにテキストをコピーしたい
見つけにくさ(55)
これについてのコメントもたくさんありました。結局のところ、どれも基本的には同じ不満です。有用なツールや機能を見つけるのが難しい、ということです。このコメントが、すべてをうまくまとめていると思います。
独力で学ぶのがどれほど難しいかということです。自分が知っていることの大半は、長年のあいだにたまたま出会った人たちから教えてもらった、雑多な知識の寄せ集めです。
学習曲線が急すぎる(44)
全般的に、学習曲線が急すぎるというコメントもたくさんありました。たとえば次のようなものです。
15年使っているのに、使う速さは5年前、もしかすると10年前とたいして変わりません。
また、こんなコメントもありました。
ショートカットやコマンドをもっと覚えて、ターミナルを設定すれば生活が楽になると分かっています。でも、圧倒されるような気がして、時間をかけて取り組めません。
履歴(42)
シェルの履歴については、次のような問題が挙がりました。
- ターミナルのタブ間で履歴が共有されない(16)
- 履歴の上限が短すぎる(4)
- ターミナルのタブを復元しても、履歴が復元されない
- ターミナルがクラッシュして履歴を失う
- 履歴の検索方法が分からない
コメントの一例です。
どうすればいいのか分かるまでに、かなり時間を無駄にしました。zshの「history」のバッファーがあまりに小さいことには、今でもいら立ちます。十分な長さの履歴を表示するには、「history 0」と入力しなければなりません。
ドキュメントがよくない(37)
次のような話がありました。
- ドキュメント全般が分かりにくい
- manページに例がほとんどない
- manページのないプログラムがある
代表的なコメントはこちらです。
よい例やドキュメントを見つけることです。manページだけでは足りないことが多く、Stack Overflowを延々と探し回ることになります。
スクロールバック(36)
スクロールバックについては、次のような問題がありました。
- プログラムが大量のデータを出力し、スクロールバックの履歴が失われる
- ターミナルのサイズを変更すると、スクロールバックがめちゃくちゃになる
- タイムスタンプがない
- バックグラウンドで起動したGUIプログラムが出力を表示し、他のプログラムの出力の邪魔になる
コメントの一例です。
ターミナルのサイズを変更すると(特に狭くすると)、スクロールバックの内容の再折り返しが壊れてしまうことです。コマンドが、ターミナルウィンドウの幅に合わせて出力を整形しているからです。
「時代遅れに感じる」(33)
レガシーな設計判断に足を引っ張られている、実装の非常に難解な細部まで覚えなければならないことが多い、といったコメントがたくさんありました。たとえば次のようなものです。
レガシーな残骸の大半です。CLIインターフェースをゼロから実装できたら、すばらしいでしょうね。
シェルスクリプト(32)
POSIXシェルスクリプトへの不満もたくさんありました。シェルスクリプトは難しいというのが一般的な感覚ですが、別の、より標準的でないスクリプト言語(fishやnushellなど)に切り替えると、それはそれで別の問題が生じます。
シェルスクリプトです。シェルスクリプトをやめて、スクリプト言語に移行することへの抵抗感はかなり強いです。あまりにも雑然としているのに、強力すぎるんです。失敗すると高くつく可能性があるので、そもそも手を出しません。
その他の問題
少なくとも10回は挙げられた問題を、もう少し紹介します。
- (31)コマンドライン引数に一貫性がない。
-hなのかhelpなのか--helpなのか? - (24)複数のシステム間でdotfilesを同期すること
- (23)パフォーマンス(「シェルの起動に時間がかかりすぎる」など)
- (20)ウィンドウ管理(tmuxのタブ、ターミナルのタブ、複数のターミナルウィンドウを組み合わせて使うこともあります。あのシェルセッションはどこへ行った?)
- (17)全般的に怖い、不安な気持ちになること(「コマンドで謎の悪いことをしてしまい、どう直せばいいのか、元に戻せばいいのか、何が起きたのかさえまったく分からなくなるのではないかという、身動きが取れなくなるほどの恐怖」)
- (16)terminfoの問題(「新しいターミナルエミュレーターを試して、別の場所にSSH接続するとき、terminfoについて学ばなければならないこと」)
- (16)画像に対応していないこと(sixelなど)
- (15)SSHの問題(SSH接続が切れると、最初からやり直さなければならないなど)
- (15)tmuxやscreenに関するさまざまな問題(tmuxとターミナルエミュレーターの連携がないなど)
- (15)タイプミスと入力の遅さ
- (13)さまざまな理由でターミナルがめちゃくちゃになること(
Ctrl-Sを押す、バイナリをcatするなど) - (12)シェルでのクォートとエスケープ
- (11)WindowsやPowerShellに関するさまざまな問題
該当なし(122)
「特にない」あるいは「ターミナルですべてのことができないことだけ」という趣旨の回答も122件ありました。
コメントの一例です。
ほとんど、あるいはすべての不満について、回避策を見つけたと思います。
以上です!
この結果について多くのコメントをするつもりはありませんが、個人的には関係がありそうだと感じたカテゴリーをいくつか挙げておきます。
- 構文を覚えておくことと履歴(覚えておく必要があるのは、以前実行したことのあるものだったりします!)
- 見つけにくさと学習曲線(見つけにくいことは、学ぶのが難しい大きな理由の一つに間違いなくなっています)
- 「システムを切り替えるのが難しい」と「時代遅れに感じる」(30年、40年ほとんど変わっていないツールには多くの問題がありますが、どのシステムを使っていても常にそこにある傾向があり、それはとても便利です。そのため、使うのをやめるのも難しくなっています)
これらすべての結果を、妥当な形で分類しようとしてみて、社会科学の研究者が持つ技術のすごさをあらためて実感しました。
記事をランダムに読む