よく使いそうな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系コマンド
記号で表されるコマンド
リダイレクト系
| 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