使用頻度の高いLinuxコマンド

Linuxをコマンド操作する際に、初心者の方でもとりあえず覚えておけば活用できるコマンドをご紹介します。

各コマンドを詳細に説明するのではなく、実際に使用頻度の高いものだけ(オプション含む)を厳選し、具体的な記述でご紹介しております。 一部、RHEL/CentOS互換ディストリビューション専用コマンドの記述が含まれています。

掲載コマンドリスト(以下、アルファベット順) cal cat cd chgrp chmod chown cp crontab curl date df/du diff echo env find fsck grep history kill last less ln -s ls man mkdir mv passwd ps pwd quota rm tail tar top touch uname uptime vi w wget
cd 作業ディレクトリの移動
ホームディレクトリに移動します。
cd
現在のディレクトリ内に存在する public_html ディレクトリに移動します。
cd public_html
ホームディレクトリ直下の /usr/local ディレクトリに移動します。
cd /usr/local
ひとつ上のディレクトリに移動します。
cd ../
ls ファイルやディレクトリを表示
現在のディレクトリ内のファイル・ディレクトリを表示します。
ls
現在のディレクトリ内のファイル・ディレクトリ一覧を、詳細表示&特殊ファイルも表示&読みやすい単位形式で表示します。
ls -lah
/usr/local 内のファイル・ディレクトリ一覧を、詳細表示&特殊ファイルも表示&読みやすい単位形式で表示します。
ls -lah /usr/local
オプションの「-l」でファイル・ディレクトリ一覧を詳細に表示します。 オプションの「-a」でファイル・ディレクトリ一覧を特殊ファイルも含めて表示します。 オプションの「-h」でファイル・ディレクトリ一覧を読みやすい単位形式で表示します。 UNIX/LINUX系では .(ドット)で始まるファイルがシステムファイル、特殊ファイルになります。
cp ファイルやディレクトリをコピー
hello.php を hola.php という名前でコピーします。
cp hello.php hola.php
main.html を main-backup.html という名前でファイル属性を保持したままコピーします。
cp -p main.html main-backup.html
index.html をひとつ上のディレクトリ直下にある old ディレクトリ内に同じ名前でコピーします。
cp index.html ../old/index.html
images ディレクトリを images-backup というディレクトリ名で再帰的にコピーします。
cp -r images/ images-backup/
js ディレクトリをひとつ上のディレクトリ直下にある new ディレクトリ内にファイル属性を保持したまま、同じ名前で再帰的にコピーします。
cp -rp js/ ../new/js/
再帰的にコピーとは、ディレクトリ内のデータ(サブディレクトリを含む)も全てコピーするという意味です。 オプションの「-p」でコピー元のファイル属性(オーナー、グループ、パーミッション、タイムスタンプ)を保持したままコピーします。 コピー元がシンボリックリンクの場合、オプションの「-dp」でそのままコピーします。
mv ファイルやディレクトリの移動、名前の変更
index.php をひとつ上の user ディレクトリに移動します。
mv index.php ../user/
test1 という名前のファイルを test2 という名前に変更します。
mv test1 test2
test1 という名前のファイルを test1.backup という名前に変更します。
mv test1{,.backup}
hoge-dir という名前のディレクトリを fuga-dir というディレクトリ名に変更します。
mv hoge-dir fuga-dir
sample-dir という名前のディレクトリを sample-dir2 というディレクトリ名に変更します。
mv sample-dir{,2}
ディレクトリ名を変更する際、変更後のディレクトリ名が既存ディレクトリと重複しないように注意が必要です。重複する場合はそのディレクトリに移動します。
rm ファイルやディレクトリを削除
hello.php を削除します。
rm hello.php
logo.jpg を今すぐ確認せずに(注意メッセージを表示せずに)削除します。
rm -f logo.jpg
dir ディレクトリを再帰的に削除します。
rm -r dir/
cart ディレクトリを今すぐ確認せずに(注意メッセージを表示せずに)再帰的に削除します。
rm -rf cart/
symbo という名前のシンボリックリンクを削除します。
rm symbo
再帰的に削除とは、ディレクトリ内のデータ(サブディレクトリを含む)を全て削除するという意味です。 注意事項として、Linuxではファイルの削除後は基本的に復元できません。例えば「rm -rf /」はサーバー内の全データを削除するコマンドですので、システムが回復不能になる可能性があります。 シンボリックリンクを削除する際「rm symbo/」のように末尾に「/」を入れるとリンク先の本体ディレクトリまで削除されてしまうので注意してください。シンボリックリンクの削除は安全な「unlink」のご利用をお勧めします。
mkdir ディレクトリを作成
htdocs という名前のディレクトリを作成します。
mkdir htdocs
doc1 というディレクトリが無ければ doc1 を作成し、その中に doc2 を作成します。
mkdir -p doc1/doc2
オプションの「-p」でディレクトリの中のディレクトリ(サブディレクトリ)を含む階層のあるディレクトリを作成できます。つまり、親ディレクトリが存在しなくても自動的に最後のサブディレクトリまで作成してくれます。
cat ファイルの内容を一度にすべて表示
test.html の内容を表示します。
cat test.html
memo.txt の内容を行番号を付けて表示します。
cat -n memo.txt
test.html と sample.php の内容をつなげて表示します。
cat test.html sample.php
cat は数行で終わる内容のファイルなら問題ないですが、行が多いファイルを開く場合、SSHクライアントの表示行数限度を超えてしまって収まらなくなる場合があります。
SSHクライアント「Putty」の機能と併用することで、ファイルの内容をクリップボードへコピーすることができます。 端末をリセット(Puttyの機能) スクロールバックをクリア(Puttyの機能) cat ファイル名 すべてをクリップボードへコピー(Puttyの機能)
less ファイルの内容を1画面ずつ表示
index.html の内容を閲覧します。
less index.html
index.html の内容から「meta」を含む行だけを抽出して閲覧します。
grep "meta" index.html | less
index.html の内容を行番号を付けて閲覧します。
less -N index.html
文字列の「meta」を反転させて index.html の内容を閲覧します。
less -p "meta" index.html
index.html の内容をファイル名、表示中の行数、全行数、進行率を表示して閲覧します。
less -M index.html
ファイル内の文字列検索時に大文字と小文字を区別しないモードで index.html の内容を閲覧します。
less -i index.html
SPACEキーで次の1画面へ進みます。 「b」キーで前の1画面へ戻ります。 「e」キーで1行先へ進みます。 「y」キーで1行前へ戻ります。 「g」キーで先頭の画面へ移ります。 「G」キーで最終の画面へ移ります。 「/」キーで現在位置から末尾方向に文字列を検索し、その場所に移動します。 検索中に「n」キーで次の候補へ移動します。 検索中に「N」キーで前の候補へ移動します。 「q」キーでファイルの閲覧を終了します。
tail テキスト・ファイルの末尾を閲覧
mail.log の末尾から10行を閲覧します。
tail mail.log
mail.log の末尾から25行を閲覧します。
tail -n 25 mail.log
随時、内容が変化する mail.log の終わりから10行を自動更新でリアルタイムにモニタリングします。
tail -f mail.log
随時、内容が変化する mail.log の終わりから50行を自動更新でリアルタイムにモニタリングします。
tail -fn 50 mail.log
モニタリングは「Ctrl」&「c」キーで終了します。
vi エディタでファイルを編集
index.php を編集します。対象のファイルが存在しない場合は index.php を新規作成して編集します。
vi index.php
ひとつ上のディレクトリ内の index.php を編集します。対象のファイルが存在しない場合は、ひとつ上のディレクトリ内に index.php を新規作成して編集します。
vi ../index.php
viコマンド実行時、全ての内容を削除します。
:%d
viコマンド実行時、日本語が文字化けしていた場合に文字コード「shift_jis」を指定して閲覧します。
:e ++enc=shift_jis
find ファイルやディレクトリを再帰的に検索
現在のディレクトリ以下から hoge.txt という名前のファイルを検索します。
find ./ -name "hoge.txt"
現在のディレクトリ以下から hogehogehoge という名前のディレクトリを検索します。
find ./ -name "hogehogehoge" -type d
再帰的ではなく、現在のディレクトリ内から .html ファイルのみを検索します。
find ./ -maxdepth 1 -name "*.html"
現在のディレクトリ以下から1MBより大きいサイズのファイルを検索します。
find ./ -size +1000000c
現在のディレクトリ以下から1000バイトより小さいサイズのファイルを検索します。
find ./ -size -1000c
現在のディレクトリ以下から1MBより大きいサイズのファイルを検索し、サイズ値等の詳細を表示します。
find ./ -size +1M -ls
現在のディレクトリ以下から30分以内に修正、更新されたファイル(ディレクトリは対象外)を検索します。
find ./ -mmin -30 -type f
現在のディレクトリ以下から12時間以内に修正、更新されたファイル(ディレクトリは対象外)を検索します。
find ./ -mmin -720 -type f
現在のディレクトリ以下から4日前に修正、更新されたファイルを検索します。
find ./ -mtime 4
現在のディレクトリ以下から5日以前に修正、更新されたファイルを検索します。
find ./ -mtime +4
現在のディレクトリ以下から3日以内に修正、更新されたファイル(ディレクトリは対象外)を検索します。
find ./ -mtime -4 -type f
現在のディレクトリ内に存在する backup ディレクトリ内の(backup ディレクトリ自体は含まない)ディレクトリを検索します。
find ./backup/ -type d -mindepth 1
現在のディレクトリ内に存在する backup ディレクトリ以下でファイル名が blog から始まる9日以前に修正、更新されたファイルを削除します。
find ./backup/ -name "blog*" -mtime +8 -exec rm -f {} \;
現在のディレクトリ内に存在する backup ディレクトリ以下でディレクトリ名が data から始まる1440分(24時間)以前に修正、更新されたディレクトリとその中のデータを削除します。
find ./backup/ -type d -name "data*" -mmin +1439 -prune -exec rm -rf {} \;
再帰的に検索とは、ディレクトリ内の全てのデータ(サブディレクトリを含む)から検索するという意味です。 find コマンドの後に続く「./」は必須ではありません。 オプションの「-mmin」や「-mtime」はタイムスタンプで修正更新日時を判別しています。
grep 文字列を抽出
現在のディレクトリ内のファイルから、文字列「utf-8」を含むファイルを抽出し一覧表示します。
grep "utf-8" ./*
現在のディレクトリ内のファイルから、大文字・小文字に関係なく文字列「utf-8」を含むファイルを抽出し一覧表示します。
grep -i "utf-8" ./*
現在のディレクトリ内のファイルから、文字列「utf-8」を含むファイルを抽出しファイル名のみを一覧表示します。
grep -l "utf-8" ./*
現在のディレクトリ内のファイルから、文字列「utf-8」を含むファイルを行番号を付けて抽出し一覧表示します。
grep -n "utf-8" ./*
現在のディレクトリ以下のファイルから、文字列「utf-8」を含むファイルを再帰的に抽出し一覧表示します。
grep -r "utf-8" ./*
現在のディレクトリ内のファイル error.log から、文字列「login」を含む行を抽出し一覧表示します。
grep "login" error.log
または、別コマンドの cat を併用する方法として
cat error.log | grep "login"
現在のディレクトリ内のファイル error.log から、文字列「login」または「logout」または「user」を含む行を抽出し一覧表示します。
cat error.log | grep -E "login|logout|user"
現在のディレクトリ内のファイル error.log から、文字列「login」と「logout」と「user」を含む行を抽出し一覧表示します。
cat error.log | grep "login" | grep "logout" | grep "user"
現在のプロセスから文字列「httpd」を含む行を抽出し一覧表示します。
ps aux | grep "httpd"
再帰的に抽出とは、ディレクトリ内の全てのデータ(サブディレクトリを含む)から抽出するという意味です。 コマンド | grep "文字列" で各種コマンドの出力結果から文字列を抽出して一覧表示することができます。
tar ファイル・ディレクトリの圧縮・解凍
web ディレクトリ以下をパーミッションとタイムスタンプを記録して server.tar.gz という名前で .tar.gz形式で圧縮します。
tar -pcvzf server.tar.gz ./web
.tar.gz形式で圧縮された server.tar.gz をパーミッションとタイムスタンプを反映して解凍します。
tar -pxvzf server.tar.gz
backup ディレクトリ以下をパーミッションとタイムスタンプを記録して backup.tar という名前で .tar形式で書庫化(非圧縮)します。
tar -pcvf backup.tar ./backup
.tar形式で書庫化(非圧縮)された backup.tar をパーミッションとタイムスタンプを反映して解凍します。
tar -pxvf backup.tar
server.tar.gz の内容を表示します。
tar -tf server.tar.gz
server.tar.gz の内容を詳細も含めて表示します。
tar -tvf server.tar.gz
現在のディレクトリ以下の .html ファイルのみを backup ディレクトリ内に実行日時の名前で .tar.gz形式圧縮します。
find ./ -name "*.html" | xargs tar -pcvzf ./backup/`date +%Y%m%d%H%M%S`.tar.gz
現在のディレクトリ内の .html ファイルのみを backup ディレクトリ内に実行日時の名前で .tar.gz形式圧縮します。
find ./ -maxdepth 1 -name "*.html" | xargs tar -pcvzf ./backup/`date +%Y%m%d%H%M%S`.tar.gz
オプションの「-x」で書庫化を戻します。 オプションの「-c」で書庫化します。 オプションの「-v」で処理中のファイル名を表示します。 オプションの「-z」で gzip形式で圧縮、gzip形式の圧縮ファイルを解凍します。 オプションの「-f」でファイル名を指定します。 オプションの「-p」でパーミッションやタイムスタンプ等のファイル属性を圧縮・解凍先に反映します。
chmod パーミッションを変更
log.txt のパーミッションを「666」に変更します。
chmod 666 log.txt
tmp ディレクトリとその中の全てのディレクトリ&ファイルのパーミッションを再帰的に「777」に変更します。
chmod -R 777 tmp/
tmp ディレクトリ内のディレクトリ以外の全てのファイルのパーミッションを再帰的に「644」に変更します。
find ./tmp/ -type f -exec chmod 644 {} \;
tmp ディレクトリとその中のディレクトリのみ、パーミッションを再帰的に「755」に変更します。
find ./tmp/ -type d -exec chmod 755 {} \;
rwx → 7(4+2+1)= 読み出し可+書き込み可+実行可 rw- → 6(4+2)= 読み出し可+書き込み可 r-x → 5(4+1)= 読み出し可+実行可 -wx → 3(2+1)= 書き込み可+実行可
chown ファイル・ディレクトリの所有者を変更
log.txt の所有者を「user1」に変更します。
chown user1 log.txt
tmp ディレクトリとその中の全てのディレクトリ&ファイルの所有者を再帰的に「user1」に変更します。
chown -R user1 tmp/
tmp ディレクトリ内のディレクトリ以外の全てのファイルの所有者を再帰的に「user1」に変更します。
find ./tmp/ -type f -exec chown user1 {} \;
tmp ディレクトリとその中のディレクトリのみ、所有者を再帰的に「user1」に変更します。
find ./tmp/ -type d -exec chown user1 {} \;
変更できるユーザーはスーパーユーザーに限られます。
chgrp ファイル・ディレクトリのグループを変更
log.txt のグループを「group1」に変更します。
chgrp group1 log.txt
tmp ディレクトリとその中の全てのディレクトリ&ファイルのグループを再帰的に「group1」に変更します。
chgrp -R group1 tmp/
tmp ディレクトリ内のディレクトリ以外の全てのファイルのグループを再帰的に「group1」に変更します。
find ./tmp/ -type f -exec chgrp group1 {} \;
tmp ディレクトリとその中のディレクトリのみ、グループを再帰的に「group1」に変更します。
find ./tmp/ -type d -exec chgrp group1 {} \;
変更できるユーザーはファイルやディレクトリの所有者かスーパーユーザーに限られます。
wget 外部ファイルのダウンロード
指定したURLのデータをダウンロードします。
wget http://www.xxxxx.co.jp/file.tar.gz
指定したURLに存在するPNG画像データのみをダウンロードします。
wget -A .png http://www.xxxxx.co.jp/index.html
そのHTMLページに含まれる画像やCSSなどもダウンロードし、ローカルで開けるように絶対パスから相対パスに書き換えます。
wget -pk http://www.xxxxx.co.jp/index.html
BASIC認証のあるURLのデータをダウンロードします。
wget --http-user=ユーザー名 --http-passwd=パスワード http://www.xxxxx.co.jp/file.tar.gz
curl 外部ファイルにアクセス(ダウンロードやアップロードも可能)
指定したURLのソースを表示します。
curl http://www.xxxxx.jp/
IPv6で指定したURLのソースを表示します。
curl "http://[2001:1xx0:xxxx:1::20]/"
サーバーから外部へ接続する際のグローバルIPを確認します。
curl inet-ip.info
「-d KEY=VALUE」でパラメータを定義(複数可)し、指定したURLに対してPOST送信を行います。
curl -d name=zatsu -d my_id=log http://www.xxxxx.php
BASIC認証のあるURLにアクセスします。
curl -u username:password http://www.xxxxx.jp/login/
指定したURLのSSL接続の証明書エラーをスキップしてアクセスします。
curl -k https://www.xxxxx.jp/
指定したFTP接続先(末尾のスラッシュ「/」は必須)のディレクトリ情報をリスト表示します。
curl -u username:password ftp://ftp.xxxxx.jp/public_html/
または、別の記述として
curl ftp://username:password@ftp.xxxxx.jp/public_html/
FTP接続によりファイルをダウンロードします。
curl -u username:password -O ftp://ftp.xxxxx.jp/public_html/img/image.jpg
FTP接続により指定ディレクトリ(末尾のスラッシュ「/」は必須)へ「-T」の後に記述したファイルをアップロードします。
curl -T image.gif -u username:password ftp://ftp.xxxxx.jp/public_html/img/
df/du 各種容量の確認
現在のディスク使用量を確認します。
df -h
今居るディレクトリ以下の合計容量を確認します。
du -sh
今居るディレクトリ内の容量の大きなファイル&ディレクトリの100位までを降順表示します。
du --max-depth 1 | sort -rn | head -100
今居るディレクトリ以下の容量の大きなファイル&ディレクトリ100位までを再帰的に降順表示します。
du -ma | sort -rn | head -100
今居るディレクトリ以下の容量の大きなディレクトリのみ100位までを再帰的に降順表示します。
du -m | sort -rn | head -100
再帰的に降順表示とは、ディレクトリ内の全てのデータ(サブディレクトリを含む)から降順表示するという意味です。
ln -s シンボリックリンク(ショートカット)を作成します。
/home/hoge/www にアクセスすると、/var/www/ のフォルダにリンクします。
ln -s /var/www/ /home/hoge/www
/var/www/html/index.php にアクセスすると、/var/www/html/default.php にリンクします。
ln -s /var/www/html/default.php /var/www/html/index.php
上記で作成したシンボリックリンク「/var/www/html/index.php」を(ディレクトリに移動してから)削除します。
cd /var/www/html/
unlink ./index.php
シンボリックリンクは rm で削除するとリンク先の実体を削除する危険があるので「unlink」で削除する方法が安全です。
crontab cron設定 を確認・登録&編集・削除します。
SSHでログインしているユーザーの cron設定 の内容を表示します。
crontab -l
SSHでログインしているユーザーの cron設定 をエディタを起動して登録&編集します。
crontab -e
SSHでログインしているユーザーの cron設定 を削除します。
crontab -r
上記コマンドは実際には「/var/spool/cron/ユーザー名」を編集していることになります。 つまり、「/var/spool/cron/ユーザー名」を直接 less(閲覧)、vi(編集)、rm(削除)しても結果は同じです。
ps プロセスを表示します。
現在のプロセスを詳細に一覧表示します。
ps aux
kill プロセスを終了します。
プロセス番号の7873番を停止します。
kill 7873
応答のないプロセスを強制的に停止する場合は「-KILL」か「-9」を指定して実行します。
kill -9 7873
プロセスを再起動したい場合は「-HUP」を指定して実行します。
kill -HUP 7873
プロセス名で指定する場合は「pkill」を使用します。
pkill -HUP httpd
コマンド履歴(history)を残さずにログアウトします。
kill -9 $$
top 実行中のプロセスをCPU利用率が高い順に表示します。
実行中のプロセス情報をリアルタイムで表示します。
top
キーボードの「Ctrl+c」か「q」で停止します。 「h」でヘルプを表示します。 「Shift + p」でCPUの使用時間率の長いプロセスを降順表示します。 「Shift + m」でメモリ使用量が多いプロセスを降順表示します。 「Shift + t」で実行時間が長いプロセスを降順表示します。 「d」または「s」で更新の間隔を変更します。デフォルトの間隔は3.0秒です。
uptime サーバーが起動してからの経過時間や過去1分間、5分間、15分間の平均負荷値を表示します。
サーバーの連続稼動時間やロードアベレージを確認します。
uptime
「top」コマンド実行時の1行目に表示される内容のみを表示します。
diff 2つのファイルの差分を表示します。
ファイルAとBを比較し差分内容を出力します。
diff -c A B
ディレクトリAとBを再帰的に比較し差分内容を出力します。
diff -r A B
ディレクトリAとBを再帰的に比較し差分内容ではなく差分概要のみを出力します。
diff -rq A B
date 現在の時刻を表示したり時刻設定します。
サーバーの現在時間を指定した形式で表示します。
date +"%Y/%m/%d %p %I:%M:%S"
サーバーの時間を20018/06/24 19:48:10に合わせます。
date -s "2018/06/24 19:48:10"
touch 新規ファイルを作成したりタイムスタンプを変更します。
target.html という名前でファイルを新規作成します。
touch target.html
target.html の更新日時を2018年12月5日19時1分に変更します。
touch -t 201812051901 target.html
target.html が存在しなければ新規作成はせずに、存在している場合は更新日時を2018年12月5日19時1分に変更します。
touch -c 201812051901 target.html
target.html の更新日時を文字列指定で2019年2月15日4時35分に変更します。
touch -d "2019-2-15 4:35" target.html
target.html の更新日時を existing.html と同一に変更します。
touch -r existing.html target.html
全てのファイルの更新日時を一括で2018年3月25日21時17分に変更します。
touch -t 201803252117 ./*
uname システム情報を表示します。
マシン(ハードウェア)のタイプ、ノード名、OSのリリース、OS名およびOSのバージョンを表示します。
uname -a
env 環境変数を表示します。
設定されている全ての環境変数を表示します。
env
echo 文字列や数値、変数を表示します。
サーバーの文字コードを確認します。
echo $LANG
通っているパスを確認します。
echo $PATH
pwd カレントディレクトリのパス(現在のディレクトリの場所)を表示します。
現在のディレクトリの場所を絶対パスで表示します。
pwd
quota ディスクの使用状況と使用リミットを表示します。
記憶媒体が割り当てられていないファイルシステムも含め詳細に表示する。
quota -v
man マニュアルを表示します。
man ls
この場合、lsコマンドのマニュアルを表示します。
標準では less を使って表示しているので、キーボードの「q」でマニュアルの閲覧を終了します。
cal カレンダーを出力します。
今月のカレンダーを出力します。
cal
2050年のカレンダーを出力します。
cal 2050
2020年8月のカレンダーを出力します。
cal 8 2020
passwd パスワードを変更します。
ユーザー自身のパスワードを変更します。
passwd
指定したユーザーのパスワードを変更します。
passwd ユーザー名
「passwd」のみでユーザー自身のパスワードを変更し、rootユーザーは「passwd ユーザー名」で指定したユーザーのパスワードを変更することができます。
w ログインしているユーザーの情報を表示します。
現在ログインしているユーザー名とその利用状況を表示します。
w
last 最近ログインしたユーザーリストを表示します。
過去にログインしたユーザー履歴から最新の3件のみを表示します。
last -3
過去にログインに失敗した履歴を表示します。
lastb
過去にログインに失敗した履歴から最新の3件のみを表示します。
lastb -3
history 過去に実行したコマンドの履歴を表示します。
実行したコマンドの最新5件を出力します。
history 5
履歴を全て削除します。
history -c
通常の「exit」ではなくログインシェルを強制終了させる「kill -9 $$」コマンドで、履歴を削除したという痕跡を残さずにログアウトできます。 コマンド実行前に「unset HISTFILE」で、その起動中のシェルで実行したコマンドは履歴に保存されなくなります。 (シェルの終了で効果も終了します)
fsck ファイルシステムの検査を行い、問題があれば自動で修復します。
ファイルシステム「/dev/sda2」を検査し、問題があれば自動で修復します。
fsck /dev/sda2
ファイルシステム「/dev/sda2」の検査・修復中の問い(y or n)を省略して実行します。
fsck -y /dev/sda2
Windows の scandisk に当たるコマンドです。 実行にはroot権限が必要です。