내 파일과 그들 모두의 특정 작업을 수행하려는,의 내가 모든 파일의 이름을 변경하고 싶습니다 가정 해 봅시다 : 이것은 잘 작동명령을 실행하지 않고 명령을 표시하십시오.
for file in $(ls); do mv "$file" "${file}_new"; done
. 그러나이 명령을 호출하기 전에, 나는 그것이 실제로 무엇을보고 싶어요, 그래서 나는 그 다음 나에게 그것을 호출하는 모든 명령을 보여줍니다
for file in $(ls); do echo mv "$file" "${file}_new"; done
앞
에 에코를 추가합니다. 내가 그 (것)들과 행복하다면, 나는echo
을 제거하고 그것을 실행한다.
그러나 명령이 파이프 또는 하나 이상의 명령을 포함하여 약간 더 미묘한 경우 더 이상 작동하지 않습니다. 물론 '
을 사용할 수 있으므로 특수 문자는 해석되지 않지만 매개 변수 확장이 없습니다. 나는 또한 특수 문자를 피할 수 있지만 이것은 매우 지루할 것이다.
내 질문은 무엇이 최선의 방법인가요? 나는 -n
옵션에 대해 man bash
을 읽었습니다. "명령을 읽되 실행하지는 않습니다."이것은 쉘 스크립트에서 구문 오류를 검사하는 데 사용될 수 있습니다. 이것은 대화식 쉘에서 무시됩니다. " 이것이 내가 원하는 것인데 대화식 쉘을 위해 필요하다. -x
또는 -v
옵션은 명령을 보여줄뿐만 아니라 호출하기 때문에 너무 늦은 것 같습니다. 옵션을 대신 실행 명령을 보여 왜
기술적으로, 그것을 달성 할 수있는 방법이 없습니다. – devnull
또는 각 별칭을 별칭 = 'bash -c ""''와 같은 별칭으로 * 별표 *로 지정할 수 있으므로 매개 변수가 허용되지만 아무 것도 실행되지 않습니다. * alias-emptifier * 루프를 실행하고 원하는 프로세스를 실행 한 다음 나중에 해당 기능을 복원하는 * 별칭 복원 * 명령을 실행할 수 있습니다. –
Rubens
그건 그렇고,'for $ (ls)'에'for file '을 사용하는 것은 정당한 이유없이 자식 (프로세스)을 희생하고 있습니다. 왜 'for file in'을 사용하지 않겠습니까? – cdarke