Linux Command

Linux Command #

画面の操作 #

ターミナル操作のショートカット #

MacWindowsdescription
control + actrl + aカーソルを行頭へ移動
control + ectrl + eカーソルを行末へ移動
control + fctrl + fカーソルを前進(右へ移動)
control + bctrl + bカーソルを後退(左へ移動)
control + dctrl + dカーソル上の1文字削除
control + hctrl + hカーソル後方(左)の1文字削除
control + uctrl + uカーソルから行頭まで削除
control + kctrl + kカーソルから行末まで削除
control + wctrl + wカーソル上の単語1つ分削除
control + yctrl + y最後に削除した文字を貼り付け
control + pctrl + p1つ前のコマンド履歴を表示
control + nctrl + n1つ後のコマンド履歴を表示
control + sctrl + s画面をロック
control + qctrl + q画面のロックを解除
control + cctrl + c実行中のコマンドを強制終了
control + l(エル)ctrl + l(エル)画面をクリア
tabtabコマンド,ディレクトリ,ファイルの候補を補完

history: コマンド入力履歴を操作 #

history コマンドの主なオプション #

optiondescription
整数値履歴の末尾から指定した行数分を表示
-c履歴一覧から全ての項目を削除
-d 番号指定した番号の履歴項目を削除
-a履歴ファイルに現在のセッションの履歴を追加
-n履歴ファイルからまだ読み込まれていない行を全て読み込み
-r履歴ファイルを読み込み、内容を履歴一覧に追加
-w現在の履歴を履歴ファイルに上書き

コマンド入力履歴を表示 #

履歴を末尾から10件分表示

$ history 10

コマンドライン上で !番号 と入力することで指定したコマンドを実行
e.g. 履歴の末尾から5件目のコマンドを実行する場合

!5

履歴の件数が多い場合 head コマンドで冒頭のみ表示

$ history | head

コマンド入力履歴を削除 #

指定した番号の履歴を削除
e.g. 5番の履歴を削除

$ history -d 5

全ての履歴を削除

$ history -c

現在のコマンド入力履歴を履歴ファイルに上書き #

e.g. 現在の履歴を sample.txt に上書き

$ history -w sample.txt

履歴ファイルを読み込み #

e.g. sample.txt の内容を履歴として読み込み

$ history -r sample.txt

grep/find: 検索 #

grep コマンドの使用方法 #

grep 検索したい文字列 検索したいテキストファイル

任意のコマンドの実行結果に対して検索

コマンド | grep 検索したい文字列

複数のパターンを指定

grep -e 検索したい文字列1 -e 検索したい文字列2 検索したいテキストファイル

指定したディレクトリ配下を再帰的に検索, 検索結果に行番号を表示

grep -rn -e 'pattern' /dir/

grep コマンドの主なオプション #

optionoptiondescription
-e 'パターン'--regexp='パターン'パターンを指定して検索
-f--file=ファイルファイルに記載したパターン(1行1パターン)を読み込み検索に使用
-i--ignore-caseアルファベットの大文字と小文字を区別せず検索
-w--word-regexp単語全体でパターンと一致するものを検索
-x--line-regexp行全体がパターンと一致するものを検索
-G--basic-regexp基本正規表現(BRE)を検索に使用
-E--extended-regexp拡張正規表現(ERE)を検索に使用
-P--perl-regexpPerl互換正規表現(PCRE)を検索に使用
-v--invert-matchパターンに一致しない行を表示
-s--no-messagesエラーメッセージを非表示
-q--quiet --silent結果を非表示(主にシェルスクリプトなどで判定用に使用
-L--files-without-match一致するものが含まれていないファイルのファイル名のみ表示
-l--files-with-matches一致するものが含まれているファイルのファイル名のみ表示
-c--count一致するものが含まれている回数のみ表示
-m 回数--max-count=回数パターンが指定した回数に達したら処理を終了
-o--only-matching一致した箇所だけを表示(通常は行単位で表示)
-n--line-number行番号を併せて表示(「行番号付きで表示」を参照)
-b--byte-offsetパターンが何文字目にあるかを併せて表示
-H--with-filenameファイル名を併せて表示
-h--no-filenameファイル名を表示しない(複数ファイル指定時)
--color=WHEN見つかったパターンを目立たせる(WHEN部分にはalways、never、autoを指定)
-B 行数--before-context=行数一致した行の前の行も表示(「前後の行も表示」を参照)
-A 行数--after-context=行数一致した行の後の行も表示(「前後の行も表示」を参照)
-C 行数,-行数--context=行数一致した行の前後の行も表示
-r--recursiveディレクトリを指定した場合はサブディレクトリ内のファイルも含め検索

タイムスタンプで検索 #

現在〜2日前(48時間前) #

find ./ -mtime -2

2日前(48時間前〜72時間前) #

find ./ -mtime 2

2日前(72時間前)〜過去 #

find ./ -mtime +1

e.g) 特定のディレクトリ内の30日以前のCSV拡張子のファイルを削除

find ./ -type f -name '*.csv' -mtime +30 | xargs rm -f

find コマンドの主なオプション #

optiondescription
-mminファイルのデータの最終更新日時(分指定)
-mtimeファイルのデータの最終更新日時(日指定)
-aminファイルのデータの最終アクセス日時(分指定)
-atimeファイルのデータの最終アクセス日時(日指定)
-cminファイルのデータとステータスの最終更新日時(分指定)
-ctimeファイルのデータとステータスの最終更新日時(日指定)
-daystart00:00am 基準

ls: ディレクトリやファイルの一覧を表示 #

タイムスタンプ降順で一覧表示(隠しファイル含む) #

ls -alt

タイムスタンプ昇順で一覧表示(隠しファイル含む) #

ls -altr

ls コマンドの主なオプション #

optiondescription
-a先頭 . の隠しファイルも表示
-A先頭 . の隠しファイル, 現在のディレクトリ ., 親ディレクトリ .. も表示
-l(エル)詳細情報を表示
-tタイムタンプ降順で表示
-trタイムタンプ昇順で表示

tree: ディレクトリやファイルの構成を表示 #

tree コマンド のインストール (macOS) #

$ brew install tree

tree コマンドのバージョンを表示 #

$ tree --version

階層を指定 #

e.g. カレントディレクトリ配下の3階層まで表示する場合

$ tree -L 3

ファイル名のパターンを指定 #

$ tree -P '*.js'

除外するファイル名のパターンを指定 #

$ tree -I '*.log'

ディレクトリのみを表示 #

$ tree -d

GitHub と同じように構成を表示 #

$ tree --gitignore --dirsfirst

tree コマンドの主なオプション #

optionoptiondescription
-aドット始まりのディレクトリを含めて表示
-dディレクトリのみ表示
-lシンボリックをたどって表示
-fカレントディレクトリまたは指定したディレクトリからのパスをつけてファイルやディレクトリを表示
-L 整数表示するディレクトリの階層(深さ), 1以上の整数を指定
-N印字できない文字をそのまま出力(マルチバイトの文字化け防止)
-P パターンパターンにマッチしたファイルのみ表示
-l パターンパターンにマッチしないファイルのみ表示
--prune表示対象ファイルが存在しないディレクトリを除外して表示
--filelimit エントリ数指定した数を超えるエントリを持つディレクトリの内部は非表示(–filelimit 10 の場合, 表示内容が10イないのディレクトリの内部のみを表示)
-o ファイル名treeコマンドの結果を指定ファイルに出力

touch: タイムスタンプを変更/ファイルを作成 #

ファイルのタイムスタンプを変更 #

e.g) ファイルのタイムスタンプ(最終更新日)を「2021-01-01 01:25:30」に変更

touch --date="2021-01-01 01:25:30" sample.txt

or

touch -t 202101012530.30 sample.txt

空ファイルを作成 #

touch sample.txt
short optionlong optiondescription
-t <time>-[[CC]YY]MMDDhhmm[.ss] 形式で日時を指定
-d-date=日付文字列文字列で日時を指定
-r–reference=ファイル名指定したファイルと同じ日時を指定

mkdir: ディレクトリを作成 #

多階層のディレクトリを作成 #

mkdir -p /dir/subdir/{subsubdir-1,subsubdir-2,subsubdir-3}
dir
└── subdir
    ├── subsubdir-1
    ├── subsubdir-2
    └── subsubdir-3

作成したディレクトリに作業場所を移動 #

mkdir -p /dir/subdir/subsubdir/ && cd $_

rm: ディレクトリやファイルを削除 #

1ファイルを削除 #

$ rm sample.txt

複数ファイルを削除 #

$ rm sample-1.txt sample-2.txt sample-3.txt

カレントディレクトリの全ファイルを確認しながら削除 #

$ rm -i *

rm コマンドの主なオプション #

optionoptiondescription
-f--force削除前の確認なし(指定したファイルが存在しない場合もエラー表示なし)
-i--interactive削除前に確認
-v--verbose経過を表示
-d--directoryunlink でディレクトリを削除
-r,-R--recursiveディレクトリを再帰的に削除(ファイルを含む)
--preserve-root/ の削除なし (/ を特別なものとして扱う, デフォルト)
--no-preserve-root/ の削除あり (/ を特別なものとして扱わない)

rmdir: 空ディレクトリを削除 #

$ rmdir dir

多階層の空ディレクトリを削除

$ rmdir -p dir1/dir2/dir3

rmdir コマンドの主なオプション #

optionoptiondescription
--ignore-fail-on-non-empty空ディレクトリでない場合のエラーのみ無視(エラーメッセージの表示なし)
-p--parents必要に応じて親ディレクトリも削除
-v--verbose経過を表示

cp: コピー #

※ 基本的にファイルもディレクトリも操作は同じ

ファイルをコピー #

cp -ip original.txt copy.txt

ディレクトリごとファイルをコピー #

cp -ipr original-dir copy-dir

ファイルをコピーする際にバックアップを作成 #

cp -b --suffix=_$(date +%Y%m%d%H%M%S) original.txt copy.txt

cp コマンドの主なオプション #

optionoptiondescription
-v--verbose実行内容を表示
-i--interactiveコピー元とコピー先が同名の場合, 上書きする前に確認
-b--backup=方法コピー元とコピー先が同名の場合, 上書きされるファイル(コピー先)のバックアップを作成|
-S--suffix=接尾語バックアップ作成時の接尾語を指定
-u--updateコピー元のファイルがコピー先ファイルより新しいか新規ファイルの場合だけコピー
-r--recursiveコピー元にディレクトリを指定した場合 再帰的にコピー
-p--preserveコピー元のパーミッションと所有者とタイムスタンプを保持(–preserve=mode,ownership,timestampsと同じ)
-s--symbolic-linkシンボリック・リンクを作成

ネットワーク上のホスト間のSSHを利用したコピー #

scp [option] [転送元ユーザー名@][転送元ホスト名:]転送元ファイルパス 転送先ユーザー名@転送先ホスト名:転送先パス

scp コマンドの主なオプション #

optiondescription
-r転送元のディレクトリ全体を再帰的にコピー
-v転送の進行情報を表すメーターやデバッグ・メッセージを表示
-q転送の進行情報を表すメーターを非表示
-C通信を圧縮
-p転送元の最終更新日時・最終アクセス日時・パーミッションを転送先に保持
-P ポート番号転送先のポート番号を指定
-i 秘密鍵ファイル秘密鍵ファイルを指定

mv: 移動または名称を変更 #

※ 基本的にファイルもディレクトリも操作は同じ

1つのファイルを移動 #

e.g) ファイル sample.txt を ディレクトリ ./dir/ に移動

mv sample.txt ./dir/

複数のファイルを移動 #

e.g) ファイル sample1.txtsample2.txt を ディレクトリ ./dir/ に移動

mv sample1.txt sample2.txt ./dir/

ファイルの名称を変更(リネーム) #

ファイル before.txtafter.txt に変更

mv before.txt after.txt

mv コマンドの主なオプション #

optionoptiondescription
-v--verbose実行内容を表示
-i--interactive移動元と移動先が同名の場合, 上書きする前に確認
-b--backup=方法移動元と移動先が同名の場合, 上書きされるファイル(移動先)のバックアップを作成|
-S--suffix=接尾語バックアップ作成時の接尾語を指定
-n--noclobber移動元と移動先が同名の場合, 上書きせず停止
-u--update移動元のファイルが移動先ファイルより新しいか新規ファイルの場合のみ上書き

ln: ディレクトリやファイルのリンクを作成 #

ハードリンクとシンボリックリンク #

  • シンボリックリンクでファイルの「別名」なら、ハードリンクはファイルの「本名」。
  • ハードリンクの場合、元ファイルもリンクもどちらも「本名」。両者は同等。

ディレクトリのシンボリックリンクを作成 #

ln -s ディレクトリ名 リンク名

ファイルのシンボリックリンクを作成 #

ln -s ファイル名 リンク名

指定したディレクトリ内にシンボリックリンクを作成 #

ln -s ファイル1 ファイル2・・・ ディレクトリ名

ディレクトリのハードリンクを作成 #

ln ディレクトリ名 リンク名

ファイルのハードリンクを作成 #

ln ファイル名 リンク名

ln コマンドの主なオプション #

optionoptiondescription
-s--symbolicハードリンクの代わりにシンボリックリンクを作成
-d,-F--directoryディレクトリのハードリンクを作成(スーパーユーザーのみ)
-f--forceリンクファイルと同名のファイルがある場合も強制的に上書き
-i--interactive上書きする場合に確認
-n--no-dereferenceリンク作成場所として指定したディレクトリがシンボリックリンクだった場合、参照先にリンクを作成するのではなく、シンボリックリンクそのものを置き換え(-fと組み合わせて使用)
-L--logical対象がシンボリックリンクの場合リンクを巡る
-P--physicalシンボリック自体のハードリンクを作成
-r--relative相対パスのシンボリックリンクを作成
-T--no-target-directoryリンク先を常に通常ファイルとして扱う
-t ディレクトリ名--target-directory=ディレクトリ名指定したディレクトリにリンクを作成
-b--backup=方法上書きされるバックアップを作成。numbered または t の場合は番号の添字。simple または never の場合はファイルの末尾に ~ または -S オプションか環境変数で指定した文字をつけるシンプルなバックアップ(-b と同じ)。existing または nil の場合はすでにあるファイルに従う(ない場合は simple と同じ)
-S 接尾辞--suffix=接尾辞バックアップファイル作成時にファイル末尾に付与する文字を指定(未指定の場合は ~ または環境変数 SIMPLE_BACKUP_SUFFIX)
-v--verbose経過を表示

cat: ファイル内容を表示 #

cat コマンドとは #

ファイルを連結するためのコマンドだが、ファイルの内容を簡単に表示する際に使用されている。 cat = conCATenate (つなぐ, 連結する)

ファイルの内容を行番号付きで表示 #

$ cat -n sample.txt

複数のファイルを連結して 1つのファイルに出力 #

$ cat before1.txt before2.txt > after.txt

cat コマンドの主なオプション #

optionoptiondescription
-n--number行番号を付与
-b--number-nonblank行番号を付与(空白行以外)
-s-squeeze-blank連続した空行を1行として表示
-v--show-nonprintingタブ, 改行, 改ページ以外の非表示文字を表示
-t非表示文字を表示(タブを ^|, 用紙送りを ^L として表示
-E--show-ends行の最後に $ を表示
-A--show-all全ての非表示文字を表示(-vET と同じ)
-eタブを除く全ての非表示文字を表示(-vE と同じ)

less: ファイル内容を表示 #

ファイル内容を1画面に表示(編集なし) #

less sample.txt

行番号も表示

less -N sample.txt

ファイル内容表示時のショートカット #

less コマンド

commanddescription
d半画面前進(下へ移動)
u半画面後退(上へ移動)
g先頭行へ移動
G最終行へ移動
vvi コマンドで編集
q終了
/前方(下方向)へ検索 (n 下方向, N 上方向)
?後方(上方向)へ検索 (n 下方向, N 上方向)

vim: ファイル内容を編集 #

ファイルの作成と編集 vi sample.txt

入力モードへの切り替え #

commanddescription
i現在のカーソル位置に入力
A現在のカーソル位置の行末に入力
O1つ上の行に文字を入力
o1つ下の行に文字を入力

入力モードからコマンドモードへの切り替え #

commanddescription
esc入力モードからコマンドモードへ切り替え

コマンドモードの操作 #

commanddescription
x1文字削除
dd1行削除
d100d100行削除
y行コピー
y100y100行コピー
pコピーした行の貼り付け
G最終行へ移動
100G100行目へ移動
/前方(下方向)へ検索
?後方(上方向)へ検索
:q!ファイルを保存せずに終了(閉じる)
:wqファイルを保存して終了(閉じる)
:wファイルを保存のみ(viは終了しない状態)

vim/find/sed: 文字の置換 #

ファイル内で置換 #

  • :s command: ‘substitute’
  • g option: ‘global’

e.g. Change each ‘foo’ to ‘bar’ in the current line.

:s/foo/bar/g

e.g. Change each ‘foo’ to ‘bar’ in all lines.

:%s/foo/bar/g

e.g. Delete each ‘foo’ in all lines.

:%s/foo//g

再帰的に走査し対象ファイル内で一括置換 #

e.g. 拡張子が .txt のファイル内の文字列 ‘foo’ を ‘bar’ に置換

LC_ALL=C find . -type f -name '*.txt' -exec sed -i '' s/foo/bar/g {} +

vim: 文字コードを操作 #

文字コードの値 #

文字コードコマンドで指定する値remarks
Shift_JIScp932 or sjiscp932 には sjis に含まれていない文字(①, ②, Ⅰ, Ⅱ, ㍉, ㌍, 彅, 髙 etc.)を含む。
EUC-JPeuc-jp-
UTF-8utf-8-

文字コードを設定 #

.vimrc 以下を記述し :wq で保存。

:set encoding=utf-8
:set fileencodings=utf-8,cp932,sjis,euc-jp
longshortdescription
encodingencvim の内部で使用されるエンコーディングを指定。
fileencodingfenc編集時のバッファファイルのエンコーディングを指定。encodingと異なる値が設定されていた場合、ファイルの読み書き時に文字コードを変換。fenc が空の場合、変換なし。
fileencodingsfencs既存ファイル編集時の変換予定の文字コードを指定。カンマ区切りで複数記述可。

vim 内部で使用される文字コードを表示 #

:set encoding?

or

:se enc?

ファイルの文字コードを表示 #

:set fileencoding?

or

:se fenc?

ファイルの文字コードの自動判別設定を表示 #

:set fileencodings?

or

:se fencs?

指定の文字コードでファイルを開き直し #

:edit ++encoding=コマンドで指定する文字コードの値

or

:e ++enc=コマンドで指定する文字コードの値

ファイルの文字コードを変換 #

以下を実行後に :w で保存すること。

:set fileencoding=コマンドで指定する文字コードの値

or

:set fenc=コマンドで指定する文字コードの値

ファイルの文字コードを変換し保存 #

:setlocal fileencoding=コマンドで指定する文字コードの値

or

:setl fenc=コマンドで指定する文字コードの値

vim: 改行コードを操作 #

改行コードの設定 #

.vimrc 以下を記述し :wq で保存。

:set fileformats=unix,dos,mac

改行コードの値 #

改行コードコマンドで指定する値remarks
LF(Line Feed) \nunixUnix, Linux, Mac(OS10以降), Android
CR(Carriage Return) \rmac古いMac(OS9以前)
CRLF(Carriage Return/Line Feed) \r\ndosWindows

改行コードを指定 #

以下を実行後に :w で保存すること。

:set fileformat=コマンドで指定する改行コードの値

or

:se ff=コマンドで指定する改行コードの値

改行コードを指定し保存 #

:setlocal fileformat=コマンドで指定する改行コードの値

or

:setl ff=コマンドで指定する改行コードの値

wc/grep: ファイルの行数・単語数を表示 #

ファイルの行数 #

ファイルの行数を表示 #

wc -l sample.txt

ファイルの単語数を表示 #

wc -w sample.txt

ファイルのバイト数を表示 #

wc -c sample.txt

ファイルの空行の行数を表示 #

grep -c '^$' sample.txt

指定した文字と一致しない行数を表示 #

grep -c -v 'hoge' sample.txt

正規表現と一致する行数を表示 #

e.g.) 半角数字10桁のみの行数

grep -c -E '^[0-9]{10}$' sample.txt

uniq: ファイル内容の重複を確認 #

重複行は1行目のみを表示 #

uniq sample.txt

重複する行のみ出力 #

uniq -d sample.txt

sort: 並べ替え #

テキストファイルを行単位で並べ替えるコマンド

sort コマンドの主なオプション #

並べ替え関連 #

optionoptiondescription
-f--ignore-case大文字/小文字を区別せずに並べ替え
-V--version-sort自然な(バージョン)数字順で並べ替え
-n--numeric-sort文字列を数値と見なして並べ替え
-h--human-numeric-sort人が読むことのできる形式の数値で並べ替え(e.g. 5K, 1.2G etc.)
-g--general-numeric-sort一般的な数値として並べ替え
-M--month-sort月名で並べ替え
-d--dictionary-orderデータが空白と英数字のみ含まれていると仮定して並べ替え
-b--ignore-leading-blanks先頭の空白を無視して並べ替え
-i--ignore-nonprinting表示可能な文字だけを対象に並べ替え
-R--random-sortキーのランダムハッシュ順に並べ替え
--random-source=ファイルランダムソースのファイルを設定
--sort=指定並べ替えの方法を指定 (general-numeric、human-numeric、month、numeric、random、version)
-r--reverse逆順で並べ替え
-k 指定--key=指定所と並べ替え種別を指定する (-k 5なら5列目、-k 5n なら5列目を数値として並べ替え。複数指定する場合は -k オプションを複数回指定)
-t 文字--field-separator=文字フィールドの区切り文字を指定(デフォルトは空白文字)

その他 #

optionoptiondescription
-m--merge並べ替えられたファイルをマージ (並べ替え自体は行わない)
-c--check, --check=diagnose-first並べ替えられているかどうかを確認
-C--check=quiet, --check=silent-c と同様だがメッセージは出力しない(スクリプト内の判定行などで使用)
-u--unique同一行は1つ目だけを出力(-c と併せて使用した場合、厳密に順序を確認)
-z--zero-terminated最後に NULL 文字を出力
-o ファイル名--output=ファイル名結果を出力するファイル名を指定(デフォルトは標準出力)
--files0-from=FNULL文字で区切られたファイル名のリストを指定(--files0-from=- とした場合、ファイル名を標準入力から読み込み
--debug並べ替えに使用されている行の一部に注釈を付けて、不確かな使用方法について標準エラー出力に警告を表示

指定した列で並べ替え #

区切り文字を , として 5列目の項目で並べ替え

sort -k 5 -t , sample.csv

区切り文字を , として 5列目の項目を数字として並べ替え

sort -k 5n -t , sample.csv

ファイル内容の並べ替え #

並べ替えた結果を表示 #

sort sample.txt

並べ替え重複行は1行目のみを表示 #

sort -u sample.txt
sort --unique sample.txt

並べられているか確認 #

sort -c
sort --check

zip/tar: 圧縮・解凍・暗号解除 #

zip コマンドでの圧縮 #

zip圧縮後に元ファイルを削除

zip -rm after.zip before.file

パスワード付き zip ファイルの作成

zip -e -r after.zip before/

zip コマンドでの展開 #

$ unzip sample.zip

zip ファイルの暗号解除 #

$ zipcloak -d sample.zip

encrypted_data.zip の暗号を解除し decrypted_data.zip に保存

$ zipcloak -d -O decrypted_data.zip encrypted_data.zip

zipcloak コマンドの主なオプション #

optionoptiondescription
-d--decrypt暗号を解除 (間違ったパスワードを入力した場合、zip ファイルを元のまま上書き。
-O ZIPファイル名--output-file ZIPファイル名暗号を解除したZIPファイルの保存先を指定。 (元のZIPファイルはそのまま残る。)
-b パス--temp-path一時作業用のディレクトリを指定。
-q--quiet動作中のメッセージを非表示。

tarコマンドでの圧縮 #

tar コマンドでファイルのアーカイブを作成し gzip 形式に圧縮

$ tar -czvf after.tar.gz before.txt

カレントディレクトリの全ファイルをまとめたアーカイブを作成し gzip 形式に圧縮

$ tar -czvf after.tar.gz *

tar コマンドでの展開(解凍) #

gzip 形式で圧縮されたアーカイブを tar コマンドで展開

$ tar -xzvf sample.tar.gz

tar コマンドの主なオプション #

optionoptiondescription
-c--create新しいアーカイブを作成
-r--appendアーカイブの最後にファイルを追加
-A--catenate, --concatenateアーカイブに tarアーカイブを追加
-u--updateアーカイブのファイルを更新 (アーカイブ内の同名ファイルより新しいものだけを追加)
-d--diff, --compareアーカイブとファイルシステムを比較
--deleteアーカイブから削除
-t--listアーカイブの内容の一覧を表示
-x--extract, --getアーカイブからファイルを抽出

tar コマンドの共通のオプション #

optionoptiondescription
-z--gzipアーカイブを gzip 形式で圧縮。gzip 形式で圧縮されたアーカイブを展開。拡張子は .tar.gz または .tgz
-j--bzip2アーカイブを bzip2 形式で圧縮。bzip2 形式で圧縮されたアーカイブを展開。拡張子は .tar.bz2
-Z--compress, --uncompressアーカイブを compress 形式で圧縮。compress 形式で圧縮されたアーカイブを展開。拡張子は .tar.Z
-W--verifyアーカイブを書き出した後に検証。
-v--verbose処理したファイルを詳しく出力。

date: 日付・時刻を表示 #

TOMORROW=`date '+%Y%m%d' --date '1 day'`
YESTERDAY=`date '+%Y%m%d' --date '-1 day'`
echo ${TOMORROW}
echo ${YESTERDAY}

date コマンドの主なオプション #

formatdescription
%H時 (00~23)
%I時 (01~12)
%k時 ( 0~23)
%l時 ( 1~12)
%M分 (00~59)
%pAM あるいは PM のロケール(国や地域に合わせた文字列)
%r12時間形式の時刻 (HH:mm:ss [AP]M)
%s1970-01-01 00:00:00 UTC からの秒数
%S秒 (00~61)
%T24時間形式の時刻 (HH:mm:ss)
%aロケールによる省略形の曜日の名前 (Sun~Sat)
%Aロケールによる完全に表記した曜日の名前(Sunday~Saturday)
%bロケールによる省略形の月の名前 (Jan~Dec)
%Bロケールによる完全に表記した月の名前(January~December)
%cロケールによる日付と時刻 (Sat Nov 04 12:02:33 EST 1989)
%d日(月内通算日数) (01~31)
%D日付 (MM/DD/YY)
%j年内通算日数 (001~366)
%m月 (01~12)
%w週のうちの曜日(0~6)で0が日曜日に対応
%xロケールによる日付の表現 (MM/DD/YY)
%y西暦の下2けた (00~99)
%Y年 (1970~)

タイムゾーンを表示 #

$ date +%Z
JST
$ date +"%Z %z"
JST +0900

df: ディスク容量を表示 #

df コマンドとは #

  • ディスクの空き領域(free スペース)のサイズを集計して表示

df コマンドの主なオプション #

optionoptiondescription
-h--human-readableサイズに応じて人間が読みやすい単位に変換して表示
-H--siイズに応じて人間が読みやすい単位に変換して表示、ただし 1024単位ではなく 1000単位の値を使用
-Bサイズ--block-size=サイズ指定したサイズの倍数で表示、サイズは数値または単位で指定
-k`–block-size=1K``` と同じ
-m`–block-size=1M``` と同じ
-P--portabilityPOSIX出力形式(サイズではなくブロックで表示)
-i--inodesブロック使用量の代わりにiノード情報を確認
-T--print-type各ファイルシステムの種類を合わせて表示
-t種類--type=種類対象とするフォーマットの種類を指定(e.g.「-txfs」でXFSフォーマットの場所のみ表示)
-x種類--exclude-type=種類対象としないフォーマットの種類を指定
-a--allダミーファイルシステムを含めて表示
-l--localローカルファイルシステムのみを表示
--total全体の合計も表示
--sync使用量の情報を得る前にsyncを実行
--no-sync使用量の情報を得る前にsyncの実行なし(デフォルト)

ディスクの空き容量を表示 #

df

メガ(1024×1024バイト)単位で表示

df -BM

メガ(1000×1000バイト)単位で表示

df -BMB

フォーマットの種類も合わせて表示

df -T

XFSでフォーマットされているパーティションの空き領域と合計を表示

df -txfs --total

ディスクの空き容量を表示(場所を指定して集計) #

カレントディレクトリを含むパーティションの空き領域を表示

df .

/usr を含むパーティションの空き領域を表示

df /usr

ディスクの空き容量を読みやすいサイズ表記で表示 #

df -h

空き領域の合計もあわせて表示

df -h --total

du: ディスク使用量を表示 #

du コマンドとは #

  • ディスク使用量を集計し表示
  • アクセス権限のないファイルやディレクトリは集計対象外

du コマンドの主なオプション #

集計 #

optionoptiondescription
-S--separate-dirsサブディレクトリのサイズを含めずに集計
-s--summarize指定したディレクトリの合計のみ表示(サブディレクトリの行は非表示)
-d 深さ--max-depth=深さ集計するディレクトリの深さを指定
-P--no-dereferenceシンボリックをたどらずに集計(デフォルト)
-L–dereference`全てのシンボリックをたどって集計
-D, -H–dereference-argsコマンドラインで指定されたシンボリックのみたどって集計
-x--one-file-system異なるファイルシステム(パーティーション)にあるディレクトリをスキップして集計
-l--count-linksハードリンクがある場合、その個数分のサイズを数える
--exclude=パターンパターンと一致するファイルを除外して集計
-X ファイル--exclude-from=ファイルファイルに含まれるパターンに一致するファイルを除外して集計
--files0-from=ファイルファイルに指定されたリスト(NULL区切り)を対象に集計、- を指定した場合は標準入力から読み込み

表示 #

optionoptiondescription
-h--human-readableサイズに応じて人間が読みやすい単位に変換して表示
-H--siサイズに応じて人間が読みやすい単位に変換して表示、ただし 1024単位ではなく 1000単位の値を使用
-B サイズ--block-size=サイズ指定したサイズの倍数で表示、サイズは数値または単位で指定
-k--block-size=1K と同じ
-m--block-size=1M と同じ
--apparent-sizeディスク使用量ではなく実際のサイズを表示
-b`–bytes実際のサイズをバイト単位で表示( --apparent-size または --block-size=1 に相当)
-c--total全体の合計も表示
-0--null改行ではなく NULL で区切って表示
--time集計対象となったファイルの最終更新時間を対象ごとに表示
--time=表示表示の値に指定した atime access use ctime status の時間を表示
--time-style=スタイル時間の表示スタイルとして full-iso long-iso iso +FORMAT を指定、+FORMATdate コマンドのフォーマット指定と共通

特定ディレクトリ配下でディスク使用量が大きい順に表示 #

du -hs /path/to/target/directory/* | sort -hr | head -10

カレントディレクトリ直下のファイルやディレクトリのディスク使用量とその合計を表示 #

$ du -cs *

集計するディレクトリの深さを指定 #

e.g. ルートディレクトリとその直下のディスク容量を1階層まで表示
(他のパーティーションにあるファイルは対象外)
-x 1つのファイルシステムのみを集計

$ du -d1 -x /

env/locale: 環境変数を表示 #

env コマンドとは #

環境変数を指定してコマンドを実行

env 環境変数名=値 コマンド

e.g.
環境変数を一覧表示

$ env

環境変数を指定しないで実行

$ date
Mon Jan 10 10:30:00 JST 2022

一時的に特定の環境変数を設定して(上書きして)実行

$ env LANG=ja_JP.UTF-8 date
2022年 1月10日 月曜日 10時30分10秒 JST

一時的に全ての環境変数を未設定の状態で実行

$ env -i date

env コマンドの主なオプション #

optionoptiondescription
-i, ---ignore-environment一時的に「全ての環境変数が未設定の状態」でコマンドを実行
-u 環境変数名--unset=環境変数名一時的に「指定した環境変数が未設定の状態」でコマンドを実行
0--null改行せずに表示(出力行の末尾を改行文字ではなくNULL文字にする、一覧表示する際のみ指定可能)

指定可能なロケールを表示 #

$ locale -a

システム情報/バージョンを表示 #

システム情報を表示 #

uname -a

カーネルのバージョン情報を表示 #

cat /proc/version

OSのバージョン情報を表示 #

cat /etc/os-release

OSのバージョン情報を表示(ディストリビューション別) #

※RHEL=Red Hat Enterprise Linux

commandRHEL※CentOSFedoraAmazon LinuxOracle LinuxDebianUbuntuSUSE Linux
cat /etc/system-releaseYesYesYesYesYes
cat /etc/redhat-releaseYesYesYesYes
cat /etc/centos-releaseYes
cat /etc/fedora-releaseYes
cat /etc/oracle-releaseYes
cat /etc/debian_versionYesYes
cat /etc/lsb-releaseYes
cat /etc/SuSE-releaseYes

OSのバージョン情報確認コマンドを表示 #

ls -l /etc/*release

その他 #

ログイン中のユーザーを表示 #

LOGIN_USER=`who am i | awk -F ' ' '{print $1}'`
echo $LOGIN_USER

CSVの全行のカラム数の一致を確認 #

e.g. カラム数が 10 と一致しない行の数を確認

cat sample.csv | awk -F ',' '{print NF}' | grep -c -v 10

CSVの特定のカラムのみを抽出 #

e.g. 10カラム目のみ抽出

cut -d ',' -f 10 sample.csv > specific_column.csv

References #