Linuxのシェル のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2021-01-23T13:30:30+09: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]
-コマンドの入力途中の操作
--補完機能
 Tab ※入力補完を表示
--カーソル移動
 Ctl + A ※行頭に移動
 Ctl + E ※行末に移動
--コマンドラインの編集
 Ctl + D ※カーソルの1文字を削除
 Ctl + H ※カーソルの左の1文字を削除
 Ctl + L ※画面をクリアしてカレント行を再表示

-コマンドを実行中の操作
--実行制御
 Ctl + C ※処理を中断
 Ctl + Z ※処理を一時停止
 Ctl + S ※画面への出力を停止し、キー入力を無効にする
 Ctl + Q ※画面への出力を再開し、キー入力を有効にする

-ディレクトリの指定
--&#126; ※ホームディレクトリ
 cd ~
--&#126;[ユーザ名] ※指定したユーザ名のホームディレクトリ
 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)" ※コマンドの実行結果(日付)が出力される(可読性を考慮するとこちらの記述を推奨)

**エイリアス [#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コマンド]]