数週間前、ターミナルに関するアンケートを実施しました(結果はこちらでご覧いただけます)。最後に次のような質問をしました。

ターミナルを使う上で最もフラストレーションを感じることは何ですか?

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-SuperHyperなし、多くのctrl-ショートカットが不可能、例えばCtrl-,
  • OSがターミナルのキーボードショートカットの使用を妨げる(デフォルトでMac OSがCtrl+左矢印を他の用途に使っているなど)
  • ターミナルでの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) 異なるシステム間でdotfileを同期させること
  • (23) パフォーマンス(例:「シェルの起動が遅すぎる」)
  • (20) ウィンドウ管理(tmuxタブ、ターミナルタブ、複数のターミナルウィンドウの組み合わせで発生する可能性がある。あのシェルセッションはどこに行った?)
  • (17) 一般的に怖さ・不安を感じる(「コマンドで何か謎の悪いことをしてしまい、どう修正・元に戻せばいいのか、そもそも何が起こったのか全くわからないという debilitating な恐怖」)
  • (16) terminfoの問題(「新しいターミナルエミュレータを試したり、別の場所にSSHしたりするときにterminfoについて学ぶ必要がある。」)
  • (16) 画像サポートの欠如(sixelなど)
  • (15) SSHの問題(接続が切れたときに最初からやり直さなければならないなど)
  • (15) さまざまなtmux/screenの問題(例:tmuxとターミナルエミュレータの統合不足)
  • (15) タイポと入力の遅さ
  • (13) さまざまな理由でターミナルが乱れる(Ctrl-Sを押す、バイナリをcatするなど)
  • (12) シェルでのクォート/エスケープ
  • (11) さまざまなWindows/PowerShellの問題

n/a (122)

「特にない」や「ターミナルで何でもできないことだけ」という趣旨の回答も122件ありました。

コメントの例:

ほとんどのフラストレーションに対して回避策を見つけました

以上です!

これらの結果について多くのコメントはしませんが、私に関連があると感じるカテゴリをいくつか挙げます:

  • 構文の記憶と履歴(覚える必要があるのは、以前実行したものであることが多い!)
  • 発見可能性と学習曲線(発見可能性の欠如は、学習を難しくする大きな要因です)
  • 「システムの切り替えが難しい」と「時代遅れに感じる」(30年や40年ほとんど変わっていないツールには多くの問題がありますが、どのようなシステムでも常に存在する傾向があり、それが非常に有用で、使用をやめるのが難しくなります)

これらの結果を合理的な方法で分類してみて、社会科学の研究者のスキルを本当に appreciation しました。