KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

ターミナルで効率的に作業するためのコツ

現代の開発者やシステム管理者にとって、ターミナルは日常的に使用する強力なツールなんですけど、バニラな状態でターミナルをただ使ってる分には「ただわかりにくいだけ」のツールと化してしまいます。プロが今でもターミナルを使うのは「GUIより断然速いし安全」だからです。

ターミナルを効率的に活用することで作業スピードと生産性を大幅に向上させることができます。ちゃなことで、ターミナルでの作業をより効率的に行うための工夫をいくつか書いてみました。

目次


ショートカットキーの活用

ターミナルでの作業を効率化するためには、ショートカットキーを覚えて活用することが重要です。以下に、よく使われるショートカットキーを紹介します。特にAEUK、必須です。これ使わないとまともな作業効率は出ないです。簡単なので、ぜひ覚えちゃってください。

  • Ctrl + C - 実行中のコマンドを強制終了
  • Ctrl + D - ターミナルを終了
  • Ctrl + A - 行の先頭に移動
  • Ctrl + E - 行の末尾に移動
  • Ctrl + U - カーソル位置から行の先頭までを削除
  • Ctrl + K - カーソル位置から行の末尾までを削除
  • Ctrl + R - コマンド履歴からの検索

これらのショートカットキーを使いこなすことで、マウスを使わずに素早く作業を進めることができます。

シェルスクリプトの利用

ターミナルはそのままスクリプトの実行環境でもあります。

シェルスクリプトやpythonスクリプトなどなどを利用することで、複雑な作業を自動化し、効率的に作業を行うことができます。 定期的に行うタスクや繰り返し行う作業をスクリプト化することで、時間と労力を節約できたり、間違いを防ぐことにもつながりますね。

基本的なシェルスクリプトの書き方

#!/bin/bash

# バックアップスクリプトの例
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup_$(date +%F)"

mkdir -p "$BACKUP_DIR"
cp -r "$SOURCE_DIR"/* "$BACKUP_DIR"

echo "バックアップが完了しました: $BACKUP_DIR"

上記のスクリプトは、指定したディレクトリの内容を日付付きのバックアップディレクトリにコピーするものです。このようにシェルスクリプトを活用することで、日常的なタスクを自動化できます。これを作るのに時間かかってたら意味がないので、大事なのは「ササッと作れる事」です。

エイリアスと関数の設定

エイリアスや関数を設定することで、長いコマンドを短縮したり、複数のコマンドを一つにまとめたりすることができます。これにより、コマンド入力の手間を減らし、作業効率を向上させます。

エイリアスの設定

# ~/.bashrc または ~/.zshrc に追加
alias ll='ls -la'
alias gs='git status'
alias gp='git pull'

エイリアスを設定することで、よく使うコマンドを短縮して呼び出すことができます。例えば、llを入力するだけでls -laが実行されます。ただ、プロはいつも自分の環境で仕事出来るとは限らないので、エイリアス頼りは禁物ですが。

関数の設定

# ~/.bashrc または ~/.zshrc に追加
function mkcd() {
mkdir -p "$1"
cd "$1"
}

# 使用例
mkcd new_project

関数を設定することで、複数のコマンドを一つにまとめることができます。上記の例では、ディレクトリを作成してそのディレクトリに移動する一連の作業をmkcdという関数で実行できます。「毎回おんなじ手順で、めんどくせー!」ってなったら関数化しちゃうのは手ですね。

効率的なファイル操作

ターミナルでのファイル操作を効率化するためのコマンドやテクニックを紹介します。これらを活用することで、ファイルの検索、移動、編集がスムーズに行えます。プロがターミナルを使う理由のかなりの部分がこれです。逆にこれが自由に出来ないとターミナルを使うメリットがいまいち見えてきません。

findコマンドでファイル検索

# 現在のディレクトリ以下で拡張子が .txt のファイルを検索
find . -type f -name "*.txt"

# サイズが1MB以上のファイルを検索
find /path/to/search -type f -size +1M

findコマンドを使用することで、条件に合ったファイルを迅速に検索できます。これにより、必要なファイルを見つけ出す作業が効率化される事に加え、「処理対象のファイルを見つける」という用途に使えるため、GUIで一個一個やってた処理が1行で済みます。

rsyncコマンドでファイルの同期

# ローカルディレクトリとリモートディレクトリを同期
rsync -avz /local/dir/ user@remote:/remote/dir/

# ディレクトリを削除しながら同期
rsync -avz --delete /local/dir/ user@remote:/remote/dir/

rsyncコマンドは、ファイルやディレクトリを効率的に同期するためのツールです。バックアップやリモートサーバーとのデータ同期に非常に便利です。

テキスト処理ツールの活用

ターミナルでのテキスト処理やログ調査を効率化するために、さまざまなコマンドラインツールを活用しましょう。以下に、よく使われるテキスト処理ツールを紹介します。

grepコマンドでテキスト検索

# ファイル内で "error" を含む行を検索
grep "error" logfile.txt

# 再帰的にディレクトリ内のファイルを検索
grep -r "TODO" /path/to/project

grepコマンドは、指定したパターンにマッチする行を検索するための強力なツールです。ログファイルの解析やコードベースの検索に非常に便利です。 -r は find コマンドとの組み合わせでも同じことは実現できますが、まあ、-r で済ませられるならその方が便利です(意外に済まないことが多いけど)。

awkコマンドでデータの抽出と処理

# CSVファイルの2列目と3列目を抽出
awk -F, '{print $2, $3}' data.csv

# 条件に基づいて行を処理
awk '/error/ {print $0}' logfile.txt

awkコマンドは、テキストデータの抽出や処理に非常に便利です。複雑なデータ処理もスクリプト化することで、効率的に行うことができます。個人的には「awkってちょっと中途半端だな」って思ってて、あまり使わないのですが、実務上使われることが多いのは事実だと思います。

sedコマンドでテキストの置換

# ファイル内の "foo" を "bar" に置換
sed -i 's/foo/bar/g' filename.txt

# パターンにマッチする行を削除
sed -i '/^#/d' config.cfg

sedコマンドは、ストリームエディタとして、テキストの置換や削除を行う際に非常に役立ちます。自動化されたテキスト処理に最適です。「awk中途半端だな」と思う理由に繋がるんですが、cutコマンドと、このsedの組み合わせでawkでやりたい大体の事が出来ちゃうからです。もっと複雑なパターンになるなら、pythonスクリプトで書いた方がわかりやすいし、、、という感じですね。

プロンプトのカスタマイズ

ついでにターミナルのプロンプトのカスタマイズについても紹介しときます。作業環境をより見やすく、効率的にするという事でこだわる人はこだわっています(私はこだわらない方なんですが)。以下に、プロンプトのカスタマイズ方法を紹介します。

PS1変数の設定

# ~/.bashrc または ~/.zshrc に追加
export PS1="\u@\h \w \$ "

# カラフルなプロンプトにする例
export PS1="\[\e[32m\]\u@\h\[\e[m\] \[\e[34m\]\w\[\e[m\] \$ "

PS1変数を設定することで、プロンプトの表示内容をカスタマイズできます。ユーザー名、ホスト名、現在のディレクトリなど、さまざまな情報を表示させることが可能です。

プロンプトテーマの利用

Oh My ZshやPowerlineなどのツールを利用することで、プロンプトを簡単にテーマ化できます。これにより、見た目を美しくしつつ、必要な情報を一目で確認できるようになります。

# Oh My Zshのテーマを設定
ZSH_THEME="agnoster"

# Powerlineのテーマを設定
source /usr/share/powerline/bindings/bash/powerline.sh

ターミナルマルチプレクサの利用

tmuxやscreenなどのターミナルマルチプレクサを利用することで、複数のターミナルセッションを一つのウィンドウ内で管理できます。これにより、効率的なマルチタスクが可能になります。これ、運用作業だと必須なので、絶対覚えて使ってほしいです。

tmuxの基本操作

# 新しいtmuxセッションを開始
tmux new -s mysession

# セッションからデタッチ
Ctrl + B, D

# セッションにアタッチ
tmux attach -t mysession

# セッション一覧を表示
tmux ls

tmuxを使うことで、複数のターミナルを一つのウィンドウ内で管理でき、作業の効率が大幅に向上します。特にリモートサーバーでの作業中に接続が切れた場合でも、セッションが保持されるため安心です。

screenの基本操作

# 新しいscreenセッションを開始
screen -S mysession

# セッションからデタッチ
Ctrl + A, D

# セッションにアタッチ
screen -r mysession

# セッション一覧を表示
screen -ls

screenもtmuxと同様に、ターミナルセッションの管理に便利なツールです。tmuxと比較して軽量ではあるんですが、今のご時世、よほどの好みが無ければ tmux でいいと思います。

自動補完と履歴検索

ターミナルでの作業を効率化するために、自動補完と履歴検索の機能を活用しましょう。これにより、コマンド入力の手間を減らし、作業スピードを向上させることができます。

タブ補完

コマンドやファイル名を入力する際にTabキーを押すことで、自動的に補完されます。これにより、正確なコマンドやファイル名を素早く入力できます。

Bashの履歴検索

# 過去のコマンドを逆方向に検索
Ctrl + R
# 検索キーワードを入力

Ctrl + Rを押してキーワードを入力することで、過去に実行したコマンドを素早く見つけて再実行できます。これにより、頻繁に使用するコマンドの再入力を省略できます。

カラースキームとテーマの選択

ターミナルの見た目をカスタマイズすることで、視認性を向上させ、長時間の作業でも疲れにくくなります。カラースキームやテーマを選択する際のポイントを紹介します。

カラースキームの選択

カラースキームを選ぶ際は、目に優しく、長時間見ても疲れにくいものを選ぶことが重要です。人気のあるカラースキームには以下のようなものがあります。これは意外と大事かなと思ってます。眼が疲れない事もそうなんですが、見落としや間違いの発見につながることもあるからです。

これらのカラースキームは、視認性が高く、コードの可読性を向上させるために設計されています。好みに合わせて選んでみましょう。

テーマの設定

Oh My ZshやPowerlineなどのフレームワークを利用することで、ターミナルのテーマを簡単に変更できます。テーマを設定することで、プロンプトの情報量を増やしたり、見た目を美しくすることができます。やりすぎ注意、ですが、まあ、遊びの範囲で。

# Oh My Zshのテーマを設定
ZSH_THEME="agnoster"

# Powerlineのテーマを設定
source /usr/share/powerline/bindings/bash/powerline.sh

定期的な練習と学習

ターミナルでの効率的な作業を実現するためには、基本的にはひたすら実務で繰り返しあるのみ。先輩のコンソール操作を横で見て盗もう、という事になるんですが、以下に、学習を進めるためのヒントを紹介します。

  • チュートリアルやオンラインコースを受講する: 基本から応用まで学べる教材を活用しましょう。
  • 日常的にターミナルを使用する: 実際の作業でターミナルを積極的に利用することで、スキルが自然と身につきます。
  • 自分の作業環境をカスタマイズする: 自分に合った設定やツールを見つけ、作業効率を最大化しましょう。

基本的には実務あるのみ、なんですが、お勉強で基本的なワザを頭に入れて置くことで初期の学習曲線をググッと上げることが出来ます。

まとめ

ターミナルで効率的に作業するためのコツを紹介しました。ショートカットキーの活用、シェルスクリプトやエイリアスの設定、効率的なファイル操作、テキスト処理ツールの活用、プロンプトのカスタマイズ、ターミナルマルチプレクサの利用、自動補完と履歴検索、カラースキームとテーマの選択、そして定期的な練習と学習。これらの方法を組み合わせて活用することで、「ターミナルじゃなきゃダメ」になります。

ターミナルは強力なツールです。基本をしっかりと理解し、効率的な作業方法を身につけることで、日々の開発やシステム管理がより快適になります。ぜひ、この記事で紹介したコツを、一個一個取り入れるスタイルで構いません。実践していって、日々のターミナル作業を一層効率的にしてみてください。ターミナル作業自体が楽しくなるはずです。