トップページ > コンテンツ > コンピュータ関連その他 > UNIXコマンド

よく使いそうなUNIX系コマンドをリスト化。
基本的にUNIX系コマンドは/bin/や/usr/binにある。
/sbinにあるUNIX系コマンドで実行できない場合には、
su -でルート権限で入るか、$PATH=$PATH=/sbinとパスを追加するとなおることがある。

■目次


マニュアル系コマンド

man マニュアルの表示
help ヘルプを表示する。
type コマンドに関する情報を表示する

シャットダウン・ログアウト系コマンド

shutdown -h nowでシャットダウン、-r nowで再起動できる。似たコマンドでinit,halt,reboot等がある。
exit ログアウトする。Ctrl+dでも同様のことができる

テキスト加工系コマンド

sed,tr 文字列置換コマンド
awk テキスト加工コマンド
cut 文字列切り出しコマンド
grep 正規表現によるパターンマッチングを行い、マッチングする行を表示する。gzファイルを検索する時はzgrep
sort ソートする。
uniq 重複行や重複していない行のみを抽出する。
wc テキストやファイルの行数、バイト数等をカウント
expand タブをスペースに変更。unexpandはその逆。
nl テキストに行番号をつける
paste 横にファイルを結合させる。-dでデリミタ文字(1文字)を指定できる。
join フィールドが共通する行を結合させる。SQLのjoinのような感じ

文字コード系コマンド

nkf 文字コードを変換する
iconv 文字コードを変換する
convmv ファイル名(中身でない)の文字コードを変換する。

ディレクトリ・ファイル操作系のコマンド

■移動系コマンド(自分)

cd 移動する。cd -とすると前に戻れる
pushd/popd/dirs スタックに記録を残しながら、移動する。
pwd カレントディレクトリの表示

■移動系コマンド(ファイル等)

cp コピー。cp コピー元 コピー先の順に書く。
mv ファイルの移動

■作成・削除系コマンド

mkdir/rmdir ディレクトリを作成/削除する。pオプションで階層構造も一度に作成できる。
ln オプション無だとハードリンクの作成。
-sでシンボリックリンクの作成。
rm ファイルの削除。rm -rでディレクトリごと削除。-fで削除前の確認を省略して削除。逆に-iは必ず削除前に確認させる。
shred ファイルをリカバリできないように削除
vi,xemacs ファイル作成等ができる。viに似たものにvimやview(読み取りのみ)がある。
touch 新規作成時には空ファイル作成。既にファイルがある場合はタイムスタンプを更新する。
mkstemp 一時ファイルを作成する。touchコマンドでも出来そうだが、ファイル名がランダムになるため、セキュリティ観点で攻撃されにくいというメリットがある。
umask ファイル新規作成時の権限を設定

■閲覧系コマンド

more,less,cat,view ファイルを見る。/文字で検索。nで検索の続きを見る。スペース:1ページ進む。q:終了する。はよく使うので覚えておこう。ちなみにgzファイルを閲覧する場合にはzcat等が使用できる。
od バイナリファイルを見る

■ログ系コマンド

logger システムログに書き出すコマンド。facilityとpriorityを指定できるが、詳細はこちら参照。
tail ファイルの最後の部分の表示。ログを継続的に監視したい時はfオプションをつけると便利。逆に先頭を表示するコマンドにhead等もある。尚、less +Fでも似たようなことができるのでチェック!
journalctl journaldがためたログを閲覧できる。

■ファイル情報系コマンド

ls ディレクトリの内容を確認する。llコマンドか-lをつけるとファイルの詳しい情報が分かる。-tをつけると時間で更新日時でsortできる。
file ファイルのタイプを出力する
stat ファイルの詳細情報を表示する
chmod アクセス権限を変える。
詳しくはアクセス権限(パーミッション)についてを参照
chown ファイルの所有者を変更する

■比較系コマンド

diff ファイルの違いを識別する
vimdiff vimを使ったdiff。vim -dと同等。:TOhtmlとすると結果をhtml保存できるので便利。
comm ソート済のテキストファイルを比較し、ファイル1or2のみ、共通業のみを出力する。ソートされていることが前提なので、comm <(sort ファイル1.txt) <(sort ファイル2.txt)のように実行すると良い

■検索系コマンド

find ファイル検索
locate ファイル検索

■圧縮・解凍系コマンド

zip,unzip zipファイルの作成等。フォルダ丸ごと圧縮の場合は-r。zipの階層を保持しない場合は-j。パスワードをセットする場合は-Pを使う。
gzip,gunzip gzファイルの作成等。ちなみにzcatでgzファイル閲覧可能。
tar tarファイルを解凍したり。czvf、xzvf等のオプションはよく使う。cはcreateでtarファイル作成,xはextractで展開の意味。zはgzip化するときに使う。
tコマンドは中身を調べるのに使う
split ファイルサイズが大きい場合に分割する時に使う。-bで区切る容量を指定する。

■その他

basename ディレクトリや末尾の文字列を削除したものを返す。ただし、こちらのサイトによると、変数展開の${変数名%/*}を使った方が早いらしい
dirname ディレクトリ名を取得する。ただし、こちらのサイトによると、変数展開の${変数名##*/} を使った方が早いらしい

バックアップ系コマンド

rsync データ送信元と送信先の差分を検出し、送信する
dump ext2/ext3のファイルシステムをバックアップする。異なるサイズのパーティションにもリストアできる。
dd ファイルシステムを考慮せずにそのままの状態でバックアップ。ファイル単位でなく、ブロック単位でコピーする。同一サイズのパーティションにリストアする。

プロセス系のコマンド

jobs 裏でどんなジョブが動いているかチェック
kill 強制的にプログラムを終了する。killallだとPIDでなく、プロセス名からまとめてkillできる。
kill %ジョブID(<=jobsで確認)でバックプロセスも終了できる。
ps プロセスの状態を見る。efオプションやauxオプションはよく使う。
pstree プロセスの親子関係をツリー表示する。
pgrep プロセス名からpidを調べられる。ps aux | grep 'xxx' | grep -v 'grep'のようにしなくて良い。
pkill プロセス名を指定してプロセスをkillできる。
pidof コマンド名からプロセスIDを知る。pgrepはその逆。
fuser ファイルをオープンしているプロセスを調べる

コマンド実行履歴系のコマンド

script script 保存ファイル名で、入力コマンドや出力結果をログ保存する。ネットワークコマンド実行手順を残すのに便利。scriptで保存したテキストが文字化けで読めない場合、less -rとすると閲覧できる。
history 過去の実行コマンドを表示(.bash_historyに保存された履歴情報を表示)。システム全体の実行コマンドを表示する場合はlastcomm。
auditctrl コマンド実行履歴やファイル変更履歴等をログに残す設定ができる
logsave コマンド実行結果をファイル出力する。リダイレクトとかよりも詳細情報を残すことができる

ネットワーク・インフラ系コマンド

■ネットワークの状況確認コマンド

ping ネットワークの疎通確認
ifconfig ネットワーク状況の確認等。IP調べるのに良く使う。
net-tool->iproute2用コマンド:
<IPアドレス系>ip a[ddr]
<リンク状態系>ip l[ink]
tcpdump パケットの情報を表示する。トラブルが起きたときにどこまでパケットが通っているか調べるときなどに便利
traceroute ネットワークの経路を調べる。どこで通信が途切れたかを調べる等
mtr ping+tracerouteのようなコマンド
netstat ネットワーク接続状況を調べる。ポートの使用状況等を確認するのに便利(lsof -iも使える)
net-tool->iproute2用コマンド:ss
route ルーティングテーブルの表示設定。"情報表示で*(アスタリスク)が表示されることがあるが、それは該当のインタフェースに紐づくデフォルトゲートウェイが無いことを意味する(http://superuser.com/questions/580673/what-does-asterisk-meant-in-route-command)。ルート設定を追加できるが、恒久設定でない点は注意。
net-tool->iproute2用コマンド:ip r[oute]
arp arpテーブル(ipアドレスとmacアドレスの対照表)を見ることができる
net-tool->iproute2用コマンド:ip n[eigh]
ethtool インタフェースの状態を知ることができる

■サーバー情報取得系コマンド

ハードウェア情報系

lshw ハードウェア情報を取得する。-cで種類を指定することもできる。usb情報ならlsusb、cpu情報ならlscpu等も活用したい。
lspci pciデバイスの情報(ベンダ名、デバイス名等)を表示する。ネットワークカードの情報を表示する時などに使用する

性能全体像系

dstat OSデフォルトでは使用できないが、色々な状態を見ることができる網羅系stat
vmstat rの列が実行キューの数を表し、この値が高い場合はCPU負荷が高い可能性がある。bの列が待ちプロセスの数を表し、この値が高い場合はIO負荷が高い可能性がある。
uptime 実行待ち状態にあるプロセスの1分間,5分間、15分間の平均値を表す。
これが高いということはCPU負荷またはIO負荷が高いと思われる。
topで表示されるロードアベレージはuptimeでも表示できる。

CPU系

mpstat 各CPUごとの負荷状態を見ることができる

メモリ系

top メモリ消費量、ロードアベレージ(システムの負荷状況)を確認できる。
free システムのメモリとswapの使用量を表示する。メモリ状態は/proc/meminfoでも見ることが出来る。スワップ状態は/proc/swapでも見ることが出来る。

I/O系

iostat %utilが高いと、IO負荷が高い
iotop プロセスごとのIO負荷状況が分かる。
hdparm ディスクの読み出し性能をはかる。本コマンドを実行するには、yum install hdparmが必要

プロセス系

ps プロセスの負荷状態を見れる。%CPUがプロセスのCPU使用率、%MEMがプロセスの物理メモリ消費率を表す。
pidstat プロセスの利用使用量を知る。

過去情報系

sar 過去の負荷状態を見れる。本コマンドを使用するには、sysstatを導入している必要がある

その他

uname システム情報を表示する。OSのバージョンを知りたい場合等に使う。/procの下の情報を見たり、redhat系だと/etc/redhat-releaseを見るのも一つの手。
getconf システム設定変数の情報を表示する。getconf -a等が便利。
mdadm RAID状態を確認できる。/proc/mdstatでも見ることが出来る。

■パッケージ管理系コマンド

rpm RPMパッケージの情報を調べたりできる。パッケージの依存関係は調べてくれないので、yumが使える場合には、そちらを使うと良い。
yum RPMパッケージのインストール、アップデート等ができる。実質的にはrpmコマンドを呼び出している模様。
update高速化のためにprestoやfastestmirrorを使うのも一つの手。Debianの場合は、Debianの場合のパッケージ管理参照のこと。
./configure,make ソースからパッケージをコンパイルして導入する際に使用するコマンド。./configureで各マシンの環境差分を考慮し、オブジェクトの依存関係等を記したmakefileを作成する。make installでそのmakefileに基づきインストールする。ビルドをやり直す場合はmake cleanで'.o'ファイル等を削除する。makefileも消す場合はmake distclean
patch diffの差分を適用するコマンド。セキュリティ対策のパッチ適用等で使用する。ただファイル差し替えた場合と異なり、設定ファイル等は過去の設定内容を保持したまま更新できる部分に利点がある

■サービス制御系コマンド

ntsysv サービスの自動起動や停止処理を行う。起動中のランレベルしか設定できない点において、chkconfigと異なる。
chkconfig サービスの自動起動や停止処理を行う。--list サービス名でサービスの状態。サービス名 on/offでサービスの起動・停止の制御をする。
尚、サービスの手動での制御では、/etc/rc.d/init.d/serviceのstatusが状態。start,stopがサービスの起動と停止の制御である。

[Debian OSの場合]chkconfigのパッケージを落とすか、update-rc.dやinsservを使う。list表示には、/etc/rc2.d/等を見る。
systemctl CentOS7でサービスを管理するコマンド。
service CentOS6でサービスを管理するコマンド。service サービス名 (start/stop/restart/status/)等でサービスの制御を行える
runlevel 現在のランレベル情報を表示する。
init ランレベルを設定する。0(システム停止),1(シングルユーザ),2~5(マルチユーザモード),6(再起動)の構成になっているOSが多い。CentOS7の場合はsystemctl isolate ターゲットで変更可能。

■名前解決系コマンド

nslookup DNSサーバーの名前解決を行う。DNSが生きているかどうか知ることができる
dig ドメイン状態を調べる。DNSサーバ等に問い合わせるときに便利で、nslookupよりも生の情報が得られることが多い。
基本的にdig ネームサーバ querytypeで検索する。
querytypeにはA(IPアドレス),mx(メールサーバ名),ns(ドメインのメールサーバ名),soa(soa情報),
ptr(ipアドレスに対するホスト名),cname(ホスト名のエイリアス[別名])等がある
whois 登録されているサーバー情報を調べる
host ホスト名からIPアドレスを調べる

■ユーザ管理系コマンド

useradd,usermod,userdel ユーザ情報を変更する。
ちなみにUID変更は既に作成済のファイルに適用されない点は注意。
groupadd,groupmod,groupdel ユーザグループ情報を変更する。
ちなみにGID変更は既に作成済のファイルに適用されない点は注意
passwd ユーザパスワードを変更する
smbpasswd,pdbedit ユーザのSambaパスワードを変更する
chage パスワードの有効期限を設定する。新規ユーザにたいしては、/etc/login.defsを編集する方法もある。
edquota クォータ(ユーザごとのディスク使用量制限)を設定する
last 最近ログインしたユーザ情報を表示する
w,who,users 現在ログイン中のユーザ情報を表示
lastlog 最後にログインした時のユーザ情報を表示
getent ユーザやグループ情報等を表示。getentでサポートしているデータベース名を引数指定することで表示可能。

■NFS系コマンド

<サーバー側>
exportfs /etc/exportsに記載したNFSのアクセス情報(mount先に指定するマシンやディレクトリ、権限情報等)を読み込む
showmount NFSサーバのマウント情報を表示。NFSサーバ上のどのディレクトリがマウント可能か分かる

<クライアント側>
mount,umount マウントやアンマウントができる。尚、再起動後も恒久設定にするなら、/etc/fstabの編集が必要。

<サーバー、クライアント両方>
nfsstat NFSサーバとクライアントに関する情報を表示


■時刻系コマンド

date 日付時刻を表示する。date +"フォーマット記述"とすると日付の表示形式を指定できる。date; 実行ログ;のように証跡を残すのに重宝する。
ntpq NTP(Network time protocol)に関する照会を行う。
pオプションを付けると自分がどのNTPサーバの時間を参照しているか分かる。
尚、connection refused等が出る場合はntpサービスが動いているかどうかを/etc/init.d/ntpd statusで見てみると良い。
CentOS7以降ではchronyc sourcesがntpq -p相当
ntpdate 参照するNTPサーバを指定することも可能になる。ただし、ntpdateはntpサービスと違い、時刻を徐々に合わせるのではなく、強制的に時間を合わせる形なので注意。

■ネットワーク設定系コマンド

nmcli NetworkManagerを使って、インタフェース設定等を行うことができる。ifcfg-ethXファイル等を一から手動で作らないで済む。
vconfig VLAN関連の設定を行うことができる。恒久設定ではない点には注意
ethtool ネットワークインタフェースの状態を見たり、設定できる。
主な内容としては、Autoネゴシエーションへの対応、通信速度、接続情報。
-iでドライバ情報やpciのバスID等。

■ファイアウォール設定系コマンド

iptables,ip6tables,firewall-cmd パケットフィルタリングの設定を行う。
lsof sudo lsof -i :ポート番号とすると、ポートを開いているプロセスが分かる(sudoをつけないとログインしている権限下で読み取り可能なもののみ表示)。
また、lsof ファイル名とすると、ファイルを使用しているプロセスが分かる。
nmap ポートスキャンをする。不正攻撃の調査としても良く使われるので、自分の管理サーバー以外には使用しないこと!
nmapが入っていない場合にはyum -y install nmapで導入可能。他にもnetcatのようなポートスキャン方法もある。
nc ポートの疎通確認に使えるコマンド

■遠隔操作系コマンド

ftp ftpサーバにつなぐときに使える。ファイルのアップロード等。アクティブftpとパッシブftpがあるのに注意。
sftp sftp -i 秘密鍵 ユーザ名@サーバ名でログインできる。
telnet コンピュータを遠隔操作する時に使う
ssh コンピュータを遠隔操作する時に使う
scp セキュアなファイル転送。

■ファイルダウンロード系コマンド

wget webのデータをgetする。-Sオプションをつけると、サーバの応答情報を表示し、そこからサーバ情報(ソフトウェアのバージョン)等が分かる。-wオプションは一つのファイルを取得した後の待ち時間。再帰的に動作させたり、リンクを追ったりするのが得意。
curl webのゲータをgetする。

■リソース制限系コマンド

ulimit 各種リソースを制限する。nオプションでファイルディスクリプタ数の上限値を確認できる
tc 使用するネットワーク帯域を制限したり、疑似遅延を発生させたりする。

■性能試験系コマンド

time プログラムの実行時間を知る。シェルプログラム内でtime for do 処理 doneのような形でも可
stress yum等でinstallすると使えるようになる。CPU使用率やメモリ使用率を高くすることができる

パーティション・ディスク周りのコマンド

e2label 指定デバイスにラベルをつける
lsblk ブロックデバイスの接続状況やマウントポイント等の情報を確認する
mkswap スワップ領域を用意する。fdisk等でパーティションを分けた後に領域確保を行う。
スワップ領域を確保したら、swaponで有効にする。
partprobe パーティション変更を再起動せずに反映させる

■パーティション作成系コマンド

fdisk,sfdisk MBR方式でハードディスクのパーティションを設定する
parted GPT対応でハードディスクのパーティションを設定する。
parted -lで情報表示もできる。dfがマウント済のファイル情報を調べるのに対し、本コマンドはマウント前のファイルシステム情報を調べる。

■パーティション情報取得系コマンド

df パーティションと空き情報を調べる。aオプションをつけない場合、ディスクベースのファイルシステム情報のみをサマライズして表示する。tオプションをつけるとファイルフォーマット形式も確認可能。
du ファイルのディスク容量を調べる。du -shはディスク容量が多い所を見つけるのによく使う。duコマンドはブロック単位で計算されるため、実際のサイズと異なる場合がある。バイト単位で表示したい場合は-bなどのオプションをつけると良い

■LVM系コマンド

LVMとは、ハードディスク仮想化によりパーティションサイズを動的変更を実現する技術のこと。「PVが物理ハード、VGが複数物理ハードを束ねたもの、LVが束ねたハード全体を論理的に区切ったもの。VGはPE(Physical Extent)という単位で分割され、LVはPEの集合を持つ」と理解すると分かりやすい。

PV(物理ボリューム)

pvcreate PVの作成
pvs,pvdisplay,pvscan PVの状態を表示する
pvresize PVのサイズを変更する
pvremove デバイスをLVMで使用しないようにする

VG(複数の物理ボリュームをまとめるボリュームグループ)

vgcreate VGの作成
vgs,vgdisplay VGの状態を表示する
vgextend PVを追加する
vgreduce 未使用のPVの削除
vgremove LVが無いVGの削除
vgchange VGの状態を変更する。vgremove前にVGを無効化したりするのに使う

LV(論理ボリューム)

lvcreate LVの作成。
lvs,lvdisplay,lvscan LVの状態を表示する
lvextend VGの未使用領域を追加する
lvresize LVのサイズを変更する
lvremove LVを削除する

■ファイルシステム系コマンド

パーティションを区切っただけでは使用できないので、ファイルシステムに応じたフォーマットが必要。
mkfs ファイルシステムを作成する。fdisk等でパーティションを分けた後にファイルシステムを構築する。
mke2sf ext2/ext3ファイルシステムを作成する。fdisk等でパーティションを分けた後にファイルシステムを構築する。
fsck,e2fsck 電源が突如OFFになったりした時に、Linuxファイルシステムの整合性を確認するために使用する
resize2fs(ext4の場合)
xfs_growfs(xfsの場合)
ファイルシステムのリサイズを行う

■RAID系コマンド

mdadm RAIDを作成する

記号で表されるコマンド

リダイレクト系

0 ファイルディスクリプタ0は標準入力を表す
1 ファイルディスクリプタ1は標準出力を表す
2 ファイルディスクリプタ2は標準エラーを表す
> 標準出力のリダイレクト。この記号後ろで指定された出力先[無:画面、ファイル名:該当ファイル、/dev/null:廃棄]に書き込む
1>
2> 標準エラー出力のリダイレクト。この記号後ろで指定した[無:画面、ファイル名:該当ファイル、/dev/null:廃棄]に書き込む
&> 標準出力、標準エラー出力両方をリダイレクト。この記号後ろで指定した出力先[無:画面、ファイル名:該当ファイル、/dev/null:廃棄]に書き込む。
※本記載の内容はbashの場合であり、他スクリプトの場合は>&と順番が逆になる場合があるので注意。
>> 標準出力のリダイレクト。この記号後ろで指定した出力先[無:画面、ファイル名:該当ファイル]に追記形式で書き込む。
1>>
2>> 標準エラー出力のリダイレクト。この記号後ろで指定した[無:画面、ファイル名:該当ファイル、/dev/null:廃棄]に追記形式で書き込む
&>> 標準出力、標準エラー出力両方をリダイレクト。この記号後ろで指定した[無:画面、ファイル名:該当ファイル、/dev/null:廃棄]に追記形式で書き込む
| 標準出力をパイプの後のプロセスに受け渡すことが出来る。
パイプの後のプロセスはサブシェル(別プロセス)として動作する点は注意。
詳細は、こちら参照のこと。
|& 標準出力、標準エラー出力両方をパイプで渡す
1>&2 この&はファイルディスクリプタ。複製を作るという意味。
この場合は標準出力(1)を標準エラー(2)の出力先と同じにする。
< 標準入力にファイルを流し込む。

ヒアドキュメント系

<< ヒアドキュメント。標準入力として複数行を渡すことができる。
cat << EOS
1行目
2行目
EOS
のように、<<の後に続く文字で囲って使用する。
※End Of Stringの略でEOSが使われることが多いが、別にEOSでなくとも動作する。
※<<の次の行からが渡される入力の対象で、<<自体が書かれた行は含まれない。
※ヒアドキュメント内でエスケープするには、こちらのサイトのように、\EOSのようにする。
※終わり文字に空白のインデント入れていると、「    EOS」のように認識され、syntax errorを発生させる場合があるので注意)。
<<- ヒアドキュメント。<<とは、ヒアドキュメント記述内のタブのインデントを捨ててくれる点が異なる。
<<< ヒアストリング。bash依存の機能でecho 変数 | command の代替となる。

クォート系

' シングルクォート。これで囲んだ変数は評価されない。シングルクォート内ではエスケープできない。
" ダブルクォート。これで囲んだ変数は評価される。特殊文字はエスケープが必要

位置パラメータ

$0 実行しているシェルスクリプト自身の名前
$1,$2 1番目の引数、2番目の引数

特殊パラメータ

$@ 全ての引数。
$*もあるが、展開のされ方が異なってくる。こちらのサイト参照
$# 引数の数
$! 直前で実行したPID
$$ シェルスクリプトのプロセスID
$- バッシュ自体についているオプション
$_ 実行しているシェルスクリプト自身の名前または直前に実行したコマンドの最後の引数

変数展開系

${変数:-値} 変数が未設定かヌルなら指定した値を返す
${変数:=値} 変数が未設定かヌルなら指定した値を返し、変数に値が代入される
${変数:?値} 変数が未設定かヌルなら指定した値を返す。標準エラー出力に文字列を表示し、実行中スクリプトを停止する
${変数:+値} 変数が未設定かヌルでないなら指定した値を返す。未設定かヌルならヌルを返す
${変数:オフセット:長さ} 変数についてオフセットで指定した所から、長さ文の文字を返す。長さを省略した場合は最後まで。
${!検索値*}
${!検索値@}
変数名一覧
${!配列名[*]}
${!配列名[@]}
連想配列のキー一覧
${#変数} 変数の値の文字数
${#配列名[*]}
${#配列名[@]}
配列の要素数
${変数#パターン} 変数の値の先頭からパターンにマッチする部分が削除される。#は最短一致
${変数##パターン} 変数の値の先頭からパターンにマッチする部分が削除される。##は最長一致
${変数%パターン} 変数の値の末尾からパターンにマッチする部分が削除される。%は最短一致
${変数%%パターン} 変数の値の末尾からパターンにマッチする部分が削除される。%%は最長一致
${変数/パターン/値} 変数のパターンにマッチする部分が値に置換される。/は最初のマッチのみ
${変数//パターン/値} 変数のパターンにマッチする部分が値に置換される。//は全てのマッチ
${変数^} 1文字目だけ大文字化
${変数^^} 全文字大文字化
${変数,} 1文字目だけ小文字化
${変数,,} 全文字小文字化
${変数~} 1文字目だけ大小文字反転
${変数~~} 全文字大小文字反転

実行結果系

`` バッククォート。これでコマンドを囲うと、囲んだコマンドの結果を引数に出来る。
実行結果を配列に格納したい場合はさらに()で囲うこと。
$() バッククォートと同様に、囲んだコマンドの結果を引数に出来る。標準出力の改行状態を保持したままにしたい時は"$()"と""で囲う。
$? 直前のコマンドの終了コード
&& 前のコマンドが成功した後に、後続のコマンドを実行する。通常コマンドは1個ずつだが、複数コマンドを実行させたい場合はステートメントブロック{command1; command2;}を使用すると良い。
|| 前のコマンドが失敗した後に、後続のコマンドを実行する
${PIPESTATUS[@]} パイプの終了コード

ヒストリー系

!!:$ ヒストリ機能の一種。!!は前のコマンド。:は番目の。$は最後の文字を表す。詳しくは、ここを参照
^置換前^置換後 直前の実行コマンドの一部を置換して実行する

ジョブ系

%n n番目のジョブ。jobsで番号を調べて、fgやbg、killコマンドで使う。
%% / %+ カレントジョブ
%- 以前のジョブ
%?文字列 文字列を含むジョブ
& コマンドの末尾に本記号を付けた場合は、バックグラウンドでコマンド実行する意味となる。

その他

- ハイフン。標準入出力を意味する。
cat -とすれば標準入出力をそのまま読むの意味になる
-- -から始まるファイルを処理したい場合等に使える。例:less -- -test.txt等。
. ドット。sourceと同意で、設定ファイルを読み込める
: コロン。何もしないコマンド。
スクリプトを書いて動作確認する際に、コマンドを実行したくない時などに有効。
˜ チルダ。bashだと$HOMEの値を表す
{} ブレース展開といい、連番やbackupファイル名指定とかで使える。{1..5}は12 3 4 5で、{1,5}は1 5を表す。a{,.bk}とすると、a a.bkとなる。
{} カレントシェルで、{}で囲った複数の処理をブロックのようにまとめて実行。パイプ等でリダイレクトして渡すことができる
() 親プロセスのシェルとは別に、サブシェルを起動。親プロセスのシェルの環境変数や現在のディレクトリ位置を変えたくない場合等に有効。
<() プロセス置換というbashの機能。出力結果を書き出さずに、入力として使うことができる
{!変数名} bashの場合の間接展開と呼ばれるもの。変数名で指定した変数を参照するイメージ。
$(()) 算術展開を行う。数値計算とかが出来る。

環境変数やシステム変数まわりのコマンド

env 一時的に環境変数を変えた状態でプログラムを実行する。env 環境変数名=セットしたい値 コマンド。
printenv 環境変数を表示
getconf システム構成変数を取得
export/unset export/unset 環境変数="値"の形式で環境変数を設定/解除できる。bashrc等を編集するのも有(http://usagidaioh.exblog.jp/17578556)
source 環境設定ファイルを即座に読み込み反映させる
sysctl Linuxカーネルのパラメータを設定する。aオプションで設定できるパラメータを見れる。pオプションで再起動後も保存できる

ユーザまわりのコマンド

su ユーザ変更。引数無しのデフォルトだとルート権限で入ることができる。
suとすると、操作環境(環境変数やホームディレクトリ)をコマンド実行時環境から引き継ぐが、su -とすると引き継がない。
sudo 管理者権限で実行する。-uで実行ユーザ指定することも可能
pkexec ユーザを指定してコマンド実行できる。sudoersファイルを編集できなくなった場合等にpkexec visudoとすることで重宝する
whoami どのユーザでログインしているか分かる

linuxカーネルモジュールまわりのコマンド

lsmod /proc/modules配下のlinuxカーネルモジュール状態を表示
modinfo linuxカーネルモジュールについての情報を表示
insmod linuxカーネルにモジュールを登録する。modprobeと異なり依存関係は考慮しない。
modprobe linuxカーネルにモジュールを追加する。
rmmod linuxカーネルからモジュールを削除する。

計算系コマンド

expr 計算式や論理式を評価する。ただし、bash等では$(())を使うことが多い。
bc echo "scale=桁数; 計算式" | bcで、計算処理をさせることができる。exprは整数しかできないが、bcは小数点も可能。

セッション維持系コマンド

nohup ログアウトした後もコマンド実行を続けさせる。
長い処理で自動ログアウトしてしまうような場合に有効。
止めるには実行したプロセスを指定してkillする。
screen 仮想的端末画面を出して、管理するコマンド。ログアウトした後もコマンド実行を続けさせる用途や、複数人でコンソール画面を共有してみる等の用途に使える
disown ログアウトした後もコマンド実行を続けさせる。nohupと違いコマンド実行後に、Ctrl+zで一時停止&jobs等でジョブ番号調べた後にできるのが特徴。disown %ジョブ番号等で実施可能。

日付系のコマンド

date 日付を表示する。date '+%Y%m%d'のようにすることで、20001004のような値を取得できる
cal カレンダーを表示。cal 2000とすると2000年のカレンダーが表示される

一定時間ごとの処理系コマンド

watch 一定時間ごとにコマンド実行可能。watch -n 病数 "コマンド"のように記載する(≒while 実行コマンド sleep X秒)
timeout タイムアウト付でコマンド実行させる
crontab cron設定を行う。crontab -eで編集できるが、-rで誤削除しないように、テキストファイルを作成しcrontab テキストファイルとするのが良い。

その他のコマンド

xargs 標準入力から読み込んだ引数をコマンド実行時に受け渡す
seq 開始と終了位置まで数値を出してくれる。fオプションやwオプションで桁合わせも可能
tee ファイル書き込みと標準出力の表示を同時に行う
svn subversion用のコマンド
strace システムが呼び出しシステムコールを表示。なぜかコマンドが失敗する時等にstrace コマンド名とすると、解決の糸口になるかも。
md5sum チェックサムの照合を行う。(使いどころ)コピー元のファイルとコピー先のファイルを比較等を行い、ファイルが破損していないことを確認できる。
which コマンドを探し出し、パスを表示する。あるユーザがどのパスにあるコマンドを実行しているかを知る時に便利。whereisを使うとマニュアルページも出る模様。
clear 画面をまっさらにできる。Ctrl+lでも同様のことができる
startx GUI操作用にXサーバを起動する
openssl ssl関連の設定を行う
snmpwalk SNMP監視対象のOID情報を取得する
mkfifo 名前付きパイプを作成。使用頻度は少ないが、以下のような場面で役立つかもしれない。
・複数のプロセスで前の処理結果を使いたい時
・cat 名前付きパイプ | 実行コマンド1 | 実行コマンド2 > 名前付きパイプのようにして、実行コマンド1,2間で処理を繰り返しループさせたい時
flock 排他制御を行う
exec 同一プロセスで外部コマンドを実行できる
alias いくつかのコマンドに別名をつける


シェルスクリプトについて(bashについて調べると詳しい情報が)

シェルスクリプトとはwindowsで言うバッチファイルのようなもので様々な処理を記載しておくことができる。


余談

cygwinでのcドライブ指定方法について

cd /cygdrive/cとすれば良い。

覚えておきたいショートカットについて

Ctrl+a コマンドの先頭に移動
Ctrl+e コマンドの末尾に移動
Ctrl+c コマンドの強制終了
Ctrl+z コマンドの一時停止
Ctrl+l clearコマンドと同等
Ctrl+r コマンド履歴をキーワード検索する。次の履歴もCtrl+rの連打でOK
Ctrl+d 現在カーソルがあたっている文字を消す。入力コマンドが無い時は、exitと同等。
Ctrl+h delと同等
Ctrl+u カーソルより前を全消し
Ctrl+k カーソルより後を全消し
Ctrl+f ->と同等
Ctrl+b <-と同等



最終更新:2022年03月29日 08:44