Shell の基礎知識

【Shellスクリプト】よく使う基本&便利コマンド一覧:カテゴリ別

以下は、シェルスクリプトで頻繁に使用されるコマンドをカテゴリ別に整理した一覧です。

基本操作

基本操作は、どんな作業を行う際にも必要となるシェルコマンドの基礎です。このカテゴリでは、ディレクトリの移動や環境変数の設定、ファイルやディレクトリの構造を把握するためのツールを網羅的に取り上げています。日常的に使用するコマンドを正確に使いこなすことが、効率的なシステム運用の第一歩です。

コマンド説明使用例オプション
aliasコマンドのエイリアスを作成alias ll='ls -la'なし
basenameパスからファイル名を抽出basename /path/to/file.txt-s 拡張子:指定した拡張子を除外
calカレンダーを表示cal-y:現在の年のカレンダーを表示
-m 月:特定の月を表示
cdディレクトリを変更cd /path/to/directory-P:シンボリックリンクを解決
clear画面をクリアclearなし
date現在の日付と時刻を表示date "+%Y-%m-%d %T"+%Y-%m-%d:年月日を表示
+%T:時刻を表示
dirnameパスからディレクトリ部分を抽出dirname /path/to/file.txtなし
echoメッセージや変数の値を出力echo "Hello, World!"-n:改行を抑制
-e:エスケープシーケンスを有効化
env環境変数を表示envなし
export環境変数を設定export VAR=valueなし
help組み込みコマンドのヘルプを表示help cd-d:デバッグモードで表示
historyコマンド履歴を表示history-c:履歴を消去
-n:新しい履歴を読み込む
id現在のユーザーのIDとグループIDを表示id-u:ユーザーIDのみ表示
-g:グループIDのみ表示
lsディレクトリの内容を一覧表示ls -l-l:詳細情報付きで表示
-a:隠しファイルを含めて表示
-h:サイズを人間が読みやすい形式で表示
printenv環境変数を表示printenv PATHなし
pwd現在のディレクトリを表示pwdなし
readonly変数を読み取り専用に設定readonly VARなし
seq指定した範囲の数値を生成seq 1 10-w:ゼロ埋めで出力
-s 文字列:出力を区切る文字列を指定
timeコマンドの実行時間を測定time lsなし
typeコマンドの種類を表示type cdなし
unaliasエイリアスを削除unalias llなし
whichコマンドの実行ファイルのパスを表示which lsなし
whoami現在のユーザー名を表示whoamiなし

ファイル操作

ファイルの生成、移動、削除から、テキストの検索や編集まで、ファイル操作の知識はシステム運用の核となります。このカテゴリでは、grep や sed、awk といった強力なツールを含む、さまざまなファイル操作コマンドを網羅します。データ管理の柔軟性を向上させるための技術を確認できます。

コマンド説明使用例オプション
awkテキスト処理ツールawk '{print $2}' file.txt-F:フィールド区切りを指定
basenameパスからファイル名を抽出basename /path/to/file.txt-s 拡張子:指定した拡張子を除外
catファイルの内容を表示cat file.txt-n:各行に行番号を付与
-E:行末記号を表示
chmodファイルやディレクトリの権限を変更chmod 755 file.txt-R:再帰的に変更
chownファイルやディレクトリの所有者を変更chown user:group file.txt-R:再帰的に変更
cpファイルやディレクトリをコピーcp source.txt destination.txt-r:ディレクトリを再帰的にコピー
-i:上書き前に確認
cutファイルの一部を抽出cut -d: -f1 file.txt-d 文字:区切り文字を指定
-f フィールド:抽出するフィールドを指定
diff2つのファイルを比較diff file1.txt file2.txt-u:統一形式で出力
dirnameパスからディレクトリ部分を抽出dirname /path/to/file.txtなし
fileファイルの種類を表示file file.txtなし
findファイルを検索find /path -name 'filename'-name:名前で検索
-mtime:最終更新日で検索
grepテキストファイルから特定の文字列を検索grep 'pattern' file.txt-i:大文字小文字を区別しない
-r:ディレクトリを再帰的に検索
lnシンボリックリンクやハードリンクを作成ln -s target linkname-s:シンボリックリンクを作成
mktemp一時ファイルを作成mktemp-d:ディレクトリを作成
mvファイルやディレクトリを移動または名前変更mv oldname.txt newname.txt-i:上書き前に確認
-v:処理内容を表示
renameファイル名を一括リネームrename 's/old/new/' *.txtなし
rmファイルやディレクトリを削除rm file.txt-r:ディレクトリを再帰的に削除
-f:確認なしで強制削除
sedテキストを編集sed 's/old/new/g' file.txts/old/new/g:文字列を置換
shredファイルを安全に削除shred -u file.txt-u:ファイルを削除
-n 回数:指定回数上書き
sortデータをソートsort file.txt-r:降順でソート
-n:数値でソート
splitファイルを分割split -b 1M file.txt-b サイズ:指定したサイズで分割
statファイルの詳細情報を表示stat file.txtなし
tarファイルやディレクトリをアーカイブtar -czvf archive.tar.gz /path-c:新しいアーカイブを作成
-x:アーカイブを展開
-z:gzip形式で圧縮
tee出力をファイルに保存しつつ標準出力ls | tee output.txt-a:ファイルに追記
touch空のファイルを作成touch newfile.txt-a:アクセスタイムのみ変更
-m:修正時間のみ変更
tr文字列を置換echo 'text' | tr a-z A-Z-d:指定文字を削除
uniq重複を削除uniq file.txt-c:重複回数を表示
unzipZIPファイルを解凍unzip archive.zip-l:圧縮ファイルの内容をリスト表示
vimファイルを編集vim file.txt+行番号:指定行から開始
wc単語、行数、バイト数を表示wc -l file.txt-l:行数を表示
-w:単語数を表示
xargs引数を別コマンドに渡すfind . -name '*.txt' | xargs rm-n 数:コマンドライン引数の数を制限
-I 文字列:プレースホルダーを指定
zipファイルを圧縮zip archive.zip file.txt-r:ディレクトリを再帰的に圧縮

ネットワーク操作

ネットワーク環境の構築やトラブルシューティングを効率化するために必要なコマンドを集約。ネットワーク接続確認の基本から、通信状況のモニタリング、外部サーバーとのデータのやり取りまで、包括的なネットワーク操作スキルを支えるコマンドが揃っています。

コマンド説明使用例オプション
arpARPキャッシュを操作arp -a-a:ARPテーブルを表示
curlURLからデータを取得curl -O https://example.com/file.txt-O:URLのファイル名で保存
-L:リダイレクトを追跡
-d データ:POSTデータを送信
digDNS情報を取得dig example.com@サーバー:特定のDNSサーバーを指定
+short:簡略形式で出力
ethtoolイーサネットデバイスを設定ethtool eth0-i:デバイス情報を表示
-s:デバイスの状態を設定
ftpFTPサーバーに接続ftp ftp.example.comなし
ifconfigネットワークインターフェイスを設定・表示ifconfig eth0up:インターフェイスを有効化
down:インターフェイスを無効化
ipネットワークの設定を管理ip addraddr:IPアドレスを表示
link:インターフェイス情報を表示
nc(netcat)ネットワーク通信を行うnc -zv host 80-z:ポートスキャンモード
-v:詳細情報を表示
netstatネットワーク接続や統計情報を表示netstat -tuln-t:TCP接続を表示
-u:UDP接続を表示
-n:数値形式で出力
pingネットワーク接続を確認ping 8.8.8.8-c 数:パケット送信回数を指定
-i 秒:パケット送信間隔を指定
rsyncファイルやディレクトリを効率的に同期rsync -avz /src/dir /dest/dir-a:アーカイブモードでコピー
--delete:同期先に不要なファイルを削除
scpファイルをリモートサーバーと転送scp file.txt user@host:/path/to/dest-r:ディレクトリを再帰的にコピー
-P ポート番号:ポート番号を指定
sshリモートサーバーに接続ssh user@host-p ポート番号:ポート番号を指定
-i 鍵ファイル:鍵ファイルを指定
telnetリモートホストに接続telnet hostなし
tracerouteパケットの経路を追跡traceroute example.com-m 数:最大ホップ数を指定
-p ポート番号:特定のポートを使用
wgetURLからファイルをダウンロードwget https://example.com/file.txt-c:中断したダウンロードを再開
-r:再帰的にダウンロード

システム操作

システムリソースの状態を的確に把握し、適切に管理するために必要なコマンド群を扱います。プロセス管理、ディスク使用量の確認、メモリの使用状況など、パフォーマンスモニタリングに欠かせない操作を中心に取り上げています。

コマンド説明使用例オプション
crontabスケジュールタスクを管理crontab -e-e:タスクを編集
-l:タスク一覧を表示
dfディスクの空き容量を表示df -h-h:読みやすい形式で出力
-T:ファイルシステムの種類を表示
dmesgカーネルメッセージを表示dmesg-T:タイムスタンプを人間が読みやすい形式で表示
duディレクトリやファイルの使用容量を表示du -sh /path/to/dir-h:読みやすい形式で出力
-s:合計サイズのみ表示
freeメモリの使用状況を表示free -h-h:読みやすい形式で表示
htopインタラクティブなプロセスモニタhtopなし
iostatCPU使用率とI/Oの統計を表示iostat-x:詳細なI/O統計を表示
iotopI/Oの使用状況を表示iotop-o:現在I/Oを使用しているプロセスのみ表示
kill指定したプロセスを終了kill 1234-9:強制終了
lsof開いているファイルを表示lsof-i:ネットワーク接続を表示
ps実行中のプロセスを表示ps aux-e:すべてのプロセスを表示
-f:詳細な形式で表示
rebootシステムを再起動rebootなし
shutdownシステムをシャットダウンshutdown now-r:再起動を実行
-h:シャットダウン後に停止
topリアルタイムでシステムのパフォーマンスを表示top-d 秒:更新間隔を指定
uptimeシステムの稼働時間を表示uptimeなし
vmstatシステムのパフォーマンスを表示vmstat 1-s:システムの統計を表示
wログイン中のユーザーとシステム情報を表示wなし
who現在ログインしているユーザーを表示whoなし

パーミッション管理

セキュアなシステム運用を実現するために、ファイルやディレクトリのアクセス権を適切に管理する技術が重要です。このカテゴリでは、基本的なパーミッションの変更から、ACL(アクセス制御リスト)による詳細な設定まで、アクセス権の制御に必要なコマンドを網羅しています。

コマンド説明使用例オプション
getfaclファイルやディレクトリのACL(アクセス制御リスト)を表示getfacl file.txt-R:ディレクトリを再帰的に表示
setfaclファイルやディレクトリにACL(アクセス制御リスト)を設定setfacl -m u:username:rwx file.txt-m:ACLを変更
-x:指定したエントリを削除
-R:ディレクトリを再帰的に適用
umask新規ファイルやディレクトリのデフォルトパーミッションを設定umask 022-S:シンボリック形式で表示

プロセス管理

システム内で動作するプロセスを効率的に管理するために必要な操作を網羅。バックグラウンドジョブの制御や特定のプロセスの検索、終了方法など、システムの安定性を維持する上で必須のスキルにフォーカスしています。

コマンド説明使用例オプション
bgジョブをバックグラウンドで再開bg %1なし
fgジョブをフォアグラウンドで再開fg %1なし
jobsシェルのバックグラウンドジョブを表示jobs-l:ジョブ番号とPIDを表示
pgrep名前でプロセスを検索pgrep bash-u ユーザー:指定したユーザーのプロセスを検索
-l:プロセス名とPIDを表示
pkill名前でプロセスを終了pkill bash-u ユーザー:指定したユーザーのプロセスを終了
-SIGKILL:強制終了(シグナル指定)

ログ管理

システムの状態を把握し、トラブルシューティングを効率的に進めるためには、ログを適切に操作する技術が不可欠です。このカテゴリでは、ログの表示、フィルタリング、記録など、運用に必要な操作を行うためのコマンドを幅広く取り上げています。

コマンド説明使用例オプション
headファイルの先頭を表示head -n 10 /var/log/syslog-n 行数:表示する行数を指定
journalctlsystemdのログを表示journalctl -u nginx.service-u ユニット名:特定のユニットのログを表示
-f:リアルタイムでログを表示
--since \時間\":指定した時間以降のログを表示"
loggerシステムログにメッセージを記録logger \ログに記録するメッセージ\""-p 優先度:ログの優先度を指定
-t タグ:メッセージにタグを付ける
tailファイルの末尾を表示tail -n 10 /var/log/syslog-n 行数:表示する行数を指定
-f:ファイルの末尾を継続的に表示

アーカイブ管理

データの保存や転送を効率化するために欠かせないアーカイブ管理の知識を整理。圧縮と解凍、アーカイブの作成と展開に特化したコマンドを中心に、膨大なデータを扱う際の作業効率を大幅に向上させる手法を取り上げています。

コマンド説明使用例オプション
bunzip2bzip2形式で圧縮されたファイルを解凍bunzip2 file.txt.bz2なし
bzip2ファイルをbzip2形式で圧縮bzip2 file.txt-k:元のファイルを保持
-z:圧縮モード(デフォルト)
gunzipgzipで圧縮されたファイルを解凍gunzip file.txt.gz-k:元の圧縮ファイルを保持
gzipファイルを圧縮gzip file.txt-k:元のファイルを保持
-r:ディレクトリを再帰的に圧縮
tarファイルやディレクトリをアーカイブtar -czvf archive.tar.gz /path-c:新しいアーカイブを作成
-x:アーカイブを展開
-z:gzip形式で圧縮
-j:bzip2形式で圧縮
-v:処理内容を詳細に表示
unxzxz形式で圧縮されたファイルを解凍unxz file.txt.xzなし
xzファイルをxz形式で圧縮xz file.txt-k:元のファイルを保持
-z:圧縮モード(デフォルト)

セキュリティとアクセス管理

セキュリティポリシーの実装とシステムアクセスの制御は、安定した運用の基盤となります。このカテゴリでは、ユーザー管理やアクセス権の設定に関連する重要なコマンドを扱い、システムの安全性と信頼性を高めるための手法を整理しています。

コマンド説明使用例オプション
chmodファイルやディレクトリのパーミッションを変更chmod 755 file.txt-R:ディレクトリを再帰的に変更
+x:実行権限を付与
-w:書き込み権限を削除
chownファイルやディレクトリの所有者を変更chown user:group file.txt-R:ディレクトリを再帰的に変更
passwdユーザーのパスワードを変更passwd-l:アカウントをロック
-u:アカウントをアンロック
-d:パスワードを削除
su別のユーザーに切り替えsu - username-:ログインシェルを開始
sudo管理者権限でコマンドを実行sudo apt update-l:現在許可されているコマンドを表示
-u ユーザー:指定したユーザーとしてコマンドを実行

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shell の基礎知識