명령줄에서 파일의 명령을 하나씩 복사하여 붙여넣고 실행하기 전에 사용할 경로를 만듭니다.

명령줄에서 파일의 명령을 하나씩 복사하여 붙여넣고 실행하기 전에 사용할 경로를 만듭니다.

여러 줄의 Bash 코드가 포함된 파일을 내 GitHub 계정에 호스팅 .md하고 해당 줄을 복사하여 붙여넣고 하나씩 실행하여 소프트웨어(웹 사이트 모듈)를 의도적으로 비자동으로 업그레이드하려고 합니다
. 웹 사이트 디렉토리, 내 경우 디렉토리는 다음 위치에 있습니다.

$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읽기에서 변수를 확장할 수 없습니다..

나는 내가 하고 싶은 일을 다음과 같이 정의한다.터미널에서 파일의 명령을 하나씩 복사하여 붙여넣고 실행하기 전에 사용할 경로를 효과적으로 생성하십시오.저는 이를 달성하기 위한 가장 효율적인 방법을 찾고 있습니다. 여기에는 길고 무작위로 생성된 사용자 이름을 인쇄하는 자동화가 포함되어야 합니다(예를 들어 터미널이나 다른 곳에서 복사하여 붙여넣지 않고 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

관련 정보