"sudo /bin/ls %s %foo"는 무엇을 의미합니까?

"sudo /bin/ls %s %foo"는 무엇을 의미합니까?

위의 명령을 이해하려고 노력하고 있습니다.

sudo /bin/ls %s %file_path
  1. 무엇을 합니까 %? 일종의 대체 메커니즘인가?

  2. 무엇을 sudo /bin/ls합니까?

답변1

Bash 스크립팅의 %는 앵커링을 의미하지만 때로는 프로그램마다 다를 수 있습니다.일부 매개변수의 일부또는또 다른. 을 위한ㅋㅋㅋ아무것도 하지 않습니다. sudo의 경우 몇 가지 작업을 수행하지만 이 컨텍스트에서는 그렇지 않습니다. 제겐 말도 안 돼요... 이 명령은 단지 루트로서 다음을 시도합니다. 기록상으로는 실행할 필요가 거의 없습니다.ㅋㅋㅋ루트로서 일반 사용자가 다음을 통해 파일 이름에 액세스할 수 없는 곳은 거의 없습니다.ㅋㅋㅋ) 파일에 대해 %s 및 %foo 디렉토리를 검색하면 "ls가 %s에 액세스할 수 없습니다. 해당 파일이나 디렉토리가 없습니다."라는 결과를 제공해야 하며 %foo에 대해서도 거의 동일합니다. (직접 생성하지 않으면 %s 디렉토리가 있을 수 없습니다)

스크립팅을 위해 아래와 같은 작업을 수행합니다.

에서http://wiki.bash-hackers.org/syntax/pe:

앵커링또한 표현식을 "고정"할 수 있습니다. #(해시마크)는 표현식이 문자열의 시작 부분과 일치함을 나타내고, %(퍼센트 기호)는 끝 부분에 대해 일치함을 나타냅니다.

MYSTRING=xxxxxxxxxx
echo ${MYSTRING/#x/y}  # RESULT: yxxxxxxxxx
echo ${MYSTRING/%x/y}  # RESULT: xxxxxxxxxy

(코드가 하는 일은 첫 번째 또는 마지막 "x"를 "y"로 교환하는 것입니다.)

관련 정보