IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第33回 bashの組み込みコマンドついて知ろう(1) (宮崎悟) 2021年8月

前回は、端末(ターミナル)について説明しました。今回はbashの組み込みコマンドについて説明します。

bashの組み込みコマンドは、bash実行時のみ使用できるコマンドです。通常 ls コマンドなどは、環境変数PATHからコマンドを検索し、/usr/bin/ls を実行します。一方 cd コマンドは組み込みコマンドであるため、環境変数PATHから検索される/usr/bin/cd を実行しません。

組み込みコマンド

bashの組み込みコマンドを説明します。

source filename [arguments]

指定したfilename を読み込み、実行権限の有無に関わらず、filenameの内容を実行します。filenameは、主にシェルスクリプトやシェルの設定が書かれたファイルで、通常のELFバイナリ実行形式を使用することが出来ません。filenameは環境変数PATHから検索しますが、PATHに存在しない場合はカレントディレクトリ上のfilenameを使用します。filenameより後ろの引数がある場合は、filename自体の変数として扱われます。sourceコマンド実行時の終了コードは、filenameで実行された最後のコマンドの終了コードになります。

. filename は、source filenameと同様の動作をします。

alias [-p] [name=value ...]

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
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