GNU/Linux >> Znalost Linux >  >> Linux

Je to Uuoc (zbytečné použití Cat) přesměrování jednoho souboru do druhého?

Pokud chci vytvořit obsah file2 odpovídá obsahu file1 , evidentně jsem mohl spustit cp file1 file2 .

Pokud však chci zachovat vše o file2 kromě obsah – vlastník, oprávnění, rozšířené atributy, seznamy ACL, pevné odkazy atd. atd., pak bych nechtěl spouštět cp .* V tom případě chci pouze plopovat obsah file1 do file2 .

Zdá se, že by to udělalo následující:

< file1 > file2

ale to nejde. file2 je zkrácen na nic a není zapsán do. Nicméně,

cat < file1 > file2

dělá práce.

Překvapilo mě, že první verze nefunguje.

Je druhá verze UUOC? Existuje způsob, jak to udělat bez vyvolání příkazu, pouze pomocí přesměrování?

Poznámka:Jsem si vědom toho, že UUOC je spíše pedantský bod než skutečný anti-vzor.

*Jak zjistil tniles09, cp bude ve skutečnosti v tomto případě fungují.

Přijatá odpověď:

cat < file1 > file2 není UUOC. Klasicky < a > provádějte přesměrování, která odpovídají duplikacím deskriptoru souboru na systémové úrovni.
Duplikace deskriptoru souboru samy o sobě nic nedělají (no, > přesměrování se otevírají pomocí O_TRUNC , abychom byli přesní, výstupní přesměrování zkrátí výstupní soubor). Nenechte < > symboly vás matou. Přesměrování nepřesouvá data – přiřazuje deskriptory souborů jiným deskriptorům souborů.

V tomto případě otevřete file1 a přiřadit tento deskriptor souboru k deskriptoru souboru (<file1 ==0<file1 ) a file2 a přiřadit tento deskriptor souboru k deskriptoru souboru 1 (>file2 ==1>file2 ).

Nyní, když máte dva deskriptory souborů, potřebujete proces, který mezi nimi přesune data – a to je to, co cat je pro.


Linux
  1. Vysvětlení typů souborových systémů Linux, který byste měli použít

  2. Jak kopírovat nebo klonovat oprávnění z jednoho souboru do druhého v systému Linux

  3. Je možné použít / v názvu souboru?

  1. Hledání obsahu jednoho souboru v jiném souboru

  2. Jak připojit obsah více souborů do jednoho souboru

  3. Jak najít slova z jednoho souboru v jiném souboru?

  1. Zkopírujte celou hierarchii systému souborů z jednoho disku na druhý

  2. Přesměrovat strace do souboru

  3. Jak lokálně přesměruji doménu na jinou doménu?