*ディレクトリパスの終わり

*ディレクトリパスの終わり

*Bashスクリプトのディレクトリパスの末尾にある文字に問題があります。

一部のアーカイブが十分に古い場合、サーバーから自動的に削除するスクリプトがあります。スクリプトはAマシンにあり、Bマシンで実行する必要があります。私はssh両方のコンピュータにリモートでアクセスします(Sudoは不要で、一般ユーザーのみが利用できます)。このスクリプトのルールの一つはdirA/dirB/dirC/dirD/dirE*

しかし、その位置には何もないdirEので、どの変数を表すものだと推測します*。これが私が知りたいことです。*ディレクトリパスの終わりは何を意味し、スクリプトは何をしますか?

答え1

ここで、*「ワイルドカード」とは、「0個以上の文字と一致」を意味します。これを説明するために、次のディレクトリを検討してください。

$ ls
dirA  dire  dirE  dirEa  dirEEE
$ echo dirE*
dirE dirEa dirEEE

上記のように、globはdirE*一致しますdirEが、dirEaorはdirEEE一致しません(*nixシステムは大文字と小文字を区別します)。dirAdire

したがって、スクリプトでは、これは名前dirA/dirB/dirC/dirD/で始まるという意味ですdirE

答え2

他の理由で、このQ&Aに参加している人のためにここにメモを追加します。

ファイル名の末尾にaが表示されている場合(実際はありますが、時には(または組み込み関数)、または完了出力に表示されることがあります)、*これはまったく異なります。lsls -Flsls -Fls-Ftcshzshtcsh

この-Fオプションを使用すると、ls項目の末尾に末尾の文字を追加できます。特別な識別を支援するためのファイル名詳細。ファイル名のリストが完了したら、同じことを行いますzshtcsh

あなたが見るなら:

$ ls -F
dir/  fifo|  file  link@  ls*  socket=

これらは/、ファイル名の一部ではありませんが(誰かがユーザーをだまそうとする場合かもしれません)、|以下を知らせるために追加されます。*=ls

  • dirディレクトリ(/)です。
  • fifo名前付きパイプ/FIFO( |)。
  • linkシンボリックリンク(@)です。
  • ls実行可能な一般ファイルです(*)。(該当する権限には少なくとも1つの実行ビットがあります)
  • socketUnix ドメインソケットです( =)。

一部のls実装(およびzsh完成)は、さまざまなオプションをサポートする端末の色で区別することもできます。

関連情報