Linux Bashコマンドラインで使える5つの標準補完機能
Linuxでは、Bashがデフォルトで以下の5種類の標準補完機能を提供しており、コマンドラインでの入力作業を大幅に効率化できます。Tabキーを活用することで、長いコマンドやパスを素早く正確に入力できるようになります。
- 変数名の補完
- ユーザー名の補完
- 実行可能ファイル(パス)の補完
- ファイル名・ディレクトリ名の補完
- ホスト名の補完
1. 変数名の補完
ターミナルで「$」を入力した後にTabキーを2回押すと、利用可能なすべてのシェル変数が一覧表示されます。
$ echo $[TAB][TAB] $_ $COMP_POINT $HOSTTYPE $PS1 $_backup_glob $COMPREPLY $IFS $PS2 $BASH $COMP_TYPE $inx $PS4 $BASH_ALIASES $COMP_WORDBREAKS $LANG $PWD $BASH_ARGC $COMP_WORDS $LANGUAGE $RANDOM $BASH_ARGV $cur $LESSCLOSE $redir $BASH_CMDS $cword $LESSOPEN $SECONDS $BASH_COMMAND $DIRSTACK $LINENO $SHELL $BASH_COMPLETION_COMPAT_DIR $DISPLAY $LINES $SHELLOPTS $BASH_LINENO $errx $LOGNAME $SHLVL $BASHOPTS $EUID $LS_COLORS $split $BASHPID $exclude $MACHTYPE $SUDO_COMMAND $BASH_REMATCH $flag $MAIL $SUDO_GID $BASH_SOURCE $FUNCNAME $MAILCHECK $SUDO_UID $BASH_SUBSHELL $GROUPS $OLDPWD $SUDO_USER $BASH_VERSINFO $__grub_script_check_program $OPTERR $suffix $BASH_VERSION $HISTCMD $OPTIND $TERM $__colormgr_commandlist $HISTCONTROL $OSTYPE $UID $COLORTERM $HISTFILE $outx $USER $COLUMNS $HISTFILESIZE $PATH $USERNAME $COMP_CWORD $HISTSIZE $PIPESTATUS $words $COMP_KEY $HOME $PPID $XAUTHORITY $COMP_LINE $HOSTNAME $prev $_xspecs
2. ユーザー名の補完
チルダ(~)の後にTabキーを2回押すと、ユーザー名の補完が自動的に開始されます。
$ cd ~[TAB][TAB] ~bala/ ~raj/ ~jason/ ~randy/ ~john/ ~ritu/ ~mayla/ ~thomas/ ~nisha/ ~www-data
注意点として、この補完はホームディレクトリからユーザー名を取得するわけではありません。実際には、/etc/passwd ファイルに登録されているすべてのユーザー名が表示されます。
3. 実行可能ファイルのパス補完
コマンドを実行しようとする際、対象の実行ファイルに実行権限が付与されており、かつ候補が1つだけ見つかった場合は、自動的に補完されます。
$ ls -l /etc/init.d/reboot -rwxr-xr-x 1 root root 639 Jan 30 2013 /etc/init.d/reboot $ /etc/init.d/reb[TAB][TAB] $ /etc/init.d/reboot
一方、複数の候補が見つかった場合は、利用可能なコマンドの一覧が表示されます。
4. ファイル名・ディレクトリ名の補完
この補完は、コマンドラインの2番目以降の位置に現れるファイル名やディレクトリ名に対して機能します。前述の実行可能ファイルの補完とは異なり、パーミッションのチェックは行われず、カレントディレクトリ内のすべてのファイルとディレクトリがそのまま表示されます。
$ ls countfiles.sh dir1 dir2 dir3 $ cat [TAB][TAB] countfiles.sh dir1 dir2 dir3 $ cat c[TAB][TAB] $ cat countfiles.sh
また、表示すべき候補が非常に多い場合、画面にすべてを一覧表示すると混乱を招くため、代わりに次のような確認メッセージが表示されます。
$ ls -l /etc/ Display all 228 possibilities? (y or n)
5. ホスト名の補完
接続先のホスト名を補完するには、「@」記号の後にTabキーを2回押します。
$ ssh john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
このホスト名補完機能は、「@」でホスト名を指定できる任意のコマンドと組み合わせて使用できます。たとえば、scpコマンドでも次のように活用できます。
$ scp filename.txt john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
なお、この補完で表示されるホスト名は /etc/hosts ファイルから取得されます。頻繁に接続するサーバーをこのファイルに登録しておくと、sshやscpの操作がさらに快適になります。
-
Linuxで効果的なBashスクリプトを書くための実践テクニック10選
シェルスクリプトは、Linuxで学べる最も手軽なプログラミング手法のひとつです。システム管理におけるタスクの自動化や、簡単なユーティリティ・ツールの開発など、管理者にとって必須のスキルとも言えます。 本記事では、効果的かつ信頼性の高いbashスクリプトを書くために役立つ、実用的な10のヒントを紹介します。 1. スクリプトには必ずコメントを書く これはシェルスクリプトに限らず、あらゆるプログラミングで推奨される基本プラクティスです。コメントを適切に記述しておけば、後から自分や他の人がスクリプトを読んだときに、各部分が何をしているのかを素早く理解できます。 コメントは # 記号で定義します。 #
-
楽しく学べる!Bash習得に役立つコマンドラインゲーム3選
学習は大変な作業であり、誰も「作業」そのものは好きではありません。つまり、Bashがどれだけ習得しやすい言語だとしても、やはり「勉強」という感覚を拭いきれないかもしれません。しかし、ゲームを通して学ぶなら話は別です。 ターミナルの使い方を教えてくれるゲームなど、そう多くは存在しないと思うでしょう。実際、その通りなのです。PCゲーマーならご存知の通り、FalloutシリーズにはVault内にターミナル式のコンピュータが登場し、テキストでコンピュータと対話するという概念に自然と親しめるようになっています。AlpineやEmacsに似たアプリケーションも登場しますが、残念ながらFalloutをプレイ