今日のオンラインの世界では、ユーザーを引き付けるための戦いが激しさを増しており、アプリメーカーはモバイルアプリやウェブアプリを好みます。デスクトップアプリケーションの関連性はますます低くなっています。さらに、それらはリッチWebアプリケーションクライアントにすぎない傾向もあります。Electronは人気のあるプラットフォームです。
これは、デスクトップをプラットフォームとして間もなく放棄することを意味しますか?いいえ、もちろんそうではありません、私はそれを言いません。また、GUIアプリケーションは最近行き詰まっているように見えますが、成長を続けるデスクトップアプリケーションのセグメントがあります。
ハッカーと一緒に映画を見たことがありますか?ほとんどの場合、これらの人々は、ある種の端末を表示しているモニターの前で作業しているように見えます(通常は背景が暗く、前景が明るい)。この端末は、順番に、それらを読んでいる人にとって明らかに何らかの意味を持つ文字で溢れる傾向があります。
行動中のハッカーのそのような描写は、しばしば嘲笑されます プロの開発者 、そして楽しみのために、さまざまな「ハッカー」効果をシミュレートするプログラムもいくつかあります。
ただし、現実の世界では、コマンドラインツールは娯楽的価値のために使用されていません。
この記事では、コマンドラインインターフェイス(CLI)ツールの使用の実用性に焦点を当てています。 CLIコマンドを理解し、高品質のツールを使用すると、生産性が向上し、GUIアプリケーションよりもテキストインターフェイスの方がはるかに実用的な自動化へのさまざまなアプローチへの扉が開かれます。
GUIで繰り返しタスクを実行することで、複数のクリックが1つとして聞こえるまで改善できます。問題は、これでは特殊なスクリプトの効率が向上しないことです。さらに、同じ操作を手動で実行すると、追加の認知的負荷と人的エラーの可能性が高くなります。いつものように、私たちは人間が退屈、反復的、または圧倒的に感じるかもしれないタスクを処理するためにコンピューターに依存しています。
ターミナルツールはいくつかのタイプのインターフェイスを提供できることを知っておく価値があります。のような非インタラクティブな要素があります ls 、パラメータを取得して出力を提供するだけです。パッケージマネージャーで最も頻繁に見られるインタラクティブまたはセミインタラクティブなインターフェイスがあります。 (「未確認のソースからのインストールを続行してもよろしいですか?」)次に、端末の制限内に収まるように設計されたインタラクティブなGUIアプリケーションであるテキストユーザーインターフェイス(TUI)があります。おそらく最も有名なのは 真夜中の司令官 (mc)、非常に人気のあるクローン(90年代から) ノートンコマンダー 。
コンソールの住人になりたい場合は、最小限のコマンドライン開発ツールのセット(必須)を身に付ける必要があります。あなたが絶対に一緒に暮らすことができないものは一つです インタラクティブシェル (便利なラッシュエンディングでモダンなものを目指してください)そして テキストエディタ 。
今、私は言及します UNIX哲学 、これは、意識的かどうかに関係なく、ツールの作成者が行う設計上の決定の基礎となることがよくあります。重要なポイントのいくつかは、次のように要約できます。
ターミナルを開いたときに最初に表示されるのはシェルです。これは、ユーザーとマシン間の相互作用を可能にする部分です。コマンドを解釈し、プログラム名と引数に分解して、コマンドでスローしたすべてのシェルコマンドを実行します。
歴史的に、シェルにはさまざまな種類がありました。最も人気のあるものの中には csh (C Shell)およびさまざまなBourne Shellの実装(一般に単に単に sh )。 BourneShellはKornShellに広がりました。KornShellもある程度の牽引力を獲得し、現在もその愛好家によって使用されています。現在、Cshは一部のBSDシステムのデフォルトのシェルですが、他のほとんどすべてのUNIXライクなオペレーティングシステムは、ある種のBourneShellを好みます。 Linuxディストリビューションは好む傾向があります bash Mac OSXには zsh デフォルトのオプションとして。
他の可能性もありますが、Microsoftを除いて、それほど人気はありません。 パワーシェル Windowsシステムの場合。 PowerShellは、一部はzshなどのインタラクティブなUNIXシェルに、一部は.NETランタイムに触発されています。 UNIXの世界で一般的な概念であるテキストとしてすべてを扱うのではなく、オブジェクト指向のデータ操作を可能にします。
Microsoft PowerShellはWindows環境で非常に人気がありますが、UNIXを起源とする多くのプログラム(最も注目すべきはGit、Autotools、またはMake)は、BourneShellのバリエーションを好む傾向があります。このため、 msys (Git for Windowsに含まれています)、 Cygwin 、または最近の[WSL] マイクロソフト 。 WindowsでLinuxのような感覚が必要な場合は、MSysが最適なオプションです。標準のLinuxバイナリを実行できるフル機能のLinux環境が必要な場合は、WSLが最適です。中間の何かのために:UNIX API、しかしWindows実行可能ファイルとしてコンパイルされます(それが必要な理由が本当にわかっている場合にのみ使用してください)-Cygwinが答えです。
シェルに慣れたら、いくつかの便利なスキルを習得したいと思うでしょう。ほとんどのコーディング作業はテキスト(コード、README、確認メッセージ)の記述を中心に行われるため、インタラクティブなテキストエディターに関する十分な知識が不可欠です。選択できるものはたくさんありますが、エディターは開発者にとって最も必要なツールの1つであるため、どのエディターが最適かについてはおそらく多くの意見があります。
クレジットカード番号を見つける方法
大多数 人気のテキストエディタ 2つの基本的なグループに分けることができます: シンプルなテキストエディタ Y プログラム可能なテキストエディタ 。
どちらもコードの記述には最適ですが、名前が示すように、プログラム可能なものは、ニーズに完全に合うようにエディターを形成およびカスタマイズする機能を提供します。ただし、学習曲線が急になる傾向があり、確立に時間がかかる可能性があるため、これには代償が伴います。
シンプルなテキストエディタの中で、 GNU Nano それは最も普及しています。それは実際にはエディターのクローンです ピーク したがって、一方がシステムで使用できない場合は、もう一方を試すことができます。両方のもう1つのより現代的な代替手段は、エディターです。 マイクロ 。シンプルで拡張可能なものが同時に必要な場合は、ここから始めるとよいでしょう。
多くの開発者は、次のようなさまざまな分野のプログラム可能なエディターに依存しています。 私が来た Y GNU Emacs 。どちらのエディターもコンソールモードまたはGUIモードで実行でき、どちらも他のソフトウェアにあるキーバインディングに影響を与えました。どちらもAPIだけでなく、実際の組み込みプログラミング言語も提供します。 EmacsはLISPに焦点を当てており、Vimは独自のVimLを使用していますが、他の一般的なスクリプト言語(Lua、Perl、Python、Rubyなど)へのインターフェイスも提供しています。また、言及する価値があるのは、Vimへのより最近のアプローチです。 Neovim それは深刻な支持を得始めているので。
紛らわしいかもしれませんが、というエディタもあります 私達 これはVimの前身です(ちなみに、これは「 私達 改善された」)。 Vimよりもはるかに簡単ですが、Vimで書くのに十分な自信があれば、viを使用する必要があると感じたとしても難しいことではありません。
pico / GNUNanoとvi / Vimは通常、さまざまなシステムにプリインストールされているため、少なくともそれらの基本を理解することをお勧めします(Vimを終了することは初心者にとって悪名高い難しい問題です)。このようにして、リモートマシンで何かを編集する必要がある場合、どのエディターが既に存在しているかに関係なく、準備が整います。プライベートデバイスでは、最も快適なエディタを使用できます。
最後に覚えておくべきことは、システムにデフォルトエディタと呼ばれるものがあるかもしれないということです。
環境変数$ EDITOR
デフォルトのエディターを指し、Bourne互換シェル(sh、bash、ksh、zsh)では、 echo $ EDITOR
と入力すると表示されます。値が個人の選択と異なる場合は、export EDITOR = my-awesome-editor
を追加して設定できます。シェルのランタイム構成( ~ / .profile
、~. / Bashrc
、 ~ /. zshrc
など)。
バージョン管理システムやメールクライアントなどの他のプログラムは、より長いテキスト入力が必要な場合にこのエディターを使用します。
CLIで深刻なことを始めるとすぐに、常に1つのアプリしか開いたままにできないという制限に直面します。コーディングするときは、コードを編集して実行し、エラーを修正してから、再度実行することをお勧めします。エラーを探すときは、ログを一覧表示して、サーバーにリクエストを送信したときに何がログに記録されるかを確認することをお勧めします。通常、これは2つのアプリケーションを常に切り替えるか、複数のターミナルウィンドウを開くことを意味します。
これは、ターミナルマルチプレクサが役立つ場合があります。マルチプレクサについて話すとき、一部の人々はすぐにトピックが GNUスクリーン 。これは、この種の最初の拡張ツールであり、今日でも非常に人気があります(デフォルトでインストールされることがよくあります)。その現代的な代替品は tmux これは、当然のことながら、「 t erminal ムー ltiple バツ です。」
これら2つを使用すると、特定のターミナルセッションで複数のウィンドウを開いて、それらのセッションを自由に切り替えることができます。ウィンドウをパネルに分割できるため、複数のアプリケーションを同時に実行し、(ウィンドウを変更せずに)リアルタイムで出力を監視できます。また、これらはクライアントサーバーモードで動作します。つまり、いつでも切り離して後で戻って、中断したところから作業を続行できます。この最後の機能は、人々が永続的なセッションを望んでいたときにScreenの人気につながりました。 IRC 。
ほとんどのユースケースでは、GNU Screenまたはtmuxが最適ですが、何らかの理由でリソースが多すぎることがわかった場合は、より軽い代替手段もあります。がある dtach / atach そして abdQco 。それらは意図的に範囲を制限されていますが、それぞれの任務をうまく遂行することができます。
この時点で、前述のすべてのソフトウェアをマシンにインストールすることを検討し始めることができます。 1つの問題は、各ツールのインストール手順が異なることです。ソースをダウンロードして自分でコンパイルする必要がある場合もあれば、スタンドアロンバイナリを入手する場合もあれば、いわゆるものを入手する場合もあります。 バイナリパッケージ 、これは通常、いくつかのメタデータとともに圧縮された実行可能ファイルを意味します。
ソフトウェアのインストールプロセスを容易にするために、オペレーティングシステムの作成者はパッケージマネージャーの概念を思いつきました。簡単に言えば、パッケージマネージャーはCLIおよびデスクトップアプリのアプリストアのようなものです。これは、実際のアプリストアに数十年先行しています。問題は、ほとんどすべてのシステムに独自のパッケージマネージャーがあることです。 Debian、Ubuntu、GNU / Linuxから派生したディストリビューションはAPTを使用し、Red HatベースのディストリビューションはyumまたはDNFを好み、他のLinuxディストリビューションはソフトウェアをインストールするためのよりエキゾチックな手段を備えているため、BSDのさまざまなクローンも同様です。組み込みのパッケージマネージャーに加えて、次のようなユーザーインストールもあります。 チョコレートっぽい MSWindowsおよび 自作 Mac OS X / MacOS用。プログラムのインストール方法に関する指示を書きたい場合は、それらのシステムごとにケースを作成することになります。やりすぎですね。
幸いなことに、言及された最後のシステムであるHomebrewは、おかげで最もポータブルになる可能性があります Linuxbrew 、GNU / Linuxシステム用の自作ポート。面白いことに、Microsoft Windowsで同様のユーザーエクスペリエンスを実現したい場合は、WSLでも機能します。 WSLは公式にはサポートされていないことに注意してください。
では、移植性以外に、Homebrewは他に何を提供できるでしょうか?まず第一に、それはシステムパッケージに干渉しないので、インストールするものはすべてオペレーティングシステムの別のレイヤーにあります。また、パッケージをインストールするためにroot権限は必要ありません。したがって、安定してテストされたシステムパッケージを作成できますが、同時に、システムの安定性を犠牲にすることなく、新しいバージョンを確認できます。
エディターをテストしたい場合は、HomebrewまたはLinuxbrewシステムで実行する必要があるのは次のコマンドを実行するだけであることを前述しました。
brew install emacs micro nano vim neovim
。
すでに説明したことは、間違いなく仕事に役立ちます。しかし、必須ではありませんが、それでも日常生活に便利さをもたらすアプリケーションもあります。あなたはそれらを必要としないかもしれませんが、それらは常に知る価値があります。
コマンド履歴の検索は面倒な場合があります。 bashとzshにはCtrl + Rキーがありますが、一度に1つの置換しか表示されません。また、以前に使用した正確なテキストを入力する必要があります。これはかなり一般的な操作であるため、コマンドラインを使い始めたら、改善するのに適した場所のようです。
などのインタラクティブフィルター fzy 、 percol 、 ピース または fzf 長いテキスト行をフィルタリングするのに役立ちます。これは、前述のコマンド履歴、プロジェクトディレクトリ内のすべてのコード行、またはfind.
によって生成されたファイル名のリストです。一般的な考え方は、最初に使用可能なすべての行を表示してから、あいまい検索アルゴリズムを使用して、一致しないものをすべて除外することです。
たとえば、Ctrl + Rをfzfにリンクすると、最新のコマンドのリストが表示され、矢印を使用して上下に移動したり、git
と入力したりできます。どこかにGitがあるコマンドのみを表示します。個人的には、インタラクティブフィルターのないシェルで作業していると、突然少し迷ってしまいます。この機能は本当に説得力があります!
また、プログラム可能なテキストエディタ内でインタラクティブフィルタを使用できるようにすることもできます。このようにして、シェルとエディターの間で統一された検索機能を利用できます。
Facebook PathPicker 私が主にC ++プロジェクトで作業していたとき、それは大きな助けになりました。コンパイラによって生成されたエラーログは非常に大きくて不快なものになる可能性があり、そのログ内の実際のパスを見つける機能は生産性に大きな恩恵をもたらしました。
任意のテキストファイル、または画面コンテンツで使用する場合 tmux 、fppは、ファイルパス以外のすべてをフィルタリングします。次に、これらのパスの1つ以上を選択し、それらを使用してコマンドを実行できるユーザーインターフェイスを示します。最も一般的な答えは、もちろん、デフォルトのアクションであるエディターでファイルを開くことです。
あなたが取り組んでいるプロジェクトの少なくとも1つが使用している可能性があります 行く バージョン管理システムとして。完全に強力ですが、GitCLIは優れたユーザーエクスペリエンスの頂点ではありません。 Gitヘルプのすべてのオプションを読むストレスを少し軽減するために$ SUBCOMMAND
、チェックすることをお勧めします ティグ 。 log
など、その恩恵を受ける操作のための優れたコンソールユーザーインターフェイスを提供します。またはblame
。
GItユーザーを支援することを目的とした別のツールは 行う 、の頭字語です すべての競合を修正する 。ご想像のとおり、マージや追い越しの際に衝突が発生した場合に便利です。これは、vimdiffのような他のマージツールの代替手段です。
90年代には、誰もが2パネルのファイルマネージャーを望んでいた時期がありました。トレンドは ノートンコマンダー 。他の多くの人も同じ道をたどりましたが、それでも安定したユーザーベースを見ているのは 真夜中の司令官 。最も明白な使用例は、mcを使用してローカルファイルを操作することですが、リモートマシンで作業する場合にも非常に役立ちます。
ほとんどのコマンドラインプログラムと同様に、非常に軽量であるため、ssh経由での実行に問題はなく、サポートされているFTPおよびFISHプロトコルのおかげで、ローカルファイルシステムをパネルに表示し、リモートを他のパネルに表示できます。 scpへの引数としてファイル名を書き込んだりコピーしたりすることを避けたい場合に便利な関数。
「すべての仕事と遊びがないので、ジャックは退屈な少年になります。」 彼らが言う。あなたの楽しみのためだけにたくさんのプログラム、コマンドラインなどがあります。ビデオゲーム ローグ このカテゴリに分類されます。彼はゲームのジャンル全体にその名前を付けました!他の人気のあるおもちゃは フォーチュン Y カウセイ 、たとえば、CIスクリプトのどこかでそれらを使用すると、退屈な日を減らすことができます。
しかし、私たちの中には、そもそもコンソールを使用することの主な魅力は、映画のハッカーのように感じることです。 これ以上の秘密はありません Y ハリウッドハッカー 彼らはこのグループをよく表しています。誰かがあなたの仕事を見ているときに試してみてください。ハッカーの信頼性は確実に高まります。
では、シェル、エディター、およびさまざまなアプリケーションでのすべてのスイッチの使用方法の学習に費やされた時間を埋め合わせるコマンドラインの何がそんなにクールなのでしょうか。簡単な答えは 生産性 、これは2つのことから来ています:
1つは、ターミナルウィンドウだけが表示され、他に何も表示されない場合、気を散らすものがあまりないため、より集中的に集中できることです。通知も広告も、かわいい子猫の写真も表示されません。あなたとあなたの目標だけです。
2つ目は自動化です。頻繁に組み合わせる複数のアクションをスクリプトに入れて、毎回すべてを手動で記述するのではなく、後で全体として呼び出すことができます。シェル履歴を検索することで、一度入力した特に複雑なコマンドにすばやく戻ることができます。基本的に、あなたは何でも記録して再生することができます、そしてコードはあなたがしたことのドキュメンテーションとして利用可能です。
エイリアスを追加する機能も収益に貢献します。たとえば、Gitでコミットを作成して、完全になるまで同じものを更新することがよくあります(今のところ)。目的のファイルを準備したら、git carmh
を実行します。 commit --amend --reuse-message = HEAD
を意味する私のプライベートエイリアスなので、マニュアルで調べようとしないでください。確かにタイピングを保存してください。
問題は、人々は同じ行動を何度も繰り返すことに飽きてしまい、退屈は集中力を低下させるということです。これは間違いやエラーにつながる可能性があります。それらを回避する唯一の方法は、ハイフォーカスアクションとローフォーカスアクションを絡み合わせないことです。コードの記述はハイフォーカスであり、エンゲージメントメッセージとコンテンツのレビューはハイフォーカスですが、エンゲージメントレビュー段階に到達するために何度か機械的なクリックを繰り返す必要がある場合、フォーカスが低下する可能性があります。もちろん、コマンドラインにはそのような機械的なアクティビティがないわけではありませんが、自動化のおかげで、それらのほとんどを回避できます。
この記事に記載されているコマンドラインツールの一部またはすべてについて、すでに知識がある場合があります。あなたはそれを読むことによって何か新しくて役に立つことを学んだかもしれません。もしそうなら、素晴らしい。ここでの私の目標は、さまざまなツールの概要と比較を提供することではなく、日常業務で役立つと思われるいくつかの重要なツールを示し、それらのいくつかも役立つことを期待しています。
そこにはもっと興味深いコマンドラインプログラムがあります。それらに興味がある場合は、厳選されたリストを確認することを強くお勧めします。 素晴らしいシェル 今日利用可能な最高のシェルコマンドのいくつかの
ほとんどのGUIアプリケーションには、対応する端末があります。これには、Webブラウザー、電子メールクライアント、チャットクライアント(IRC、Slack、XMPP)、PIMスイート、またはスプレッドシートが含まれます。私が言及していない良いショーを知っているなら、コメントでそれらを提供してください。