Linuxのシェル のバックアップ(No.4)
Linuxのシェル †
シェルの種類 †
- Bourneシェル
- UNIXの標準的なシェル
- bash
- Linuxディストリビューションの標準的なシェル
- Bourneシェルを改良したもの
- Kornシェル
- Bourneシェルを拡張したもの
- Cシェル
- Zシェル
シェル について †
ログインシェル †
- ログイン直後に起動されるシェルのこと
- ユーザのログインシェルの確認
cat /etc/passwd | grep <user-name>
その他 †
- chsh ※デフォルトのシェルを変更
- 利用可能なシェルの確認
cat /etc/shells
シェルの操作 †
コマンドの入力途中の操作 †
- 補完機能
Tab ※入力補完を表示
- カーソル移動
- 行頭・行末
Ctl + A ※行頭 Ctl + E ※行末
- 1文字左・右
Ctl + B ※1文字左 Ctl + F ※1文字右
- 1単語
Alt + B ※1単語左(Esc + B) Alt + F ※1単語右(Esc + F)
- 行頭・行末
- コマンドラインの編集
- 1文字を削除
Ctl + D ※カーソルの1文字 Ctl + H ※カーソルの左の1文字 Ctl + / ※カーソルの左の1文字
- カーソル位置から左・右の文字を全て削除
Ctl + U ※カーソル位置から左の文字 Ctl + K ※カーソル位置から右の文字
- 1文字を削除
- カーソル位置の単語の右部分を削除
Alt + D ※カーソル位置の単語の右部分(Esc + D)
- その他
Ctl + L ※画面をクリアしてカレント行を再表示 Ctl + _ ※直前の操作前の状態に戻す
- その他
コマンドを実行中の操作 †
- 実行制御
Ctl + C ※処理を中断 Ctl + Z ※処理を一時停止 Ctl + S ※画面への出力を停止し、キー入力を無効にする Ctl + Q ※画面への出力を再開し、キー入力を有効にする
ディレクトリの指定 †
- ~ ※ホームディレクトリ
cd ~
- ~[ユーザ名] ※指定したユーザ名のホームディレクトリ
cd ~root
- . ※カレントディレクトリ
df .
- .. ※1つ上のディレクトリ
cd ..
コマンドの実行(単独) †
- 環境変数PATHに指定されたディレクトリに存在するコマンド(プログラム)
<command>
- カレントディレクトリに存在するコマンド
./<command>
- フルパスを指定して実行
/<dir-path>/<command>
コマンドの実行(複数) ※区切り文字で繋げる †
- ; ※1番目のコマンドの実行結果に関係なく2番目のコマンドを実行する
pwd;ls
- && ※1番目のコマンドが正常終了した場合のみ、2番目のコマンドを実行する
ls test.txt && cat test.txt
- || ※1番目のコマンドが正常終了しなかった場合のみ、2番目のコマンドを実行する
ls test.txt || touch test.txt
コマンドの実行(複数) ※括弧で複数のコマンドをひとまとまりとして扱う †
- () ※新たにシェルを起動して実行する
(hostname;whoami) >> temp.log TEMP=origin (TEMP=edited;echo $TEMP) ※"edited"が出力 echo $TEMP ※"origin"が出力
- {} ※現在のシェル内でコマンドを実行する
{ hostname;whoami; } >> temp.log ※カッコとコマンドの間にスペースが必要、コマンドの末尾に;(セミコロン)が必要
引用符と文字列の扱い †
- ' (単一引用符、シングルクォーテーション)
- 全て文字列として解釈する
- 変数の記載も文字列として解釈される(変数の値が出力されない)
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)" ※コマンドの実行結果(日付)が出力される(可読性を考慮するとこちらの記述を推奨)
エイリアス †
alias †
- エイリアスを登録
alias <command>
- 登録されているエイリアスを確認
alias <command>='<register-command>'
unalias †
- エイリアスを解除
unalias <command>
その他 †
- エイリアスを無効にしてコマンドを実行
\<command>
コマンド履歴の操作 †
- 直近の履歴を遡って表示
- カーソルキー操作
↑ ※遡って表示 ↓ ※逆順で表示
- ショートカットキー操作
Ctl + p ※遡って表示 Ctl + n ※逆順で表示
- カーソルキー操作
- 直近の履歴を文字列検索して表示
- ショートカットキー操作
Ctl + R ※押下後に入力した文字列から直近のコマンドを検索し、再度押下すると遡って検索する。Enter押下でコマンドを実行
- ショートカットキー操作
- 履歴を使ってコマンドを実行
- !<履歴番号> ※指定した履歴番号のコマンドを実行
- !<string> ※指定した文字列で始まる直近のコマンドを実行
- !?<string> ※指定した文字列を含む直近のコマンドを実行
- !! ※直前のコマンドを実行
コマンド履歴の操作(Linuxコマンド) †
history †
- history <件数>
history ※直近の環境変数HISTSIZE に設定された件数を出力 history 10 ※直近の10件を出力
コマンド履歴の操作(インクリメンタルサーチモード) †
- Ctl + R
シェルのオプション機能 †
- 有効/無効
- set -o <option-name> ※有効
- set +o <option-name> ※無効
- 設定の状態を表示
- set -o ※On/Offで表示
- set +o ※現在の設定状態をコマンドで表示
関数 †
function †
- 独自の関数を定義する
- function 関数名() { <command>; }
- 関数名() { <command>; }
関数名() { <command> }
- 定義されている関数の確認
set ※一覧の後ろの方に表示される declare -f <関数名> ※指定した関数の定義を表示 declare -f ※定義されている関数の定義を一覧表示 declare -F ※定義されている関数の関数名を一覧表示
- 定義されている関数の削除
unset <>
シェルスクリプト †
- 「シェルスクリプト」参照
- 「シェルスクリプト(bash)」参照
設定ファイル †
/etc/passwd †
構成 †
- ユーザ名
- パスワード("x"はシャドーパスワード)
- ユーザID
- グループID
- コメント
- ホームディレクトリ
- ログインシェル
/etc/shadow †
- シャドウファイル
構成 †
- ユーザ名
- パスワード
- 構成
- $ハッシュ関数(1:MD5、2 or 2a:Blowfish、5:SHA-256、6:SHA-512)
- $ソルト
- $ハッシュ値
- *:未設定
- !!:アカウントロック
- 構成
- 最終更新日
- 次回変更可能になるまでの日数
- 有効期限(過ぎると変更必須)
- 期限切れの警告日(期限何日前に警告するか)
- 無効化までの連続非ログイン日数
- アカウント失効までの連続非ログイン日数
- フラグ
/etc/shells †
- 利用可能なシェル
関連サイト †
- /bin/false と /sbin/nologin と /etc/shells について
https://littlebuddha.hatenadiary.org/entry/20090805/1249457771