Jaki jest powód różnej liczby linii?
$ head -n 100000 ./access.log > ./data/log.sample
$ cat $_ | wc -l
1933424
!$robi to, co chciałeś, ale nie będzie działać w skrypcie IIRC.
teepolecenia w swoim skrypcie.
Jaki jest powód różnej liczby linii?
$ head -n 100000 ./access.log > ./data/log.sample
$ cat $_ | wc -l
1933424
!$robi to, co chciałeś, ale nie będzie działać w skrypcie IIRC.
teepolecenia w swoim skrypcie.
Odpowiedzi:
$_rozwija się do ./access.log(ostatni argument ostatnio wykonanej komendy), a nie ./data/log.sample.
Więc faktycznie widzisz liczbę linii ./access.log.
Przekierowanie ( >) nie jest częścią headpolecenia, ponieważ jest wykonywane przez powłokę jeszcze przed uruchomieniem headpolecenia. Stąd z $_tobą dostaniesz ./access.log.
Od man bash:
($ _, znak podkreślenia.) Podczas uruchamiania powłoki ustaw bezwzględną nazwę ścieżki używaną do wywoływania powłoki lub skryptu powłoki wykonywanej tak, jak przekazano w środowisku lub liście argumentów. Następnie rozwija się do ostatniego argumentu do poprzedniego polecenia , po rozwinięciu. Ustawiono również na pełną ścieżkę używaną do wywołania każdego wykonanego polecenia i umieszczonego w środowisku wyeksportowanym do tego polecenia. Podczas sprawdzania poczty ten parametr przechowuje nazwę pliku poczty.