CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回は、端末(ターミナル)について説明しました。今回はbashの組み込みコマンドについて説明します。
bashの組み込みコマンドは、bash実行時のみ使用できるコマンドです。通常 ls
コマンドなどは、環境変数PATHからコマンドを検索し、/usr/bin/ls
を実行します。一方 cd
コマンドは組み込みコマンドであるため、環境変数PATHから検索される/usr/bin/cd
を実行しません。
bashの組み込みコマンドを説明します。
指定したfilename を読み込み、実行権限の有無に関わらず、filename
の内容を実行します。filenameは、主にシェルスクリプトやシェルの設定が書かれたファイルで、通常のELFバイナリ実行形式を使用することが出来ません。filename
は環境変数PATHから検索しますが、PATHに存在しない場合はカレントディレクトリ上のfilename
を使用します。filename
より後ろの引数がある場合は、filename
自体の変数として扱われます。source
コマンド実行時の終了コードは、filename
で実行された最後のコマンドの終了コードになります。
. filename
は、source filename
と同様の動作をします。
alias
コマンドは、エイリアス(alias, 別名)を設定するコマンドです。エイリアスを使うと、 コマンドや引数付きのコマンドを、別の単語に置換できます。
alias コマンドを引き数を付けずに (もしくは -p オプションを付けて) 実行すると、エイリアスのリストが alias name=value
の形で標準出力に出力されます。Ubuntuを使用している場合、ユーザ作成した直後には以下のエイリアスが設定されます。
$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias awsp='source _awsp'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
引き数を指定したときは、value
を与えられた name
それぞれに対するエイリアスが定義されます。 value
の末尾に空白があると、エイリアスが展開されたときに、 空白の次の単語についてエイリアス置換があるかどうかを調べます。
引き数リスト中に value が与えられていない name があった場合は、 それぞれに対して名前とエイリアスの値が出力されます。 エイリアスが定義されていない name が指定された場合以外は、 alias は真を返します。
$ alias l
alias l='ls -CF'
$ alias lll
-bash: alias: lll: 見つかりません
bind [-m keymap] [-lpsvPSV]
bind [-m keymap] [-q function] [-u function] [-r keyseq]
bind [-m keymap] -f filename
bind [-m keymap] -x keyseq:shell-command
bind [-m keymap] keyseq:function-name
bind readline-command
本連載の第14~18回でも説明したように、bind
コマンドはキー割り当てを設定します。
-m keymap
オプション
-m keymap
オプションは、指定されたkeymap
どおり、以降のテンプレートに設定変更します。 指定できる keymap
名は、 emacs、 emacs-standard、emacs-meta、emacs-ctlx、vi、vi-move、vi-command、vi-insert です。vi はvi-command と同じです。 また emacs は emacs-standard と同じです。
-l
オプション
readline 関数の名前を、全てリスト表示します。
-p
オプション
readline 関数の、名前と割り当てを表示します。 この表示は、再び読み込みできる形式で出力されます。
$ bind -p|head
"\C-g": abort
"\C-x\C-g": abort
"\e\C-g": abort
"\C-j": accept-line
"\C-m": accept-line
# alias-expand-line (not bound)
# arrow-key-prefix (not bound)
# backward-byte (not bound)
"\C-b": backward-char
-P
オプション
readline 関数の、現在の名前と割り当てをリスト表示します。
$ bind -P|head
abort can be found on "\C-g", "\C-x\C-g", "\e\C-g".
accept-line can be found on "\C-j", "\C-m".
alias-expand-line is not bound to any keys
arrow-key-prefix is not bound to any keys
backward-byte is not bound to any keys
backward-char can be found on "\C-b", "\eOD", "\e[D".
backward-delete-char can be found on "\C-h", "\C-?".
backward-kill-line can be found on "\C-x\C-?".
backward-kill-word can be found on "\e\C-h", "\e\C-?".
-s
オプション
マクロに割り当てられた readline のキーシーケンスと、 マクロが出力する文字列を表示します。 表示は、再び読み込みできる形式で出力されます。
-S
オプション
マクロに割り当てられた readline のキーシーケンスと、 マクロが出力する文字列を表示します。
-v
オプション
readline の、変数名と値を表示します。 表示は、再び読み込みできる形式で出力されます。
$ bind -v | head
set bind-tty-special-chars on
set blink-matching-paren off
set byte-oriented off
set colored-completion-prefix off
set colored-stats off
set completion-ignore-case off
set completion-map-case off
set convert-meta off
set disable-completion off
set echo-control-characters on
-V
オプション
readline の、現在の変数名と値をリスト表示します。
bind-tty-special-chars is set to `on'
blink-matching-paren is set to `off'
byte-oriented is set to `off'
colored-completion-prefix is set to `off'
colored-stats is set to `off'
completion-ignore-case is set to `off'
completion-map-case is set to `off'
convert-meta is set to `off'
disable-completion is set to `off'
echo-control-characters is set to `on'
-f filename
キー割り当てを、filename
から読み込みます。
-q function
指定された function
が割り当てられた、キーを問い合わせます。
-u function
指定された function
に割り当てられている、キーの割り当てを 全て取り消します。
-r keyseq
キー keyseq
に対する現在の割り当てを削除します。
-x keyseq:shell-command
キーkeyseq
が押されるたびに、 shell-command
が実行されるよう設定します。shell-command
を実行するとき、シェルは変数 READLINE_LINE に readline の編集バッファの内容を設定し、変数 READLINE_POINT に現在の挿入ポイントの位置を設定します。 実行したコマンドが READLINE_LINE や READLINE_POINT の値を変更した場合、新しい値が編集の状態に反映されます。
今回は、bashの組み込みコマンドについて説明しました。次回も、bashの組み込みコマンドについて説明を続けます。次回をお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes