줄 수가 다른 이유는 무엇입니까?
$ head -n 100000 ./access.log > ./data/log.sample
$ cat $_ | wc -l
1933424
답변
$_
가 ./access.log
아닌 (마지막으로 실행 된 명령의 마지막 인수 )로 확장됩니다 ./data/log.sample
.
그래서 당신은 실제로의 줄 수를보고 ./access.log
있습니다.
리디렉션 ( >
)은 명령이 시작 head
되기 전에 셸에서 수행 되므로 명령의 일부가 아닙니다 head
. 따라서 $_
당신 과 함께 얻을 것이다 ./access.log
.
보낸 사람 man bash
:
($ _, 밑줄) 쉘 시작시 환경 또는 인수 목록에 전달 된대로 실행중인 쉘 또는 쉘 스크립트를 호출하는 데 사용되는 절대 경로 이름으로 설정하십시오. 결과적으로 확장 후 이전 명령의 마지막 인수로 확장됩니다. 또한 실행되어 해당 명령으로 내 보낸 환경에 배치 된 각 명령을 호출하는 데 사용되는 전체 경로 이름으로 설정하십시오. 메일을 확인할 때이 매개 변수는 메일 파일의 이름을 보유합니다.