cat file1 file2 > file1
Ahoj,
před přípravou na test jsem si hrál s příkazy a narazil jsem u toho i na cat file1 file2 > file1
což mi vyhodilo error.
Nemohl jsem přijít na to proč, tak hážu dotaz do placu.
Díky za odpověď
Ahoj,
před přípravou na test jsem si hrál s příkazy a narazil jsem u toho i na cat file1 file2 > file1
což mi vyhodilo error.
Nemohl jsem přijít na to proč, tak hážu dotaz do placu.
Díky za odpověď
Takto spojit dva soubory neni mozne a muze za to interpratace shellu. Takze se cilovy soubor zkrati na 0 delku a az pak dojde k otevreni file1 kde jiz nic neni...
funkci reseni je treba :
cat file1 file2 | tee file1 #kde je videt i vystup
nebo ve vimu otevrit file1 a spustit :r file2
cat file2 >>file1
cat file1 file2 > file3 ; mv file3 file1
První varianta (cat file1 file2 | tee file1) nemůže fungovat. Pro malé soubory zdánlivě splní úkol, ale jak dlouhý je "malý" soubor nelze dopředu říci. Celé to zdánlivě funguje jen díky bufferu roury, deskriptorů a díky aktuální implementaci tee. Do file1 se tak skoro jistě zapíše začátek z file1 a celý file2, a nikdy není dopředu jasné, kolik bude zapsáno dat celkem.
Defugio Auctoritatem ( 2014-11-08 13:36:55 +0100 )editTaky by mohlo fungovat cat file2 >>file1
Problém trochu je, že z otázky není moc poznat, co je vlastně otázka.
OK, teď už to poznat je. Vyplývá to z toho, že napřed musí shell dekódovat příkazovou řádku (co se od něj vlastně chce) a vykonat přípravné práce (např. otevřít výstupní soubor pro zápis a nastavit na velikost nula), teprve potom dojde ke spuštění požadovaného programu - který ovšem už v tu chvíli má první soubor prázdný a možná i nečitelný (podle toho, jestli to otevření pro zápis je exkluzivní nebo ne).
Asked: 2014-11-06 14:53:27 +0100
Seen: 279 times
Last updated: Nov 06 '14