GNU/Linux >> Znalost Linux >  >> Linux

Přesměrovat na stejný soubor jako zdrojový soubor zpracovaný příkazem?

Tato otázka zde již obsahuje odpovědi :Otevírají operátory přesměrování vždy popisovače souborů paralelně?

(2 odpovědi)
Uzavřeno před 6 lety.
  1. Přesměrování zde není povoleno. Je cat nedovolit? Není ale
    přesměrování nezávislé na jakémkoli příkazu, který s ním běží?

    $ cat bk > bk
    cat: bk: input file is output file
    
  2. Proč následující přesměrování vyprázdní soubor:

    $ less  bk > bk
    

    awk funguje také podobným způsobem jako less pokud jde o přesměrování. awk je ten, se kterým jsem ve skutečnosti našel problém, zatímco výše uvedené příklady jsou nesmyslné

Jaký je obecně správný způsob použití přesměrování?

Přijatá odpověď:

Problém je v tom, že přesměrování výstupu zabije soubor dříve, než less je dokonce spuštěno:

open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1)                        = 1
close(3)                          = 0
execve("/usr/bin/less", ["less", "-WNS", "file"], [/* 102 vars */]) = 0

Normální přesměrování výstupu přepíše soubor. O_TRUNC (viz man 2 open ) odstraní obsah souboru.


Linux
  1. Přesměrování obsahu souboru na příkaz „echo“?

  2. Přesměrovat výstup příkazu v „příkazu času“?

  3. Základní příklady příkazu File v Linuxu

  1. 9 Užitečné příklady příkazu Split v Linuxu

  2. Pipes a přesměrování v Linuxu – vysvětleno!

  3. Jak připojit výstup do souboru?

  1. Jak používat příkaz Tar v Linuxu

  2. Io Redirection and the Head Command?

  3. Jak přesměrovat výstup příkazu time do souboru v Linuxu?