Linuxコマンドメモ

はじめに

自分が良く使ったり、たまにしか使わなくてうろ覚えだったりするコマンドのメモです。

Bashを対象に書いているので、他のシェルでは使い方が違う場合があります。

詳しい使い方はmanコマンドで確認してください。

alias

# コマンドに別名をつける(別名の削除はunalias)
alias 別名=コマンド

# lsと入力するとls -aFCを実行する
alias ls='ls -aFC'

awk

# 第1項目の数と値を数の多い順に出力する
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn

# CSVの第3項目の数を合計する
cat data.csv | awk -F',' 'BEGIN{sum=0}{sum+=$3}END{print sum}'

basename

# ファイルの本体部分を出力(ディレクトリ部分はdirname)
basename ファイルパス

# ファイルの本体部分を出力(拡張子部分を除く)
basename ファイルパス 拡張子

cat

# テキストファイルを表示
cat ファイル

cd

# ディレクトリの移動
cd ディレクトリ

# ホームディレクトリに移動
cd

# 一つ前のディレクトリに移動
cd -

# スクリプトファイルのディレクトリに移動(シェルスクリプト内で使用する)
cd $(dirname $0)

chkconfig

# サービス一覧を表示する
chkconfig --list

# サービスを自動起動するようにする
chkconfig サービス名 on

chmod

# ファイルのパーミッションを変更する
chmod パーミッション ファイルパス

chown

# ファイルの所有者を変更する
chown ユーザー名 ファイルパス

# ファイルの所有者とグループを変更する
chown ユーザー名:グループ名 ファイルパス

# ディレクトリとその配下のファイルとディレクトリの所有者とグループを変更する
chown -R ユーザー名:グループ名 ディレクトリ名

cp

# ファイルのコピー(移動はmv)
cp コピー元 コピー先

# 上書き確認しながらファイルのコピー
cp -i コピー元 コピー先

# ファイルの情報(所有者・更新時刻など)を維持しながらファイルのコピー
cp -p コピー元 コピー先

# ディレクトリのコピー
cp -R コピー元 コピー先

curl

# ファイル内容を表示する
curl URL

# ファイルをダウンロードして保存する
curl -O URL

# ファイルをダウンロードしてファイルパスを指定して保存する
curl -o ファイルパス URL

# リダイレクト先のファイルをダウンロードして保存する
curl -L -O URL

# プロキシを指定する
curl -x proxy.example.com:8080 URL

date

# 現在日時を表示
date

# 書式指定して表示
date '+%Y-%m-%d %H:%M:%S'

# エポック秒を表示
date '+%s'

# 指定日時のエポック秒を表示
date -d '2009-02-14 08:31:30' '+%s'

# エポック秒を指定して書式指定して表示
date -d @1234567890 '+%Y-%m-%d %H:%M:%S'

# 1日前を表示
date --date '1 day ago'

df

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

diff

# ファイルの差分表示
diff ファイル1 ファイル2

# 空白の数の違いを無視して比較
diff -b ファイル1 ファイル2

# 空白を無視して比較
diff -w ファイル1 ファイル2

# 空行を無視して比較
diff -B ファイル1 ファイル2

# 大文字小文字を無視して比較
diff -i ファイル1 ファイル2

# 行末のCRを無視して比較
diff --strip-trailing-cr ファイル1 ファイル2

dirname

# ファイルのディレクトリ部分を出力(本体部分はbasename)
dirname ファイルパス

du

# カレントディレクトリの使用量表示
du -sh

# 配下のディレクトリとファイルの使用量をキロバイト単位で大きい順に表示
du -sk * | sort -rn

# 配下のディレクトリの使用量をキロバイト単位で大きい順に表示
du -k --max-depth=1 | sort -rn

echo

# 文字列を出力
echo 文字列

# 最後に改行を付けずに文字列を出力
echo -n 文字列

env

# 環境変数を表示
env

export

# 環境変数の設定
export 変数名=値

# 環境変数の削除
export -n 変数名

# 日本語ロケールを設定する
export LANG=ja_JP.UTF-8

expr

# 計算結果を出力
expr 1 + 2 + 3

# 計算結果を変数に代入
ANS=$(expr 1 + 2 + 3)

# 計算結果を変数に代入
ANS=`expr 1 + 2 + 3`

getenforce

# SELinuxの状態を確認する
getenforce

gpasswd

# ユーザーをグループに追加する
gpasswd -a ユーザー名 グループ名

# ユーザーをグループから削除する
gpasswd -d ユーザー名 グループ名

grep

# 検索文字列が含まれる行を表示する
grep 検索文字列 ファイルパス

# 大文字・小文字を無視して、検索文字列が含まれる行を表示する
grep -i 検索文字列 ファイルパス

# 検索文字列が含まれない行を表示する
grep -v 検索文字列 ファイルパス

# 検索文字列が含まれる行の行数を表示する
grep -c 検索文字列 ファイルパス

# 検索文字列が含まれる行を行番号付きで表示する
grep -n 検索文字列 ファイルパス

# 検索文字列が含まれるファイルのファイル名を表示する
find . -name '*.html' | xargs grep -l 検索文字列

# 検索文字列が含まれないファイルのファイル名を表示する
find . -name '*.html' | xargs grep -L 検索文字列

# UTF-8のBOM付きのファイルのファイル名を表示する
grep -rl $'\xEF\xBB\xBF' .

grub-crypt

# MD5形式のパスワードハッシュを表示
grub-crypt --md5

# SHA-256形式のパスワードハッシュを表示
grub-crypt --sha-256

# SHA-512形式のパスワードハッシュを表示
grub-crypt --sha-512

head

# ファイルの先頭を表示(末尾はtail)
head ファイル

# 指定行数分を表示
head -n 行数 ファイル

history

# コマンド実行履歴を表示
history

# コマンド実行回数を表示
history | awk '{print $2}' | sort | uniq -c | sort -rn

host

# IPアドレスを表示
host ホスト名

htpasswd

# Apacheの基本認証用のパスワードファイルを作成
htpasswd -c パスワードファイル ユーザー名

# ユーザーを追加、更新
htpasswd パスワードファイル ユーザー名

# パスワードをMD5で保存する
htpasswd -m パスワードファイル ユーザー名

iconv

# シフトJISのファイルをUTF-8に変換
iconv -f SHIFT_JISX0213 -t UTF8 ファイル

# エンコーディングの一覧を表示
iconv --list

id

# IDと所属グループを表示
id

# 指定アカウントの情報を表示
id アカウント名

ifconfig

# ネットワークインターフェースの情報を表示
ifconfig

kill

# プロセスの停止(プロセスIDはpsで分かります)
kill プロセスID

# プロセスの強制停止
kill -9 プロセスID

lastlog

# アカウントごとの最終ログイン日時を表示
lastlog

# 30日以上ログインしていないアカウントの一覧を表示
lastlog -b 30

# 30日以内にログインしたアカウントの一覧を表示
lastlog -t 30

less

# テキストファイルを1画面ずつ表示
less ファイル

Shift+Fでtail -fと同等の表示(Ctrl+Cで抜ける)

:nで次のファイルを開く

:pで前のファイルを開く

ln

# シンボリックリンクを作成
ls -s ターゲット 名前

ls

# ファイルの詳細情報を表示
ls -l

# 新しいファイルを下に表示
ls -ltr

# ファイルサイズを読みやすく表示
ls -lh

man

# コマンドのマニュアルを表示
man コマンド

# crontabコマンドの第5セクションを表示
man 5 crontab

mkdir

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

# 複数階層のディレクトリーを作成
mkdir -p ディレクトリー1/ディレクトリー2

more

# テキストファイルを1画面ずつ表示
more ファイル

mv

# ファイルやディレクトリの移動(コピーはcp)
mv 移動元 移動先

# 上書き確認しながら移動
mv -i 移動元 移動先

ps

# プロセス一覧を表示
ps

# システム全体のプロセス一覧を表示
ps -ef

passwd

# パスワードの変更
passwd

# 指定アカウントのパスワード変更
passwd アカウント名

pwd

# カレントディレクトリの表示
pwd

rev

# 逆順にして表示(行単位)
rev ファイル

rm

# ファイルを削除
rm ファイル

# 削除確認しながらファイルを削除
rm -i ファイル

# ディレクトリを中のファイルごと確認なしで削除
rm -fr ディレクトリ

rmdir

# ディレクトリを削除(中にファイルがあると消せない。まとめて消す場合はrm)
rmdir ディレクトリ

sha1sum

# SHA1チェックサムの出力
sha1sum ファイルパス

ssh-keygen

# SSHの秘密鍵・公開鍵の作成
ssh-keygen -t rsa -C コメント

stat

# ファイルパーミッションを8進数で表示
stat -c%a ファイル

# ファイルサイズを表示
stat -c%s ファイル

# ファイル所有者を表示
stat -c%U ファイル

sudo

# root権限でコマンドを実行する
sudo コマンド

# rootになる(root権限でシェルを実行する)
sudo -s

# 他のアカウントでシェルを実行する
sudo -u アカウント名 -H -s
sudo -u アカウント名 -H /bin/bash

tail

# ファイルの末尾を表示(先頭はhead)
tail ファイル

# 指定行数分を表示
tail -n 行数 ファイル

# ファイルの更新を監視して、表示を更新
tail -f ファイル

tailf

# ファイルの末尾を表示し、その後の追加行を随時表示
# (tail -fとほぼ同じ。tailfはファイル未更新時のディスクアクセスがない)
tailf ファイル

time

# コマンドの実行時間を計測
time コマンド

tr

# CRを削除する
tr -d '\r' < src.txt > dest.txt

unalias

# 別名の削除(コマンドに別名をつけるのはalias)
unalias 別名

unzip

# ファイルの展開(ファイルの圧縮はzip)
unzip ファイルパス

# ファイルの情報を表示
unzip -Z ファイルパス

useradd

# ユーザーを作成する(ユーザーの削除はuserdel)
useradd アカウント名

# ログイン不要のユーザーを作成する
useradd -M -s /bin/false アカウント名

userdel

# ユーザーを削除する
userdel アカウント名(ユーザーの作成はuseradd)

# ユーザーのホームディレクトリーを一緒に削除する
userdel -r アカウント名

uptime

# システム起動からの経過時間を表示
uptime

view

# ファイルを読み取り専用で開く
view ファイル

visudo

# sudoersファイルを編集する
visudo

watch

# コマンドを5秒間隔で実行する
watch -n 5 コマンド名

# コマンドを5秒間隔で実行して、変更部分をハイライトする
watch -n 5 -d コマンド名

wc

# 行数、単語数、バイト数を表示する
wc ファイルパス

# 行数を表示する
wc -l ファイルパス

which

# コマンドのパスを表示する
which コマンド名

# コマンドのパスをすべて表示する
which -a コマンド名

whoami

# アカウント名を表示する
whoami

yum

# パッケージをインストールする
yum install パッケージ名

# 質問にはすべてYESで答える
yum -y install パッケージ名

# パッケージの一覧を表示する
yum list

# 更新可能なパッケージの一覧を表示する
yum check-update

# パッケージをアンインストールする
yum remove パッケージ名

zip

# ファイルを圧縮する(ファイルの展開はunzip)
zip data.zip ファイル1 ファイル2

# ディレクトリ内のファイルを圧縮する
zip -r data.zip ディレクトリ

その他

# シェルスクリプトの配置ディレクトリを取得する
BASE_DIR=$(cd $(dirname $0); pwd)
# LFをCRLFに置換する
perl -p -e 's/\n/\r\n/' lf.txt > crlf.txt
# 直前のコマンドを実行する
!!

# n番目のコマンドを実行する(番号を見るのはhistory)
!n

# 直前のコマンドのaをbに置換して実行する
^a^b
!!:s/a/b/

# n番目のコマンドのaをbに置換して実行する
!n:s/a/b/
# 簡易Webサーバー
plackup -MPlack::App::Directory -e "Plack::App::Directory->new->to_app" -p 8080