$()
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"
$PWD
POSIX 쉘의 현재 작업 디렉토리에 대한 경로를 보유하는 특수 변수 이기 때문 입니다.
또는 더 나은 :
chmod 777 .
.
현재 디렉토리 의 항목은 해당 디렉토리 자체에 대한 하드 링크이기 때문입니다.
답변
이것은 $()
대부분 다른 명령 내에서 명령을 실행하는 데 사용됩니다.
chmod 777 $(pwd)
pwd
명령은 현재 작업 디렉토리를 제공합니다. 따라서 전체 작업이 실행될 때 pwd의 출력이 위치를 대체하고 인수의 역할을 chmod
하며 결과적으로 현재 작업 디렉토리가 777
프로덕션 환경에서 절대 사용해서는 안되는 권한 을 얻습니다 .