반복 와일드카드를 사용하여 ls를 다른 프로그램으로 파이프

반복 와일드카드를 사용하여 ls를 다른 프로그램으로 파이프

내가 읽고 있는 내용은ls 구문 분석의 함정주어진 예는 for/while 루프 ls를 사용하는 것에 관한 것입니다. 기사 제목에 "ls 구문 분석"이라고 나와 있습니다. 이는 ls의 출력을 awk 및 기타 프로그램으로 파이프하는 것도 마찬가지로 나쁘다는 의미입니까?

ls /my/path/ | awk '{print $NF}'

ls의 출력을 다른 프로그램으로 파이프할 때 glob을 반복하는 것이 더 낫습니까?

for p in /my/path/*; do
    echo "$p" | awk '{print $NF}'
done

내 생각에는 ls가 줄바꿈 등을 출력할 수 있기 때문에 ls를 다른 프로그램에 직접 파이프하는 것도 "나쁜 습관"이지만 이에 대한 정보는 많이 보지 못했습니다.

답변1

glob을 반복하는 것이 출력을 파이핑하는 것보다 안전하지만 , glob의 출력도 여러분이 하는 일만큼 위험하다는 ls점을 명심하세요 . ls당신이 시스템의 유일한 사용자이고 파일 이름 지정에 능숙하다면 파이프는 ls큰 문제가 아닙니다. 기사에서 언급했듯이 이러한 문제는 파일 이름에 이상한 문자(줄 바꿈, 파이프 등)를 추가하기 시작한 경우에만 발생합니다. 나는 많은 사람들이 공유하는 시스템이나 일부 프로그램에 의해 무작위로 생성되는 파일이 있는 시스템을 사용할 때 보안 파이프에만 관심을 갖습니다. 개인용 컴퓨터에서 일반적으로 사용하려면 루프를 작성하는 것보다 합리적인 파일 이름을 지정하는 것이 더 간단할 수 있습니다.

관련 정보