Cyberblack.net

Cyberblack Official Site

Exercise2 About Bash

1.環境変数とシェル変数

1.カレントディレクトリをホームディレクトリに変更してください。

Answer
$ cd
$ pwd
/home/student

2.「training/linux」構成でディレクトリを作成してください。

Answer
$ mkdir -p training/linux
$ ls training/
linux

3.環境変数trainを作成します。trainの値には、/home/student/training/linuxディレクトリを絶対指定で指定してください。

Answer
$ train='/home/student/training/linux/'
$ export train='/home/student/training/linux/'

4.現在のユーザが、各種コマンドで環境変数$trainをディレクトリ名のかわりに指定すると、常に/home/student/training/linuxが指定されたものと同じ動作をします。

たとえば、カレントディレクトリに関係なく、touch $train/sample.txtで、sample.txtという空のファイルが/home/studnet/training/linuxに作成されます。 ls $trainで、/home/student/training/linuxのファイルが表示されます。 実際にこれらのコマンドを実行し、確認してみましょう。

Answer
$ cd /
$ touch $train/sample.txt
$ ls $train
sample.txt

上記のように、シェル変数や環境変数に、ディレクトリを登録しておくと、長いディレクトリパスを指定しなくても、シェル変数や環境変数を指定すれば、簡単に目的のディレクトリを利用できます。 また、コンピュータによって、ディレクトリパスが異なる場合でも、ディレクトリパスを直接指定せずに、シェル変数や環境変数を指定するようにプログラムやシェルスクリプトを記述することで、汎用性を高めることができます。

5.usetコマンドで環境変数$trainを削除します。

Answer
$ unset train

6.ホームディレクトリに移動し、applicationという名前のディレクトリを作成してください。

Answer
$ cd
$ pwd
/home/student
$ mkdir application
application     sample_web.zip  ダウンロード  デスクトップ  ビデオ  画像
sample_web.log  training        テンプレート  ドキュメント  音楽    公開

7.シェル変数PATHに、applicationディレクトリを追加してください。

Answer
$ PATH=$PATH:/home/student/application

8.echoコマンドでPATHにapplicationが追加されていることを確認してください。

Answer
$ echo $PATH
/home/student/.local/bin:/home/student/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/student/application

9.環境変数trainや、シェル変数PATHとして指定したapplicationの設定は、端末を閉じると消えます。

別の端末を開いても、その端末には設定が引き継がれません。

永続化するためには、.bashrcに追加する必要があります。

実際に.bashrcに設定してみましょう。

Answer
$ vim ~/.bashrc

----------------[Shift]+[g]で最終行にカーソルを移動して追記------------------------
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific environment
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
export PATH

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
PATH=$PATH:~/application
----------------[Esc + :wq]で保存終了---------------------------------------------

端末を新規に開いて、変数trainやPATHが利用できるようになったことを確認します。単純にprintenvコマンドで確認してみましょう。

Answer
$ printenv PATH
/home/student/.local/bin:/home/student/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/student/application

2.エイリアスの登録

1.登録済みのエイリアスを一覧表示してください。

Answer
$ alias
/home/student/.local/bin:/home/student/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/student/application
[student@localhost ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

2.1.を確認すると、いままで私たちが実行していたlsコマンドは、ls –color=autoのエイリアスであることが分かります。エイリアスではない本来のlsコマンドを、現在のエイリアスを削除、変更せずに実行してください。カレントディレクトリをホームディレクトリに変更して実行してください。

Answer
$ cd
$ pwd
/home/student
$ ls
//TeraTerm上では色がつきます。
application     sample_web.zip  ダウンロード  デスクトップ  ビデオ  画像
sample_web.log  training        テンプレート  ドキュメント  音楽    公開
$ /bin/ls
//TeraTerm上では色がつきません。
application     sample_web.zip  ダウンロード  デスクトップ  ビデオ  画像
sample_web.log  training        テンプレート  ドキュメント  音楽    公開
$ command ls
//TeraTerm上では色がつきません。
application     sample_web.zip  ダウンロード  デスクトップ  ビデオ  画像
sample_web.log  training        テンプレート  ドキュメント  音楽    公開
$ \ls
//TeraTerm上では色がつきません。
application     sample_web.zip  ダウンロード  デスクトップ  ビデオ  画像
sample_web.log  training        テンプレート  ドキュメント  音楽    公開

3.カレントディレクトリをホームディレクトリに変更して、touchコマンドでalias_testというファイルを作成してください。

Answer
$ cd
$ pwd
/home/student
$ touch alias_test
$ ls
alias_test      sample_web.zip  テンプレート  ビデオ  公開
application     training        デスクトップ  音楽
sample_web.log  ダウンロード    ドキュメント  画像

4.rmコマンドでalias_testを削除して、何もメッセージが表示されずに削除できることを確認してください。

Answer
$ rm alias_test

5.もう一度、alias_testファイルを作成し、rmに-iオプションを付けてalias_testファイルを削除してください。-iは、誤削除を防ぐため確認メッセージに対して y とタイプしないと削除できないようにするオプションです。

Answer
$ touch alias_test
$ rm -i alias_test
//yと入力
rm: 通常の空ファイル 'alias_test' を削除しますか?

6.rm -iをエイリアス rmとして登録してください。登録後、実際に登録できていることを確認します。alias_testファイルを作成して、rmコマンドでiオプション無しで実行してもメッセージが表示されることを確認してください。

Answer
$ alias rm='rm -i'
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias rm='rm -i'
alias vi='vim'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
$ touch alias_test
$ rm alias_test
//yと入力
rm: 通常の空ファイル 'alias_test' を削除しますか?

7.エイリアスを削除する場合は「unalias エイリアス名」となります。「unalias rm」で元に戻してください。

Answer
$ unalias rm
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
$ touch alias_test
$ rm alias_test
Last updated on 13 Apr 2020
Published on 17 Oct 2017