Efficient Linux コマンドライン本を読んで

目次

本の概要

LinuxコマンドラインツールのTips本です。
基本的なLinuxコマンドの使い方や、シェルスクリプトの書き方、シェルの設定などが記載されています。

あわせて読みたい
Efficient Linuxコマンドライン Linuxスキルをレベルアップする実用的な実践書。本書では、コマンドを組み合わせて複雑なコマンドを作成することで、手動で行われているタスクを自動化するための方法を学...

なぜこの本を読んだのか

コマンドラインが好きに尽きます。

コマンドを打っている瞬間はとても楽しいですよね。
まるでコンピューターと対話しているようで、またよくドラマで見るハッカーも基本はターミナルで操作しているイメージがありかっこいいなと思います。

仕事でも頻繁にgit操作やファイル操作でなにかとコマンドラインと向きあう時間が長いため、何か改善できるものがないか?ということでこの本を読んでみました。

本を読んだうえですぐに設定・実践できたTipsを共有しようと思います。

lessコマンド

お恥ずかしいことにこのコマンドを知らなかったです。

ファイルの中身を見る際に使用するコマンドになります。

less ファイル名

パイプラインインでも使用することができます。

ls -l | less

catコマンドとの違いは、catコマンドはファイルの中身を全て表示するのに対して、lessコマンドはファイルの中身をページ単位で表示することができます。
ページ操作はvimの操作方法と同じのためvimに親しい人にはすぐ使いこなせると感じました。

せっかくなのでもう少しlessを深掘りするために、manコマンドの説明を引用します。

<!-- Less is a program similar to more(1),  but  it  has -->
       many more features.  Less does not have to read the
       entire input file before starting,  so  with  large
       input  files  it starts up faster than text editors
       like vi(1).  Less uses termcap (or terminfo on some
       systems),  so it can run on a variety of terminals.
       There is even limited support for  hardcopy  termi‐
       nals.   (On a hardcopy terminal, lines which should
       be printed at the top of the  screen  are  prefixed
       with a caret.)

       Commands  are  based on both more and vi.  Commands
       may be preceded by a decimal number,  called  N  in
       the descriptions below.  The number is used by some
       commands, as indicated.

上記の説明にすると、lessコマンドはmoreコマンドの進化版で、lessコマンドはファイルの最後まで読み込まなくてもすぐに読み込みを開始できる特徴があるようです。
そのため大きなファイルを開く際にはlessコマンドを使用することが推奨されているようです。

またmoreと違ってlessコマンドはファイルの末尾に行ってもプロンプトが自動で終了しない特徴があるため、lessコマンドはファイルを読み返す際にも便利だなと思いました。

自分はgitのlogを確認する機会が多いので、lessコマンドを使ってみようと思います。

プロセスの操作

linuxでいう「プロセス」とは実行中のプログラムを指します。
実行中のプロセスをバックグラウンド実行したり、実行中のプロセスを一時中断して再開したりする方法が記載されていました。

便利だなと感じたのはエディタで編集中のファイルがあった時、プロセスを一時中断し何か別の作業後に一次中断したプロセスを再開することで作業効率化できるという点です。

以前は自分は以下のようなことを実施していました。

  1. エディタでファイルを開く
  2. エディタでファイルを編集
  3. ファイルを保存
  4. ターミナルに戻り、ファイルを実行・動作確認
  5. 再度エディタに戻り、ファイルを編集

上記を「一時中断」を活用することで 効率的に作業を進めることができます。

  1. エディタでファイルを開く
  2. Ctrl + Zでプロセスを一時中断
  3. ターミナルでファイルを実行・動作確認
  4. fgでプロセスを再開

上記を実行することで、4.のプロセス再開時にファイルの編集位置が記憶されているため、再度エディタに戻った際に編集箇所を探す手間が省けます。

上記はお手頃で作業を効率化できると感じました。

コマンド履歴展開

コマンド履歴展開は、過去に実行したコマンドを簡単に呼び出すことができる機能です。

自分は結構このあたりの知識があやふやで、ふわっとしか理解していなかったので今回の本を読んで理解を深めることができました。

historyコマンド

historyコマンドは過去に実行したコマンドの履歴を表示するコマンドです。

history

上記だけでも過去に実行したコマンドを確認することができますが、| grepを使うことで特定のコマンドを検索することもできます。

history | grep git

出力が長いときは| lessを使うことでページ単位で表示することができます。

history | grep git | less

直近実行したコマンドに絞り込みたい場合はtailを使うことで直近のコマンドを表示することができます。

history | grep git | tail

※tailコマンドのデフォルトは末尾10行を表示するため、表示したい行数を指定する場合は-nを使うことで指定することができます。

history | grep git | tail -n5

上記のコマンド達を実行することでgitコマンドを実行した履歴を確認することができます。

また、ヒットした履歴コマンドについては!+{コマンド履歴の数字} を使うことで過去のコマンドを再実行することができます。

例えば上記のコマンドの出力結果が

100 git status

の場合、!100を実行することでgit statusを再実行することができます。

!100
git status
# git statusが再実行される

「Ctrl+R」によるコマンド履歴の検索

この知識が本当にあいまいであったため本を読んで良かったです。
「Ctrl+R」を押すことでコマンド履歴を検索することができるぐらいは知っていたのですが使いこなせていませんでした。

正確な使い方は以下の通りです。

  1. Ctrl+Rを押す
  2. 検索したい文字列を入力する 例)git
  3. 検索結果が期待通りであればEnterを、違う場合はCtrl+Rを押す ← 繰り返し行う
  4. ヒットしたコマンドを確認し、Enterで実行する

自分は3の操作を繰り返し行うことを知らなかったため、検索結果が期待通りでない場合はCtrl+Cを押していました。
3.を繰り返し実行することができることを知り、今後の作業効率が上がると感じました。

ちなみに3.を繰り返して期待のコマンドが通り過ぎた場合は、Ctrl+Sを押すことで検索結果を戻すことができます。

ショートカットの割り当て

本書ではブラウザとターミナルはショートカットで起動し、必要な作業が終わり次第閉じるようにということが記載されていました。「ワンショットウィンドウ」と本書では呼ばれていました。

ブラウザやターミナルで何かの作業をする際、どこかのウィンドウに開かれているウィンドウやターミナルを開くよりも新規ウィンドウを開いたほうが効率が良いことが多いです。
そういった意味も込めて必要なら新規で立ち上げて、作業が終われば閉じるということが効率的であると記載されていました。

ターミナルのショートカット割り当て

WSLやWindows Terminalは何も設定せずとも Win + R で以下の名前を入力することで起動できます。

ショートカット名起動するアプリケーション
wtWindows Terminal
powershellPowerShell
cmdCommand Prompt
bashWSL

上記を入力し、Enterを押すことでアプリケーションが起動します。
また、管理者権限で起動する場合は、Ctrl + Shift + Enterを押すことで管理者権限で起動することができます。

上記の知識だけでもかなりの効率化ができますが、ショートカットキーを割り当てることでさらに効率化ができます。

Microsoft Storeから入手したアプリケーションはショートカットが既存で作成されていないため、自分で作成する必要があります。

  1. デスクトップにショートカットを新規で作成する
  2. 項目の場所に「wt」を指定する ※自動的にリンク先を展開してくれる
  3. 新規作成したショートカットのプロパティからショートカットキーを割り当てる

自分はCtrl+Alt+Tに割り当てました。

ブラウザ起動のショートカット割り当て

ブラウザのショートカットの割り当ては簡単です。

  1. 検索バーから「Chrome」を検索
  2. Chromeのアイコンを右クリックし、「ファイルの場所を開く」をクリック
  3. ショートカットのexeファイルのプロパティを開く
  4. ショートカットキーを割り当てる

自分はCtrl+Alt+Cに割り当てました。

ショートカットキーを割り当ててみて

少しだけWindowsでショートカットの起動が遅いと感じました。
さっと調べたところSysMainプロセスが悪さをしているという記事がいくつか見つかりました。
SysMainはハードディスクから読み込むファイルをキャッシュするためのサービスで、SSDを使用している場合は無効にしても問題ないとのことでした。

「サービス」からSysMainを検索し、プロパティを開き、スタートアップの種類を「無効」に変更することでショートカットの起動が早くなりました。

WSLからChromeを起動する

linuxだとgoogle-chromeコマンドでChromeを起動できますが、WSLからはそのままでは起動できません。
WSLからChromeを起動するためには、WSLの中でChromeを起動するためのシェルスクリプトを作成する必要があります。

#!/bin/bash
exec "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe" "$@"

上記を/usr/local/binに配置することでgoogle-chromeコマンドでChromeを起動できるようになります。

$@は引数をそのまま渡すために、 google-chrome https://google.com のようにURLを渡すことができます。

良く使うgithubのPull Requestのurlをalias登録しておくとより便利だなと感じました。

まとめ

全てを記載すると日が暮れてしまうので、一部のTipsを共有しました。
標準出力操作やテキスト作成なども面白かったのですが、ブログ記事で書くにはボリュームがありすぎるのでやめました。
次はawksedについて少し深掘りしてみたくなった一冊でした。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

数学科出身のSoftware Engineer
情報通信が好きなのでブログを活用して発信しています。

コメント

コメントする

目次
閉じる