コマンドラインからファイル内のコマンドを1つずつコピーして貼り付け、実行する前に使用するパスを作成します。

コマンドラインからファイル内のコマンドを1つずつコピーして貼り付け、実行する前に使用するパスを作成します。

複数行のBashコードを含むファイルを自分のGitHubアカウントにホスト.mdし、その行をコピーして貼り付けて、1つずつ実行して、ソフトウェア(Webサイトモジュール)を意図的に非自動にアップグレードしようとしています
。 Webサイトのディレクトリ、私の場合、ディレクトリは次の場所にあります。

$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2

私はGitHubに実際のパスを投稿したくないので、対話する方法を探しています。尋ねるユーザー(現在は私だけですが、今後はそうではないかもしれません)ターミナルから直接、そのようなパスについて。

私の共有ホスティング環境では、SSHのユーザー名は非常に長くてランダムなので、jktantttopppazqqqddd毎回端末でこれを覚えたりコピーしたりすることは非効率的ですが、残りのパスは覚えやすいです。それが私が望む理由です。早く直接変数に展開し、"${HOME}"残りのパスとともに変数に保存します。 Bashコード行をコピーして貼り付けて実行する直前に(このような変数を使用します)。

私は似たようなものを使用し、変数拡張がread website_dirどこにあるか上記のパスを提供しようとしましたが、結果はありませんでした。${HOME}"${HOME}"/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2読み取りで変数を拡張できません。

私は私がしたいことを次のように定義します。端末からファイル内のコマンドを1つずつコピーして貼り付け、実行する前に使用するパスを効果的に生成します。私はこれを達成するための最も効率的な方法を探しています。これには、長くランダムに生成されたユーザー名を印刷する自動化が含まれている必要があります(たとえば、端末や他の場所からコピーして貼り付けることなくecho $HOME)。

ユーザー名でパスが自動的に生成される問題を解決するには?

修正する

これは私にとって効果的です。

home_dir=$(echo $HOME) &&
read website_dir_relative_path_after_home_dir && 
website_dir="${home_dir}${website_dir_relative_path_after_home_dir}" # Note the lack of spacing between the two ${}${};

これをどのように行うかを共有してください。

答え1

$HOME変数です。新しいものは必要ありません。したがって、ターゲットディレクトリがであることがわかっている場合、$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2スクリプトに必要なのは次のとおりです。

full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"

たとえば、次のスクリプトを考えてみましょう。

#!/bin/bash
full_path="$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2"
echo "Path is: $full_path"

ランニングは以下を提供します:

$ foo.sh
Path is: /home/terdon/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2

ご覧のとおり、尋ねる必要はありません。$HOMEデフォルトでは、スクリプトですでに使用できます。

ユーザー入力が本当に必要な場合は、メッセージを表示しないでください!これはエラーが発生しやすく、ユーザーを迷惑にします。コマンドラインからインポートしてください。


full_path="$1"
## rest of the script

その後、を使用してスクリプトを呼び出すことができ、スクリプトの変数scriptName.sh $HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2はに設定されます。$full_path$HOME/MEDIUM_DIRECTORY_1/DOMAIN_DIRECTORY/MEDIUM_DIRECTORY_2

最後に、〜しなければならない想像できないあいまいな理由で、ユーザーに相対パスを求めるメッセージを表示できます。たとえば、

echo 'Please enter the relative path to the target directory.'
read -p "the path you enter will be assumed to be relative to $HOME: " full_path
echo "You entered: $full_path, moving there now"
cd "$full_path"
echo "We are currently in $PWD"

ランニングは以下を提供します:

$ foo.sh
Please enter the relative path to the target directory.
the path you enter will be assumed to be relative to /home/terdon: foo
You entered: foo, moving there now
We are currently in /home/terdon/foo

関連情報