私について

エンジニア歴6年目となります。普段は社内システムの開発・運用保守業務をしており、数万件以上の顧客データを扱っています。Linuxサーバ上で作業することが多く、DB操作も行いますが、ファイル操作をしたり、バッチ処理を作成したりすることも多いです。今回はメイン業務で使うLinuxコマンドで良く使うものを紹介します。
パッと思いついた順で記載しています(=すなわち良く使う重要コマンド)
参考にしていただければと思います。
※書いていないもので思い出した重要コマンドは追加することがあります。

対象読者

  • システムエンジニアになって日の浅い方
    ** 「ディレクトリ」などの基本的な用語は知っている前提とします。
  • Linuxコマンドに興味のある方・趣味でシステム開発を行なっている方

環境

どれも基本的なコマンドで、環境差はないと思いますが、
本記事の実行例は下記環境で実行しています。

set | grep -ai version
ASYNC_VERSION=1.7.1
TERM_PROGRAM_VERSION=421.2
ZSH_HIGHLIGHT_VERSION=0.7.0-dev
ZSH_VERSION=5.3

また、Linuxコマンドを紹介すると言っておいて、本記事の実行環境はMacです。
(なので厳密にはLinuxではない。)
なのでディレクトリ構成がLinux環境から見ると少し違います。
また、コマンド例がないのは、、察してください。

良く使うコマンド集(思いついた順)

ls

カレントディレクトリにあるファイル一覧を表示します。

~/Desktop/roppong blog/roppong-blog master
❯ ls
README.md      jsconfig.json  node_modules   plugins
assets         layouts        nuxt.config.js static
components     lib            package.json   store
dist           middleware     pages          yarn.lock
良く使うオプション
  • ls -1t
  • 1行に1ファイル, 修正日時順で表示
~/Desktop/roppong blog/roppong-blog master
❯ ls -1t
dist
static
nuxt.config.js
package.json
yarn.lock
node_modules
pages
plugins
components
lib
README.md
jsconfig.json
layouts
store
middleware
assets
  • ls -la
  • ファイルの詳細情報を表示。隠しファイル(.始まりのファイル)も表示
~/Desktop/roppong blog/roppong-blog master
❯ ls -la
total 880
drwxr-xr-x   25 roppongi  staff     800  7  8 23:03 .
drwxr-xr-x    7 roppongi  staff     224  3  7 16:12 ..
-rw-r--r--    1 roppongi  staff     207  2  3 22:06 .editorconfig
-rw-r--r--    1 roppongi  staff     220  7  8 23:02 .env
-rw-r--r--    1 roppongi  staff     348  2  3 22:06 .eslintrc.js
drwxr-xr-x   14 roppongi  staff     448  7 21 20:33 .git
-rw-r--r--    1 roppongi  staff    1255  2  3 22:06 .gitignore
drwxr-xr-x   21 roppongi  staff     672  7  8 23:02 .nuxt
-rw-r--r--    1 roppongi  staff      70  2  3 22:06 .prettierrc
-rw-r--r--    1 roppongi  staff     368  2  3 22:06 README.md
drwxr-xr-x    3 roppongi  staff      96  2  3 22:06 assets
drwxr-xr-x   12 roppongi  staff     384  2 18 21:01 components
drwxr-xr-x   18 roppongi  staff     576  7  8 23:04 dist
-rw-r--r--    1 roppongi  staff     209  2  3 22:06 jsconfig.json
drwxr-xr-x    4 roppongi  staff     128  2  3 22:06 layouts
drwxr-xr-x    4 roppongi  staff     128  2  4 00:34 lib
drwxr-xr-x    3 roppongi  staff      96  2  3 22:06 middleware
drwxr-xr-x  937 roppongi  staff   29984  7  8 22:19 node_modules
-rw-r--r--    1 roppongi  staff    8416  7  8 22:40 nuxt.config.js
-rw-r--r--    1 roppongi  staff    1756  7  8 22:19 package.json
drwxr-xr-x    5 roppongi  staff     160  3  7 17:01 pages
drwxr-xr-x    8 roppongi  staff     256  2 29 20:09 plugins
drwxr-xr-x   12 roppongi  staff     384  7  8 22:47 static
drwxr-xr-x    3 roppongi  staff      96  2  3 22:06 store
-rw-r--r--    1 roppongi  staff  402138  7  8 22:19 yarn.lock
  • このコマンドは良く使うので、 ll というエイリアスを設定することが多いです。

pwd

print working directory

カレントディレクトリの絶対パスを表示します。

~/Desktop/roppong blog/roppong-blog master
❯ pwd
/Users/roppongi/Desktop/roppong blog/roppong-blog

cd

change directory

カレントディレクトリを変更します。

# 現在のファイルを確認する
~/Desktop/roppong blog/roppong-blog master
❯ ls
README.md      jsconfig.json  node_modules   plugins
assets         layouts        nuxt.config.js static
components     lib            package.json   store
dist           middleware     pages          yarn.lock

# pagesディレクトリに移動する
~/Desktop/roppong blog/roppong-blog master
❯ cd pages

# 現在のファイルを確認する
~/Desktop/roppong blog/roppong-blog/pages master
❯ ls
README.md blog      index.vue

# blogディレクトリに移動する
~/Desktop/roppong blog/roppong-blog/pages master
❯ cd blog

~/Desktop/roppong blog/roppong-blog/pages/blog master
❯ ls
_slug.vue   about.vue   contact.vue index.vue   profile.vue

# 一つ前のディレクトリ(親ディレクトリ)に戻る
~/Desktop/roppong blog/roppong-blog/pages/blog master
❯ cd ..

# 一つ前のディレクトリに戻る
~/Desktop/roppong blog/roppong-blog/pages master
❯ cd ..

# pages/blog ディレクトリまで一気に飛ぶ
~/Desktop/roppong blog/roppong-blog master
❯ cd pages/blog

# 2つ前のディレクトリまで一気に飛ぶ
~/Desktop/roppong blog/roppong-blog/pages/blog master
❯ cd ../..

# ~/Desktop ディレクトリ配下にディレクトリを作成する
# 「~」はホームディレクトリ
# 「mkdir」 は後述

~/Desktop/roppong blog/roppong-blog master
❯ mkdir -p ~/Desktop/test

# 前回引数として与えたディレクトリを引き出す(これ結構便利)
~/Desktop/roppong blog/roppong-blog master
❯ cd !$

~/Desktop/roppong blog/roppong-blog master
❯ cd ~/Desktop/test

# 前にいたディレクトリに戻る
~/Desktop/testcd -
~/Desktop/roppong blog/roppong-blog

~/Desktop/roppong blog/roppong-blog master
❯ 

cat

ファイルの中身を表示する
本当は2つのファイルを連結(conCATenate)するコマンドだが、小さなファイルを表示するのに使うことが多い。
大きいファイルを表示すると、強制終了しないと表示が止まらないため注意。

~/Desktop/roppong blog/roppong-blog/components master
❯ cat Logo.vue
<template>
  <svg
    class="NuxtLogo"
    width="245"
    height="180"
    viewBox="0 0 452 342"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g fill="none" fill-rule="evenodd">
      <path
        d="M139 330l-1-2c-2-4-2-8-1-13H29L189 31l67 121 22-16-67-121c-1-2-9-14-22-14-6 0-15 2-22 15L5 303c-1 3-8 16-2 27 4 6 10 12 24 12h136c-14 0-21-6-24-12z"
        fill="#00C58E"
      />
      <path
        d="M447 304L317 70c-2-2-9-15-22-15-6 0-15 3-22 15l-17 28v54l39-67 129 230h-49a23 23 0 0 1-2 14l-1 1c-6 11-21 12-23 12h76c3 0 17-1 24-12 3-5 5-14-2-26z"
        fill="#108775"
      />
      <path
        d="M376 330v-1l1-2c1-4 2-8 1-12l-4-12-102-178-15-27h-1l-15 27-102 178-4 12a24 24 0 0 0 2 15c4 6 10 12 24 12h190c3 0 18-1 25-12zM256 152l93 163H163l93-163z"
        fill="#2F495E"
        fill-rule="nonzero"
      />
    </g>
  </svg>
</template>
<style>
.NuxtLogo {
  animation: 1s appear;
}

@keyframes appear {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
</style>

~/Desktop/roppong blog/roppong-blog/components master
❯ 
良く使うオプション
  • cat -e
  • 改行コードを含めてファイル表示する

less

ファイルを途中まで表示するページャコマンド。大きいファイルをREAD ONLYで表示する際に良く使う。moreやviewなどがあるが、後者2つはあまり使わない。
ページ操作で良く使うキー(基本的にはvimコマンドと同じ)

  • j, k : 上, 下にページスクロール
  • gg, G : 一番上に移動, 一番下に移動
  • /, ? : 検索モード。続けて検索したい文字を入力する / は下に検索, ? は上に検索
  • q : ページャを修了する
便利なオプション
  • less +F
  • データ更新を待機しつつ表示。別プロセスで処理実行中に、ログの出力をリアルタイムで見たいときなどに便利。終了するときは強制終了コマンド(macの場合 cmd + C)入力の後q で抜ける。

mkdir

make directory
ディレクトリを作成する

~/Desktop/roppong blog/roppong-blog master
❯ mkdir -p ~/Desktop/test
良く使うオプション
  • mkdir -p
  • 子ディレクトリが存在しない場合は、いっぺんに作る

chown

change owner
ユーザを変更する

chmod

ユーザの実行権限を変更する

diff

二つのファイルの差分を確認する

ssh

  • リモート環境にログインする
  • リモート環境でコマンド実行する

scp

サーバ間でファイル転送する

nkf

  • デフォルトではインストールされていないかもしれません
  • 文字コードを確認する
  • 文字コードを変更する

git

  • デフォルトではインストールされていないかもしれません
  • リポジトリ管理します。

vim

  • ファイルを編集します。

sh

  • シェルスクリプトを実行します。

cut

  • 文字列を切り抜きます。

sort

  • ファイルを行単位で昇順・降順に並び替えます。

uniq

  • 重複行を削除します(ファイルがsortされている前提)

wc

  • 行数を数えます。単語を数えます。
  • 先頭n行を表示します。

tail

  • 末尾n行を表示します。

grep

  • 特定ファイルの中の指定文字列を検索します。

cp

  • ファイルをコピーします。

mv

  • ファイルを移動します。
  • ファイル名を変更します。

rm

  • ファイルを削除します。

date

  • 日時を表示します。

sed

  • ワンライナーでファイルを編集します。
  • 文字列置換に良く使う

awk

  • ワンライナーでファイルを編集します。

ps

  • プロセスを表示します。

touch

  • からファイルを作成します。

tar

  • ファイルを圧縮します。