.
bashが処理する方法で(または..)と~
文字の違いは何ですか? charを使用すると、~
bashはそれを絶対パスに拡張しますが、(または..)bashを使用すると.
絶対パスに拡張しませんか?
私のパスワードはホームディレクトリです。次のコマンドを実行すると(ls '.'
またはls)、pwdの内容が表示されますが、コマンドを実行するとls '~'
ファイルやディレクトリが存在しないというエラーが発生します。これは~
コマンドに渡す前にシェルによって拡張されるようになっていますが、ls
そう.
ではありません。.
特殊文字ですか? (または..).
このシェルで特殊文字として扱われて拡張されるのはいつですか?
ベストアンサー1
ドットは.
シェルの特殊文字ではありません。.
ディレクトリリンクのすべての属性は、..
シェルではなくファイルシステム構造に関連付けられています。そこでも文字ではなく、2つの特定の名前があることに注意してください。foo.txt
、 、 .bar
、...
で始まるファイル名が glob とls
。
一方、~
ファイルシステムでは通常の文字ですが、シェルではチルダ拡張特別扱いをしてください。したがって、~
単語の先頭に引用符がない単語は、現在のユーザーのホームディレクトリとユーザー~foo
のホームディレクトリに展開されますfoo
。
(もちろん、シェルはと.
が何であるかを知っています..
。なぜなら、現在の作業ディレクトリがで表示されるのではなくで表示されるからですcd ..
。/tmp
/tmp/..
/
_
,
%
-