Linux リテラシ2006 - 第3回 エディタ、シェル 演習問題解答

take

第3回 演習問題の解答

問題(1)

viを用いてexample.txt を閲覧し、文字列"find"を検索せよ

解答
$ vi example.txt

でexample.txtをviで開いた後、

/find
問題(2)

文字列"Hosei"を出力のリダイレクトを使って新規ファイルexercise.txt に書き込め

解答
$ echo Hosei > exercise.txt
問題(3)

文字列"University"を出力のリダイレクトを使ってexercise.txt に追記せよ

解答
$ echo University >> exercise.txt
問題(4)

exercise.txt の内容を入力のリダイレクトを使って表示せよ

解答
$ cat < exercise.txt
問題(5)

ls -al ex?.txtを実行し、何が表示されるか確認せよ

解答
$ ls -al ex?.txt
-rw-rw-r--  1 foo foo 12  6月  1 03:40 ex1.txt
-rw-rw-r--  1 foo foo 14  6月  1 03:40 ex2.txt
-rw-rw-r--  1 foo foo 21  6月  1 03:41 ex3.txt

'?'は何か1文字の代わりに使うことが出来るので、ex1.txt、ex2.txt、ex3.txtについてls -alが適用されます。

問題(6)

ls -al ex*を実行し、何が表示されるか確認せよ

解答
$ ls -al ex*
-rw-rw-r--  1 foo foo  12  6月  1 03:40 ex1.txt
-rw-rw-r--  1 foo foo  14  6月  1 03:40 ex2.txt
-rw-rw-r--  1 foo foo  21  6月  1 03:41 ex3.txt
-rw-rw-r--  1 foo foo 106  5月 31 19:10 example.txt
-rw-rw-r--  1 foo foo  17  6月  6 18:38 exercise.txt

'*'が全ての文字列を表しているので、exから始まる以上5つのファイルにls -alが適用されます。

問題(7)

コマンドhistoryの出力をパイプして、lessで表示せよ
(history :コマンドの使用履歴を表示する)

解答
$ history | less
1    vi example.txt
2    echo Hosei > exercise.txt
3    echo University >> exercise.txt
4    ls -al ex*
5    ls -al ex?.txt
6    history | less
・・・

Linuxはデフォルトでは1000回分のコマンドを保存します。

問題(8)

コマンド列 cat ex1.txt ex2.txt ex3.txt にcisという別名をつけよ

解答
$ alias cis='cat ex1.txt ex2.txt ex3.txt'
問題(9)

(8)で定義したエイリアスが本当に定義されているかどうか確認せよ

解答
$ alias
alias cis='cat ex1.txt ex2.txt ex3.txt'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

Linuxにはデフォルトでいくつかのコマンドがエイリアスとして定義されています。

問題(10)

(8)で定義したエイリアスを実行せよ

解答
$ cis
Faculty of
Computer and
Information Sciences

ex1.txt、ex2.txt、ex3.txtの内容が連結されて表示されます。

問題(11)

(8)で定義したエイリアスを削除せよ

解答
$ unalias cis

エイリアスが削除されているかaliasを使って確認してみてください。

問題(12)

viでtest.shを作成し、

#!/bin/sh
#
cat ex?.txt > test.txt
cat exercise.txt >> test.txt
cat test.txt

を書き込み保存せよ。

解答
vi test.sh

でtest.shを開いた後、指定された内容を入力して保存します。

問題(13)

./test.shを実行し、動作しないことを確認してから、test.shに実行権限を付与した後、再度実行せよ

解答
$ ./test.sh
-bash: ./test.sh: 許可がありません

動作しないことを確認したら、

$ chmod a+x test.sh

でtest.shに実行権限を与えてから再度実行します。

$ ./test.sh
Faculty of
Computer and
Information Sciences
Hosei
University

結果、このようにex1.txt、ex2.txt、ex3.txt、exercise.txtの内容がリダイレクトによって作成されたtest.txtの中身がcatによって表示されます。