smazání souboru wc abc > abc a zásek příkazu sort

Linux, Unix, BSD systémy, distribuce, open source

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Da Gony 3. 3. 2022 12:17

Mám soubor abcd.txt a systém linux, shell=bash. Proč linuxový příkaz uniq abcd.txt > abcd.txt ho smaže? (Ostatně i cat bla > bla)
Přitom uniq abcd.txt >(cat) to zobrazí správně.
Za další: Uniq abcd.txt >(wc) to zobrazí správně a příkaz skončí. Ale sort abcd.txt >(wc) Příkaz nic nevypíše-čeká spuštěný.
Da Gony
Junior
Uživatelský avatar

Odeslat příspěvekod JirkaVejrazka 3. 3. 2022 16:31

Protoze reknes shellu, aby vystup prikazu presmeroval do souboru. A on si ten soubor otevre pro zapis jeste predtim, nez ho uniq otevre pro cteni. A otevreni souboru pro zapis znamena jeho smazani, pokud uz existuje.
JirkaVejrazka
Mírně pokročilý

Odeslat příspěvekod Da Gony 3. 3. 2022 20:13

Aha, tím se to vysvětluje. Nenapadlo mě to .Zmanuálu skriptovacích jazyků jeběžné , že fopen(...,w+) se chová, že soubor vytvoří

Zkusil jsem i příkaz `cat abcd.txt Enter Ctrl+C` (nic do něj nenapsat a přerušit) soubor je taky vyprázdněn - Potvrzeno
Da Gony
Junior
Uživatelský avatar

Odeslat příspěvekod Da Gony 3. 3. 2022 20:14

fopen, (w) bez plusu, to je kritický rozdíl.
Da Gony
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků