頻繁に開発され更新される Web アプリケーションのデプロイを自動化したいと考えています。 Webアプリケーションは名前を知らず、ディレクトリ構造は次のようなzipファイル形式で提供されます。
unknown_name.zip
└── unknown_folder_name
└──all_the_application_files
以下を実行するにはbashスクリプトが必要です。
- /var/www/のすべてのコンテンツを削除[完了]
- 指定された一時パスにUnknown_name.zipアーカイブを解凍します。 [完了]
- 既知のtmpパスでcd [完了]
- Unknown_name.zipから抽出されたUnknown_folder_name内のCD
- all_the_application_filesを/var/wwwに移動します。 [以前の問題を解決したら簡単です。]
重要:tmpディレクトリには、私がしたいディレクトリが1つしかありません。私の現在のbashスクリプト:
rm -r /var/www/*
unzip ./\*.zip \* -d /home/lese/tmp-deploy
cd /home/lese/tmp-deploy
# HERE I WOULD cd unknown_folder_name
mv * /var/www/
ベストアンサー1
解決策
現在のディレクトリにディレクトリが1つしかなく、別のディレクトリ(他のフォルダとファイルがありません)がないと確信している場合は、次のコマンドを使用してディレクトリを入力できます。
cd *
ディレクトリが1つしかないことがわかっていても、現在のディレクトリにディレクトリではなく、ディレクトリにシンボリックリンクされていないファイルがある可能性がある場合は、次のものを使用できます。
cd */.
ディレクトリのみを選択してください。
説明する
単一のファイルは、*
シェルによって現在のディレクトリ(隠しファイル、特に.
常に存在するディレクトリとディレクトリを除く)のすべてのファイル名(サブディレクトリを含む)のリストに展開されます。..
現在のディレクトリの唯一のコンテンツがインポートするサブディレクトリの場合、サブディレクトリは次に展開されます。
cd unknown_folder_name
それからあなたが望むことをしなさい。
トリックは、これがサブディレクトリ自体である任意のサブディレクトリ内の*/.
「自己ディレクトリ」(という名前)に拡張されることです。.
ファイル名にはを含めることができず、/
ディレクトリが1つしかないと仮定すると拡張される唯一の名前はですunknown_folder_name/.
。もちろん同じディレクトリですunknown_folder_name
。