スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シェルとシェルスクリプト(1)

1.リダイレクト「>」によって、既存ファイルへの上書きを禁止するための方法を選択しなさい。

1. set -o noglob
2. set -o noclobber
3. set -o nooverwrite
4. set -o ignore

正解:2

既存のファイルにコマンドの実行結果を追記するために、リダイレクト記号「>>」を使ったつもりがリダイレクト記号「>」を使ってしまい、ファイルの内容を消してしまうことはよくあります。このようなことを防止するためには、シェルのオプション機能でリダイレクト機能を制限します。 シェルのオプション機能を利用するためには、次のようにsetコマンドを実行します。

$ set -o <オプション名> ← オプションのセット
$ set +o <オプション名> ← オプションの解除

本文の意図に沿うオプションは「noclobber」です。なお、オプションを解除するには「+o」オプションを指定します。


2.複数の引数を含めた特定のコマンドを何度も実行したい。これを容易に行うための方法として適切なものを選択しなさい。

1. シェルスクリプトを作成する
2. 関数を作成する
3. カーソルキー「↑」でヒストリを利用する
4. 「!」記号を利用する

正解:2

同じ組み合わせのコマンドを頻繁に実行する場合は、その組み合わせを関数として定義すると便利です。関数を定義するためにはfunctionコマンドを利用します。このコマンドの一般的な実行方法は次のとおりです。

$ function <関数名>() { <コマンドの組み合わせ>; }

 ここで、記号「{」のすぐ右には、空白が1つ必要です。たとえば、Debian GNU/LinuxやRed Hat Linuxで利用できるapt-getコマンドを使って、アップデート・パッケージをインストールする際は、次のような組み合わせでコマンドを実行します。

# apt-get update && ←(1)

# apt-get -yf upgrade ←(2)

(1)と(2)の内容を表す関数を作成すれば、コマンド入力が楽になるでしょう。


3.bashに於いて、aliasをセットするための正しいコマンドラインを選択しなさい。

1. alias rm=rm -i
2. alias rm="rm -i"
3. alias=rm "rm -i"
4. alias rm = "rm -i"
5. alias rm rm -i

正解:2

rmコマンドはファイルを削除するためのコマンドです。このコマンドをオプションなしで実行すると、ファイル削除の可否を確認するメッセージが表示されることなくファイルは削除されます。このとき、次のようにrmコマンドを実行すれば、削除されるファイルを確認しながら作業を進められます。

$ rm -i file.txt

しかし、rmコマンドを実行するたびに「-i」オプションを付けるのは面倒ですし、付け忘れることもあります。そこで、rmコマンドをタイプしたら自動的に「rm -i」コマンドが実行されるようになれば便利です。これを実現するのがシェル(ここではbash)のalias(別名)機能です。例えば、次のように aliasコマンドを実行すれば、rmコマンドをタイプすると自動的に「rm -i」コマンドが実行されるようになります。

alias rm="rm -i"

ここで、本当に「rm」コマンドの別名が「rm -i」となったかどうかを確認するためには、aliasコマンドを引数なしで実行します。すると、現在設定されている別名が一覧表示されます。


4.コマンド「$ cd ~miles」の意味として適切なものを選択しなさい。

1. ユーザー「miles」のホームディレクトリに移動する
2. 「~miles」という名前のディレクトリに移動する
3. システム・ディレクトリmilesに移動する
4. このような表現はない
5. ユーザー「miles」をコマンドオペレーターのホームディレクトリに移動させる

正解:1

Linuxのシェルで「~」記号はホームディレクトリを意味します。たとえば、ユーザー「miles」としてログインしている場合、「~」記号はユーザー「miles」のホーム・ディレクトリを表します。また、「~」記号とユーザー名を組み合わせると、指定したユーザーのホーム・ディレクトリを意味します。たとえば、ユーザー「davis」がコマンド「$ cd ~miles」を実行すると、ユーザー「miles」のホーム・ディレクトリに移動します。
もちろん、ユーザー「davis」がユーザー「miles」のホーム・ディレクトリを閲覧できるよう設定されている場合のみ、ユーザー「miles」のホーム・ディレクトリに移動できます。それ以外の場合は移動できません。たとえば、Red Hat Linux 7.3は、ユーザーのホーム・ディレクトリは所有者(つまりそのユーザー)のみ閲覧できるように初期設定されています。したがって、ユーザー「davis」は他のユーザー「miles」のホーム・ディレクトリに移動できません。

5.エラーが発生せず、正常にコマンドが実行できた直後に、

echo $?

を実行した時、表示される戻り値は何か?

正解: 0

【実行結果の返り値】

コマンドを実行すると、終了時にシェルに対して戻り値を返します。正常終了した場合は0、正常終了しなかった場合は0以外の値が返されますので、この戻り値を利用して、コマンドの実行が正常に終了したかどうかを判定することができます。戻り値は、特殊な変数$?に格納されます。

以下の例ではエラーが発生するため、戻り値が1になっています。

$ ls -l hoho
ls: そのようなファイルやディレクトリはありません
$ echo $?
1
 
シェルスクリプトでの特殊な変数
$? 実行結果の返り値~正常に終了すれば0、正常終了しなければ0以外の値が返される
$0 スクリプト名
$1 1番目の引数(以下、$2、$3、...)
$# 引数の数


6.「echo $?」を実行すると「1」が表示された。ここでキーボードの上矢印キーを押し、再度同じコマンドを実行した。実行結果として適当なものを選びなさい。

1. 「1」が表示される
2. 「0」が表示される
3. 「?」が表示される
4. 何も表示されない

正解:2

1度目の「echo $?」は正常に実行されていますから、$?には「0」が格納されます。再度「echo $?」を実行すると、「0」が表示されることになります。
スポンサーサイト

テーマ : UNIX/Linux
ジャンル : コンピュータ

tag : LINUX LPIC

コメントの投稿

非公開コメント

スカウター
プロフィール

Author:うにえる
個人的メモ

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。