- PR -

dirnameコマンドとbasenameコマンド

1
投稿者投稿内容
トーヤ
ベテラン
会議室デビュー日: 2003/06/12
投稿数: 63
投稿日時: 2003-07-03 18:09
こんにちは、トーヤです。

UNIXって、dirnameコマンドとbasenameコマンドがありますよね?
Linuxでは未確認ですが、HP-UXとかだと、man dirnameで実行すると
basenameコマンドのmanが参照できるのですが、ひょっとして
この2つのコマンドって同じものなのですか?

あと、`dirname $0`コマンド結果を変数に入れてスクリプトで
使っているのですが、このコマンドは具体的にどういった処理を
行ってるのでしょうか?
コマンドラインから実行すると、出力結果は「.」だけでした。

よろしくお願いしますー!!
take
ぬし
会議室デビュー日: 2002/06/06
投稿数: 265
投稿日時: 2003-07-04 09:42
トーヤさんこんにちわ

>UNIXって、dirnameコマンドとbasenameコマンドがありますよね?
>Linuxでは未確認ですが、HP-UXとかだと、man dirnameで実行すると
>basenameコマンドのmanが参照できるのですが、ひょっとして
>この2つのコマンドって同じものなのですか?

Red Hat 9では別物でした。
manをしてもそれぞれ別のマニュアルが表示されました。
同じ物かどうかは
# ls -l `which dirname`
# ls -l `which basename`
で2つのコマンドがシンボリックリンクになっているか
確認してみるのがいいかと思います。

>あと、`dirname $0`コマンド結果を変数に入れてスクリプトで
>使っているのですが、このコマンドは具体的にどういった処理を
>行ってるのでしょうか?

私はスクリプトを追っかけていくのはあまり得意な方ではないですが
$0は与えられた1番目の引数を意味しますので
その引数のディレクトリ名を取り出している
そして、それをきっと別のコマンドに渡しているんですよね?
どのファイルのどの辺です。ってことを言ってしまえば
もっと説明しやすいかもです。

>コマンドラインから実行すると、出力結果は「.」だけでした。

# echo $0
して$0に入ってる変数を見てみると
「bash」と表示されました。
つまり
# dirname bash
とやっているわけで、ディレクトリ部分が存在しないので
「.」と表示されたんですね。
1

スキルアップ/キャリアアップ(JOB@IT)