#author("2021-11-15T01:50:16+00:00","default:k1rou","k1rou") *Linuxのシェル [#xa62f4cd] *シェルの種類 [#gaf9a5d7] -Bourneシェル --UNIXの標準的なシェル -bash --Linuxディストリビューションの標準的なシェル --Bourneシェルを改良したもの -Kornシェル --Bourneシェルを拡張したもの -Cシェル -Zシェル *シェル について [#x282a9f2] **ログインシェル [#s8a3982e] -ログイン直後に起動されるシェルのこと -ユーザのログインシェルの確認 cat /etc/passwd | grep <user-name> **その他 [#kc7c3d41] -chsh ※デフォルトのシェルを変更 -利用可能なシェルの確認 cat /etc/shells *シェルの操作 [#s322cda3] **コマンドの入力途中の操作 [#s073d834] -補完機能 Tab ※入力補完を表示 -カーソル移動 Ctl + A ※行頭に移動 Ctl + E ※行末に移動 -コマンドラインの編集 Ctl + D ※カーソルの1文字を削除 Ctl + H ※カーソルの左の1文字を削除 Ctl + L ※画面をクリアしてカレント行を再表示 **コマンドを実行中の操作 [#ofec13fb] -実行制御 Ctl + C ※処理を中断 Ctl + Z ※処理を一時停止 Ctl + S ※画面への出力を停止し、キー入力を無効にする Ctl + Q ※画面への出力を再開し、キー入力を有効にする **ディレクトリの指定 [#j9167e95] -~ ※ホームディレクトリ cd ~ -~[ユーザ名] ※指定したユーザ名のホームディレクトリ cd ~root -. ※カレントディレクトリ df . -.. ※1つ上のディレクトリ cd .. **コマンドの実行(単独) [#z6fc879c] -環境変数PATHに指定されたディレクトリに存在するコマンド(プログラム) <command> -カレントディレクトリに存在するコマンド ./<command> -フルパスを指定して実行 /<dir-path>/<command> **コマンドの実行(複数) ※区切り文字で繋げる [#q8b93265] -; ※1番目のコマンドの実行結果に関係なく2番目のコマンドを実行する pwd;ls -&& ※1番目のコマンドが正常終了した場合のみ、2番目のコマンドを実行する ls test.txt && cat test.txt -|| ※1番目のコマンドが正常終了しなかった場合のみ、2番目のコマンドを実行する ls test.txt || touch test.txt **コマンドの実行(複数) ※括弧で複数のコマンドをひとまとまりとして扱う [#s4693f7a] -() ※新たにシェルを起動して実行する (hostname;whoami) >> temp.log TEMP=origin (TEMP=edited;echo $TEMP) ※"edited"が出力 echo $TEMP ※"origin"が出力 -{} ※現在のシェル内でコマンドを実行する { hostname;whoami; } >> temp.log ※カッコとコマンドの間にスペースが必要、コマンドの末尾に;(セミコロン)が必要 **引用符と文字列の扱い [#dd71ea2b] -' (単一引用符、シングルクォーテーション) --全て文字列として解釈する --変数の記載も文字列として解釈される(変数の値が出力されない) DATE=`date +%Y%m%d` echo '$DATE' ※"$DATE"が出力される -" (二重引用符、ダブルクォーテーション) --文字列として解釈する --変数の記載は変数として解釈される(変数の値が出力される) --バッククォーテーション(`)でコマンドが記載されていれば、コマンドの実行結果が展開される DATE=`date +%Y%m%d` echo "today is $DATE" ※$DATEの部分は日付が出力される echo "today is \$DATE" ※\(エスケープ文字)で$DATEは変数ではなく文字列として扱われる echo "today is `date + %Y%m%d`" ※コマンドの実行結果(日付)が出力される echo "today is $(date + %Y%m%d)" ※コマンドの実行結果(日付)が出力される(可読性を考慮するとこちらの記述を推奨) *エイリアス [#sec9a171] **alias [#n55bcc0d] -エイリアスを登録 alias <command> -登録されているエイリアスを確認 alias <command>='<register-command>' **unalias [#vc09e97f] -エイリアスを解除 unalias <command> **その他 [#ma5357a7] -エイリアスを無効にしてコマンドを実行 \<command> *コマンド履歴の操作 [#i8b087d5] -直近の履歴を遡って表示 --カーソルキー操作 ↑ ※遡って表示 ↓ ※逆順で表示 --ショートカットキー操作 Ctl + p ※遡って表示 Ctl + n ※逆順で表示 -直近の履歴を文字列検索して表示 --ショートカットキー操作 Ctl + R ※押下後に入力した文字列から直近のコマンドを検索し、再度押下すると遡って検索する。Enter押下でコマンドを実行 -履歴を使ってコマンドを実行 --!<履歴番号> ※指定した履歴番号のコマンドを実行 --!<string> ※指定した文字列で始まる直近のコマンドを実行 --!?<string> ※指定した文字列を含む直近のコマンドを実行 --!! ※直前のコマンドを実行 *コマンド履歴の操作(Linuxコマンド) [#xf322274] **history [#w022ef2f] -history <件数> history ※直近の環境変数HISTSIZE に設定された件数を出力 history 10 ※直近の10件を出力 *シェルのオプション機能 [#yd4d5aa7] -有効/無効 --set -o <option-name> ※有効 --set +o <option-name> ※無効 -設定の状態を表示 --set -o ※On/Offで表示 --set +o ※現在の設定状態をコマンドで表示 *関数 [#f083880c] **function [#y15acfdb] -独自の関数を定義する --function 関数名() { <command>; } --関数名() { <command>; } 関数名() { <command> } -定義されている関数の確認 set ※一覧の後ろの方に表示される declare -f <関数名> ※指定した関数の定義を表示 declare -f ※定義されている関数の定義を一覧表示 declare -F ※定義されている関数の関数名を一覧表示 -定義されている関数の削除 unset <> *シェルスクリプト [#y650ae70] -「[[シェルスクリプト]]」参照 -「[[シェルスクリプト(bash)]]」参照 *関連用語 [#n74f29c4] -[[Linuxコマンド]]