ターミナルとシェルスクリプトの活用方法をみていく。ターミナルは「端末」や「シェル」、「プロンプト」などと呼ばれることもある。より正確には、端末及びターミナルはGUIではウィンドウ、シェルはCUIのエイリアス機能やヒストリ機能などが備わっているプログラムで、プロンプトは「$」などの入力や操作を促す入力促進記号である。
シェルはtcshなどいろいろあるが、Debian系で標準的に使われているbashを使っているものとして解説する。
コマンドにはls、cat、cd、cpなどがたくさんあり、ユーザインタフェースを担当するプログラムである。シェルスクリプトは簡単なプログラムを作成することができる。
/home/(ユーザ名)/.bashrcファイルはbash起動時に読み込まれる設定ファイルである。いくつか見てみよう。「alias grep='grep --color=auto'」はgrepコマンドにカラー付きで表示されるようにエイリアスを設定している。
「PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '」は環境変数PS1でプロンプト1行目を設定している。\uは現ユーザ名、\hはホスト名、\wは現在のディレクトリである。「\033[01;32m\]」の\033はエスケープ、01は高輝度、32は緑を意味する。色は他に00はデフォルト色、34は青を意味する。これらにより「cpage@cpageT40:~$ 」というようなプロンプトが色付きで表示される。「\u@\h」の部分を「\t」とすればプロンプトは「14:53:44:~$ 」のようになる。\tは12時間制HH:MM:SSフォーマット時間である。
次からのセクションで記述するがエイリアスなどはここに記述すると便利である。
コメンドに別名をつける機能をエイリアスと呼び、オプションを使用できるのでよく使うコマンドにつけておくと便利である。「alias エイリアス名='オプションを含むコマンド'」で定義できる。コマンドを定義する例を示す。
alias lls='ls -l --color=auto'
alias list='echo =la;ls -a --color=auto'
alias dcp='cp -R'
alias drm='rm -R'
alias tohome='echo =cd;cd'
alias todesk='cd ~/デスクトップ'
alias todesktop='cd ~/デスクトップ'
alias tolocalbin='cd /usr/local/bin/'
alias catshell="cat .bashrc"
alias catshellscript="cat .bashrc"
alias catscript="cat .bashrc"
alias dlink='sh /usr/local/bin/dlink'
alias ver='sh /usr/local/bin/ver'
これらを端末から定義しても、端末を閉じるとリセットされてしまう。永続的に登録するには~/.bashrcファイルにコマンドを記述する。Nemoを開きホームに移動し、[表示]メニューの[隠しファイルを表示]にチェックし、表示された「~/.bashrc」を編集する。末尾に書き込めば良いだろう。
~/.bashrcを更新したら、新しく端末を開きaliasコマンドを実行し、エイリアス一覧を表示し追加されていることを確認しよう。「sh」コマンドが使われている下2行はシェルスクリプトで、以降のセクションを参照しよう。
Windowsではエクスプローラでファイルやフォルダを右クリックし、[送る]>[デスクトップ(ショートカットを作成)]でデスクトップにショートカットを作成できる。シンボリックリンクとシェルスクリプトなどを使って、似たような機能を作ってみよう。
sudo nemoコマンドで権限昇格したNemoを開く。/usr/local/binディレクトリにdlinkファイルを作成する。そのファイルをxedなどのテキストエディタで開き、以下のスクリプトを入力し、保存する。
#!/usr/bin/bash
# Windowsのデスクトップにショートカットを作成するようなスクリプト
if [ $# != 1 ]
then
echo "引数1にリンク元を指定してください。"
else
SRC_PATH="${PWD}/$1"
#echo $SRC_PATH # デバッグ用の書き出し
ln -s $SRC_PATH ~/デスクトップ
fi
端末を新しく開き、「alias dlink='sh /usr/local/bin/dlink'」でエイリアスと設定する。これで「dlink a.txt」などとすると、デスクトップにシンボリックリンクが作成される。ただし、端末を閉じるとこのエイリアス設定はリセットされる。
~/.bashrcファイルに「alias dlink='sh /usr/local/bin/dlink'」と記述すれば永続的に使用することができる。
Windowsのプロンプトではverコマンドで「Microsoft Windows [Version 10.0.18363.900]」のような表示が行われる。いろいろなバージョン等の情報を表示するシェルスクリプトを作成し、verコマンドを作ってみよう。スクリプトは以下のとおりである。
#!/usr/bin/bash
lscpu | grep -w モデル名 | sed -e 's/ */ /g' #CPU
lscpu | grep -w ソケットあたりのコア数 | sed -e 's/ */ /g'
lscpu | grep -w コアあたりのスレッド数 | sed -e 's/ */ /g'
lscpu | grep -w キャッシュ | sed -e 's/ */ /g'
echo
echo -n 'コンピュータ(ホスト)名: ';uname -n #コンピュータ名(ホスト名)
cat /proc/version #カーネル
cat /etc/issue #ディストリビューション
bash --version | head -n 1 #bash
デスクトップにverというファイル名で作成し、端末からカレントディレクトリをデスクトップに移動し、「sudo cp ver /usr/local/bin/」を実行し、/usr/local/bin/にコピーを作成する(テキストファイルを作れば良いだけなので方法はいろいろある)。コマンド実行を簡単にするため、前述のように~/.bashrcファイルの最後に「alias ver='sh /usr/local/bin/ver'」を追加し上書き保存する。表示されるのはCPU情報、コンピュータ(ホスト)名、カーネル情報、ディストリビューション情報、bashバージョンである。実行例を示す。
$ ver
モデル名: Intel(R) Xeon(R) E-2224G CPU @ 3.50GHz
ソケットあたりのコア数: 4
コアあたりのスレッド数: 1
L1d キャッシュ: 32K
L1i キャッシュ: 32K
L2 キャッシュ: 256K
L3 キャッシュ: 8192K
コンピュータ(ホスト)名: cpageT40
Linux version 5.4.0-37-generic (buildd@lcy01-amd64-026) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #41~18.04.1-Ubuntu SMP Mon Jun 8 13:37:29 UTC 2020
Linux Mint 19.3 Tricia \n \l
GNU bash, バージョン 4.4.20(1)-release (x86_64-pc-linux-gnu)
ファイルを頻繁に変更するようであれば「sudo chmod o+wr /usr/local/bin/ver」コマンドで読み書きアクセスできるようにしておこう。