大衆へのコンソール。 明るい側に行く。 パート1



エントリー


みなさんこんにちは! この一連の記事は、 11月26日にキエフで開催されたWSDに関する私のレポートのテキスト版です。 私は、提起されたトピックのより詳細な説明を提供し、いくつかのポイントを明確にするために書くことにしました。 さらに、読者からの意見を聞くために、より多くの例を検討する機会があります。 そしてもちろん、より多くの聴衆と情報を共有します。

脱出計画


  1. ターミナルマネージャー。 パート1
  2. ターミナルマネージャー。 パート2
  3. bashのスクリプト
  4. 日常業務の自動化

重要なポイント。 読者は、* nix OSで端末を操作した経験があることを前提としています。 例では、 grep, find, xargs, echo, sedなどの多くのユーティリティを使用します。 これらのユーティリティについては詳しく説明しません。 すべてを考慮しても問題はありません。

私たちには大規模なチームがあり、人々がさまざまな方法で同じタスクを実行する方法をよく見ます。 これは、端末での作業にも適用されます。 会いましょう-これはIE6です。



お気に入りのブラウザがタブの操作方法を知らない状況を想像してください。 さらに、最も都合の悪い瞬間に閉じると、セッションを復元して作業を続行できません。

そして、これはほとんどのユーザーが端末を想像する方法です。 黒い画面、白い文字。



ここで、お気に入りのブラウザに端末で作業する機能が追加されたと想像してください。 その中で、 git, npm, node 、その他多くのコマンドを実行できます。 それは未来から非現実的なもののように聞こえます。 しかし、ありません。



そして、このシリーズの記事では、端末が便利で多機能であり、すべてを調理する方法を知っている必要があることを示したいと思います。

それでは、始めましょう。 どのトピックを検討しますか? ターミナルマネージャーを検討します。 次に、bashスクリプト。 そして最後のことは、bashスクリプトを使用してルーチンを自動化する方法です。

リポジトリ


便宜上、一連の記事全体で検討するすべての例とトピックを使用して、githubにリポジトリを作成しました。 だから、ダウンロードして練習することができます。

スライド


このリンクから入手できます。 プレゼンテーションはシャワーエンジンで行われました。

それはどこで機能しますか


すべてWindows 10安定版 、Mac OS X、 Ubuntuで動作します。 Ubuntuが推奨されます。 Ubuntuですべての例を示します。 クールなターミナルエミュレータもあります。これはConEmuです。 確かに、ターミナルマネージャーはそれを試すことができません。

ターミナルマネージャー。 パート1 スクリーン


画面から始めましょう。 偶然彼に会った。 同僚が1つの問題を解決するのを助けてくれました。 そして彼は、私がターミナルマネージャを使用しなかったことを知りました。 それから彼は言った:「うーん、それを修正しましょう。」私はスクリーンをインストールし、セットアップを助け、いくつかの基本的なキーボードショートカットを見せてくれました。

設置


画面をインストールするには、最初のコマンドを実行するだけです。 その後、ターミナルでscreenコマンドを入力して起動できます。

sudo apt-get install screen
screen
view raw install screen hosted with ❤ by GitHub

基本的なキーボードショートカット


リスト全体を記事に入れずにリンクを追加したのはなぜですか?! すべてがシンプルです。 まず、それらはマニュアル( man screen )にあります。 第二に、彼らは教えたり、記憶したりする必要はなく、使い始めるだけです。

設定


デフォルトでは、画面はあまり便利に構成されていません。 ステータスバーさえありません。 ライセンスメッセージとその他の不便さが表示されます。 これらはすべて、構成ファイルを使用して修正できます。 ユーザーのホームディレクトリに配置する必要があります。

# Select whether you want to see the copyright
# notice during startup.
# Default is ‘on’, as you probably noticed.
startup_message off
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
defscrollback 10240
termcapinfo xterm ti@:te@
chdir startup_message off vbell off caption always "%{= bb}%{+ bw}%n%h%=%t%c" hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f *%t %{-}%+ Lw%<"
GitHub によって❤でホストされたraw .screenrcを表示

ビジネスのスクリーン


職場の画面を見てみましょう。 実行方法はすでにわかっています。 画面を入力するだけです。 その前に、設定ファイルをユーザーのホームディレクトリに置くことを忘れないでください。



  1. 作業エリア。 レイアウト
  2. ステータスバー。 タブやその他の要素が配置されます。
  3. デフォルト名のタブ。

画面の初期状態を調べました。 それをより複雑な問題の例として考えてみましょう。



そのためには、前述のリポジトリが必要です。 それをコンピューターにクローンしましょう:

 git clone https://github.com/var-bin/terminalForCoder__WSD.git 

次に、画面を実行します。 2〜3個のタブが必要です。 新しいタブを作成するには、次のキーボードショートカットを押します。

 Ctrl + a, c -    

次のステップは、タブの名前を変更することです。 これを行うには、次を使用します。

 Ctrl + a, A -   

タブを切り替えるには、次のキーを使用します。

 Ctrl + a, int -     (int -   0 - 9) 

または

 Ctrl + a, " -    

タブを少し練習します。 次に、現在のリージョンを2つの独立したリージョンに分割します。 これは、キーボードショートカットを使用して行います。

 Ctrl + a, | -         

2番目のリージョンが機能する機会を得るには、そのリージョンに入り、明示的にアクティブにする必要があります。 これを行うには:

 Ctrl + a, Tab -      Ctrl + a, c -    

次のコマンドを使用して、たとえば真夜中の司令官 (他のユーティリティ)など、左側の領域で実行してみましょう。

 mc 

そして、右側の領域で、テストアプリケーションを起動します。 これはnode.jssocket.ioで書かれたシンプルなチャットです。 この例は、socket.ioの公式Webサイトから引用したものです。 私が追加した唯一のことは、それが機能することを確認できるように、小さなロギングです。 これを行うには、 %repoName%/screen/chat-exampleディレクトリに移動します。 そして、コマンドを実行します:

 npm i node index.js 

%repoName% -リポジトリのクローンが作成されたディレクトリの名前。

すべてが順調であれば、画面に次の行が表示されます。

 listening on localhost:3000 

その後、ブラウザーを起動し、新しいタブでlocalhost:3000移動します。 入力行にメッセージをEnterを押します。 ご覧のとおり、すべてが機能し、ターミナルにもこのメッセージが表示されます。 node index.jsコマンドがnode index.jsた領域。



そして今、最も興味深い。 切断をシミュレートしましょう。 十字架を通してターミナルを閉じます。 ただし、ブラウザを閉じないでください。 そして、さらにいくつかのメッセージを送信してみてください。 ご覧のとおり、すべてが引き続き機能します。 これは、ターミナルを閉じたばかりであるという事実にもかかわらずです。



これは、画面がセッションと実行中のすべてのプロセスを保存したことを示唆しています。 このセッションに戻って接続しましょう。 ターミナルを起動して、コマンドを実行します。

 screen -r 



お気づきかもしれませんが、先ほど作成したレイアウトは存続しませんでした。 これはかなり厄介な驚きです。 screen'a設定には、以前に作成されたレイアウトの保存を設定できるコマンドがあります。 しかし、何回試していませんか? これは、2つまたは3つのタブがある場合の状況です。 そして、6〜10個のタブがあるときの画像を想像してください。 レイアウトは、垂直方向と水平方向の両方の領域に分割されます。 そして、最も都合の悪い瞬間に、私たちは連絡を失います。 唯一のプラスは、実行中のすべてのプロセスが保存されることです。

長い間、単純な理由で端末管理者なしで働いていました。 私はそれらについて知りませんでした! いくつかのパテウィンドウ(ウィンドウ+リモートサーバーへの接続)を開き、 Alt + Tabキーの組み合わせを使用してそれらを切り替えるのは普通だと思いました。 そして、どういうわけかこのすべての混乱の中で働くようにしてください。

悪い点について。 画面は、各タブのレイアウトを作成する方法を知りません。 また、接続が失われたり、他に何かがある場合、画面はレイアウトを保存する方法を知りません。 バージョン4.1より前では、縦の内訳を行うことができませんでした(私にとってこれは重要です)。 新しいリージョンを作成するときは、その中に新しいウィンドウを個別に作成する必要があり( Ctrl+a, c )、目的のディレクトリに移動するなど。 リージョンを削除するには、 Ctrl+a :removeも必要です。 私にとって、スクリーンは大都市の真ん中にある新鮮な空気の息吹のようでした。 しかし、「自分用」に設定するには、多くの時間を費やす必要があります。 また、画面の実装が限られているため、一部のウィッシュリストが機能しませんでした。

簡単な要約を要約します。 人気のあるターミナルマネージャの1つであるscreenを調べました。 また、インストール方法、構成方法についても検討しました。 例を使用して、作業中の画面を検討しました。 繰り返しますが、どのキーボードショートカットが何に責任があるのか​​、どの設定を画面に設定できるのか、どのオプションを引数として画面に渡すことができるのかなどを確認する必要がある場合は、コマンドを実行します:

 man screen 

次の記事では、少し進んで、より高度なターミナルマネージャであるtmuxについて検討します。 また、画面とtmuxを比較します。

以上です。 ご清聴ありがとうございました。 最後まで読んでくださった方に感謝します。 次の記事でお会いしましょう。

Source: https://habr.com/ru/post/J317534/


All Articles