Jak działa dokładnie wc -l ?

Tutaj można zadać pytanie, jeśli Linuksa widzi się pierwszy raz w życiu ;)
arhetyp
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 15 mar 2016, 06:46
Płeć: Mężczyzna

Jak działa dokładnie wc -l ?

Post autor: arhetyp »

Witam,

bardzo proszę pomóc mi zrozumieć wynik działania poniższego polecenia:

Kod: Zaznacz cały

wc -l < plik.txt > plik.txt
plik.txt np wygląda startowo tak:
linia1
linia2
Zatem wc -l zwraca 2 i potem zapisuje/nadpisuje to ponownie do tego samego pliku plik.txt.

Ja zatem oczekiwałbym, że plik będzie wyglądać: Dlaczego wygląda tak: ?

Będę bardzo wdzięczny - domyślam się, że to jakiś prosty motyw a nie potrafię tego zrozumieć...

Pozdrawiam,
Arek

# thalcave: dodałem tagi :)
arhetyp
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 15 mar 2016, 06:46
Płeć: Mężczyzna

Re: Jak działa dokładnie wc -l ?

Post autor: arhetyp »

Bardzo proszę o wyjaśnienie:)
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Re: Jak działa dokładnie wc -l ?

Post autor: thalcave »

Spróbuję ci to wyjaśnić.
Spróbuj podejść do polecenia jako całości:

Kod: Zaznacz cały

wc -l < plik.txt > plik.txt
Uruchamiasz polecenie wc z parametrem -l. Do polecenie otwierasz plik plik.txt do odczytu i otwierasz plik plik.txt do nadpisania. Do nadpisania co oznacza, że ten plik automatycznie jest zerowany.
Następnie wc pobiera zawartość plik.txt (czyli nic) i na niej operuje wynikiem czego jest 0.

Polecenie, które działa tak jak chcesz to:

Kod: Zaznacz cały

wc -l < plik.txt >> plik.txt
No ale oryginalna zawartość nie jest nadpisywana ;)
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
arhetyp
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 15 mar 2016, 06:46
Płeć: Mężczyzna

Re: Jak działa dokładnie wc -l ?

Post autor: arhetyp »

Bardzo dziękuję za odpowiedź.

Rozumiem, aczkolwiek jest to póki co dla mnie rozumienie trochę "na słowo" bo nie załapałem jeszcze takiej systemowej logiki myślenia:)

Z tego co piszesz to w ogóle nie da się zrobić takiej operacji jak ja sobie to wyobrażałem bo przykład z >> dodaje ostatni wiersz więc finalnie plik będzie miał 3 linie i wynik będzie zatem 3 a nie jak ja się spodziewałem 1 (czyli jedna linia z liczbą wierszy).

Dziękuję - pewnie będę miał niebawem kolejne pytania.

Przy okazji, czy możesz polecić jakaś książkę w tych tematach?

Pozdrawiam,
Arek
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Re: Jak działa dokładnie wc -l ?

Post autor: thalcave »

Chyba najlepsze są jednak artykuły w sieci. Ksiązki z regóły sporo kosztują a jak wychodzą (zwłaszcza po polsku) to są już zdeaktualizowane.

Tak przy okazji to nie bardzo rozumiem sens zliczania wierszy w pliku i nadpisywania ich w jednym czasie.
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
ODPOWIEDZ

Wróć do „Przedszkole Linuksa”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 107 gości