이 줄에서 :
tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts
예상되는 결과는 무엇입니까? 소문자 'a'가 대문자 'A'로 바뀌는 것을 알고 있지만 다음은 무엇입니까? 리디렉션이 동일한 파일 이름이므로 원본 파일을 덮어 쓰겠습니까?
이 줄에서 :
tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts
예상되는 결과는 무엇입니까? 소문자 'a'가 대문자 'A'로 바뀌는 것을 알고 있지만 다음은 무엇입니까? 리디렉션이 동일한 파일 이름이므로 원본 파일을 덮어 쓰겠습니까?
답변:
예상 결과는 빈 /etc/hosts
파일입니다.
프로그램이 실행 을 시작하고 파일에서 읽기 시작하기 전에 리디렉션이 > /etc/hosts
발생 하여 파일을 자릅니다 .tr
에 출력을 쓰려면 /etc/hosts
파일 사본으로 작업하거나 나중에 출력 파일을 제자리로 옮기거나 sponge
moreutils 명령을 사용하면 표준 입력을 흡수하고 파일에 쓸 수 있습니다.
tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts
이 경우, 각각의 "가"에 /etc/hosts
될 것이다 교체 "A"로, 모든 라인이 될 것입니다 귀하의 지역에 따라 역으로 정렬 , 빈 줄을 각 줄 사이에 삽입됩니다 , 그 결과가 투입됩니다 /etc/hosts
.
유용 할 수도 있습니다.
bash: /etc/hosts: Permission denied
실행하지 않으면 오류가 발생합니다 (쉘이 bash라고 가정)root
./etc/hosts
일반적으로 루트 만 쓸 수 있습니다. 이것을root
실제로 실행 하지 않으면/etc/hosts
Michael Homer가 설명 한 것처럼 비어 있습니다.