명령에서 $ ()는 무엇입니까? Commands 란 무엇입니까 ? 예를 들면 다음과 같습니다. chmod

$()Linux Shell Commands 란 무엇입니까 ?

예를 들면 다음과 같습니다.

chmod 777 $(pwd)



답변

백틱과 매우 유사합니다 .“.

이를 명령 대체 ( posix specification ) 라고 하며 서브 쉘을 호출합니다. $()백틱 (“) 중괄호 또는 그 사이의 명령은 서브 쉘에서 실행 된 다음 출력이 원래 명령에 배치됩니다.

백틱과 달리 $(...)양식을 중첩 할 수 있습니다. 따라서 다른 대체 내부에서 명령 대체를 사용할 수 있습니다.

대체 문자에서 이스케이프 문자에는 차이가 있습니다. 나는 $(...)양식을 선호합니다 .


답변

POSIX 또는 POSIX에서 껍질 같은 ( ksh, bash, ash, zsh, yash와 같은 …)는 그 ``명령은 내부 : $()실행하고 표준 출력으로 대체된다. $()큰 따옴표 안에 있지 않으면 단어 분리 및 파일 이름 생성이 수행됩니다 . 그러므로

chmod 777 $(pwd)

다음으로 교체해야합니다.

chmod 777 "$(pwd)"

현재 작업 디렉토리 경로에서 단어 분리 및 파일 이름 생성을 방지합니다.

또는 디렉토리 이름이 변경된 경우 zsh와 같은 일부 쉘에서는 제외하십시오.

chmod 777 "$PWD"

$PWDPOSIX 쉘의 현재 작업 디렉토리에 대한 경로를 보유하는 특수 변수 이기 때문 입니다.

또는 더 나은 :

chmod 777 .

.현재 디렉토리 의 항목은 해당 디렉토리 자체에 대한 하드 링크이기 때문입니다.


답변

이것은 $()대부분 다른 명령 내에서 명령을 실행하는 데 사용됩니다.

chmod 777 $(pwd)

pwd명령은 현재 작업 디렉토리를 제공합니다. 따라서 전체 작업이 실행될 때 pwd의 출력이 위치를 대체하고 인수의 역할을 chmod하며 결과적으로 현재 작업 디렉토리가 777프로덕션 환경에서 절대 사용해서는 안되는 권한 을 얻습니다 .


답변