Co w powłoce oznacza "2 > &1"?

W powłoce Uniksa, jeśli chcę połączyć stderr i stdout W Strumień stdout w celu dalszej manipulacji, mogę dołączyć następujące polecenie na końcu mojego polecenia:

2>&1

Więc jeśli chcę użyć head na wyjściu z g++, mogę zrobić coś takiego:

g++ lots_of_errors 2>&1 | head

Więc widzę tylko kilka pierwszych błędów.

Zawsze mam problem z zapamiętaniem tego, i ciągle muszę to sprawdzić, a to głównie dlatego, że nie do końca rozumiem składnię tego konkretnego trick.

Czy ktoś może to przerwać i wyjaśnić charakter po charakterze, co oznacza 2>&1?

Author: Ricardo, 2009-05-04

15 answers

Deskryptor pliku 1 jest standardowym wyjściem (stdout).
Deskryptor pliku 2 jest standardowym błędem (stderr).

Oto jeden ze sposobów na zapamiętanie tej konstrukcji (choć nie jest ona do końca dokładna): na początku 2>1 może wyglądać na dobry sposób na przekierowanie stderr do stdout. Jednak w rzeczywistości będzie to interpretowane jako " przekierowanie {[1] } do pliku o nazwie 1". & wskazuje, że poniżej znajduje się deskryptor pliku, a nie nazwa pliku. Tak więc konstrukcja staje się: 2>&1.

 2000
Author: Ayman Hourieh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 20:18:47
echo test > afile.txt

Przekierowuje stdout na afile.txt. To jest to samo co Robienie

echo test 1> afile.txt

Aby przekierować stderr, wykonujesz:

echo test 2> afile.txt

>& jest składnią przekierowującą strumień do innego deskryptora pliku - 0 to stdin, 1 to stdout, a 2 to stderr.

Możesz przekierować stdout na stderr wykonując:

echo test 1>&2 # or echo test >&2

Lub odwrotnie:

echo test 2>&1
W skrócie... 2> przekierowuje stderr do (nieokreślonego) pliku, dołączając &1 przekierowuje stderr do stdout.
 495
Author: dbr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 20:36:11

Kilka sztuczek o przekierowaniu

Niektóre cechy składniowe mogą mieć ważne zachowania. Jest kilka małych próbek o przekierowaniach, STDERR, STDOUT, i argumenty .

1-nadpisywanie czy dodawanie?

Symbol > oznacza przekierowanie .

  • > mean send to as a whole completed file , overwriting target if exist (see {[20] } Bash feature at #3 później).
  • >> mean send in addition to dołącza do target jeśli istnieje.

W każdym razie plik zostanie utworzony, jeśli nie istnieje.

2 - linia poleceń powłoki jest zależna od kolejności!!

Aby to przetestować, potrzebujemy prostej komendy, która wyśle coś na oba wyjścia :

$ ls -ld /tmp /tnt
ls: cannot access /tnt: No such file or directory
drwxrwxrwt 118 root root 196608 Jan  7 11:49 /tmp

$ ls -ld /tmp /tnt >/dev/null
ls: cannot access /tnt: No such file or directory

$ ls -ld /tmp /tnt 2>/dev/null
drwxrwxrwt 118 root root 196608 Jan  7 11:49 /tmp

(spodziewając się, że nie masz katalogu o nazwie /tnt, oczywiście ;). Mamy to!!

Więc, niech zobacz:

$ ls -ld /tmp /tnt >/dev/null
ls: cannot access /tnt: No such file or directory

$ ls -ld /tmp /tnt >/dev/null 2>&1

$ ls -ld /tmp /tnt 2>&1 >/dev/null
ls: cannot access /tnt: No such file or directory

Ostatnia linia poleceń zrzuca STDERR do konsoli i wydaje się, że nie jest to oczekiwane zachowanie... Ale...

Jeśli chcesz zrobić jakieś filtrowanie postów o jednym wyjściu, drugim lub obu:

$ ls -ld /tmp /tnt | sed 's/^.*$/<-- & --->/'
ls: cannot access /tnt: No such file or directory
<-- drwxrwxrwt 118 root root 196608 Jan  7 12:02 /tmp --->

$ ls -ld /tmp /tnt 2>&1 | sed 's/^.*$/<-- & --->/'
<-- ls: cannot access /tnt: No such file or directory --->
<-- drwxrwxrwt 118 root root 196608 Jan  7 12:02 /tmp --->

$ ls -ld /tmp /tnt >/dev/null | sed 's/^.*$/<-- & --->/'
ls: cannot access /tnt: No such file or directory

$ ls -ld /tmp /tnt >/dev/null 2>&1 | sed 's/^.*$/<-- & --->/'

$ ls -ld /tmp /tnt 2>&1 >/dev/null | sed 's/^.*$/<-- & --->/'
<-- ls: cannot access /tnt: No such file or directory --->

Zauważ, że ostatnia linia poleceń w tym akapicie jest dokładnie taka sama jak w poprzednim akapicie, gdzie napisałem wydaje się nie być oczekiwanym zachowaniem (więc może to być nawet oczekiwane zachowanie).

Cóż, jest trochę sztuczki o przekierowaniach, dla wykonywanie różnych operacji na obu wyjściach :

$ ( ls -ld /tmp /tnt | sed 's/^/O: /' >&9 ) 9>&2  2>&1  | sed 's/^/E: /'
O: drwxrwxrwt 118 root root 196608 Jan  7 12:13 /tmp
E: ls: cannot access /tnt: No such file or directory

Nota: &9 deskryptor powstałby spontanicznie z powodu ) 9>&2.

Dodatek: nota! Z nową wersją bash (>4.0) istnieje nowa funkcja i bardziej seksowna składnia do robienia tego typu rzeczy: {]}

$ ls -ld /tmp /tnt 2> >(sed 's/^/E: /') > >(sed 's/^/O: /')
O: drwxrwxrwt 17 root root 28672 Nov  5 23:00 /tmp
E: ls: cannot access /tnt: No such file or directory

I wreszcie dla takiego kaskadowego formatowania wyjściowego:

$ ((ls -ld /tmp /tnt |sed 's/^/O: /' >&9 ) 2>&1 |sed 's/^/E: /') 9>&1| cat -n
     1  O: drwxrwxrwt 118 root root 196608 Jan  7 12:29 /tmp
     2  E: ls: cannot access /tnt: No such file or directory

Dodatek: nota! ta sama Nowa składnia, w obu sposoby:

$ cat -n <(ls -ld /tmp /tnt 2> >(sed 's/^/E: /') > >(sed 's/^/O: /'))
     1  O: drwxrwxrwt 17 root root 28672 Nov  5 23:00 /tmp
     2  E: ls: cannot access /tnt: No such file or directory

Gdzie STDOUT przechodzi przez określony filtr, STDERR do innego i ostatecznie oba połączone wyjścia przechodzą przez trzeci filtr poleceń.

3-słowo o opcji noclobber i składni >|

Czyli o nadpisaniu :

Podczas gdy set -o noclobber poinstruuj Basha, aby nie nadpisywał żadnego istniejącego pliku, składnia >| pozwala przejść przez to ograniczenie:

$ testfile=$(mktemp /tmp/testNoClobberDate-XXXXXX)

$ date > $testfile ; cat $testfile
Mon Jan  7 13:18:15 CET 2013

$ date > $testfile ; cat $testfile
Mon Jan  7 13:18:19 CET 2013

$ date > $testfile ; cat $testfile
Mon Jan  7 13:18:21 CET 2013

Plik jest nadpisywany za każdym razem, dobrze teraz:

$ set -o noclobber

$ date > $testfile ; cat $testfile
bash: /tmp/testNoClobberDate-WW1xi9: cannot overwrite existing file
Mon Jan  7 13:18:21 CET 2013

$ date > $testfile ; cat $testfile
bash: /tmp/testNoClobberDate-WW1xi9: cannot overwrite existing file
Mon Jan  7 13:18:21 CET 2013

Przejść przez >|:

$ date >| $testfile ; cat $testfile
Mon Jan  7 13:18:58 CET 2013

$ date >| $testfile ; cat $testfile
Mon Jan  7 13:19:01 CET 2013

Wyłączanie tej opcji i / lub zapytanie, czy już ustawiona.

$ set -o | grep noclobber
noclobber           on

$ set +o noclobber

$ set -o | grep noclobber
noclobber           off

$ date > $testfile ; cat $testfile
Mon Jan  7 13:24:27 CET 2013

$ rm $testfile

4 - ostatnia sztuczka i nie tylko...

Dla przekierowania oba wyjścia Z podanego polecenia widzimy, że prawidłowa składnia może być:

$ ls -ld /tmp /tnt >/dev/null 2>&1

W tym przypadku specjalnym istnieje składnia skrótu: &>... lub >&

$ ls -ld /tmp /tnt &>/dev/null

$ ls -ld /tmp /tnt >&/dev/null

Nota: jeśli 2>&1 exist, 1>&2 jest poprawną składnią też:

$ ls -ld /tmp /tnt 2>/dev/null 1>&2

4b - teraz pozwolę ci pomyśleć o:

$ ls -ld /tmp /tnt 2>&1 1>&2  | sed -e s/^/++/
++/bin/ls: cannot access /tnt: No such file or directory
++drwxrwxrwt 193 root root 196608 Feb  9 11:08 /tmp/

$ ls -ld /tmp /tnt 1>&2 2>&1  | sed -e s/^/++/
/bin/ls: cannot access /tnt: No such file or directory
drwxrwxrwt 193 root root 196608 Feb  9 11:08 /tmp/

4c - jeśli jesteś zainteresowany więcej informacji

Możesz przeczytać piękną instrukcję, uderzając:

man -Len -Pless\ +/^REDIRECTION bash

In abash console; -)

 264
Author: F. Hauri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 20:41:51

Liczby odnoszą się do deskryptorów plików (fd).

  • Zero to stdin
  • jeden jest stdout
  • dwa to stderr

2>&1 przekierowuje fd 2 na 1.

To działa dla dowolnej liczby deskryptorów plików, jeśli program ich używa.

Możesz spojrzeć na /usr/include/unistd.h jeśli o nich zapomnisz:

/* Standard file descriptors.  */
#define STDIN_FILENO    0   /* Standard input.  */
#define STDOUT_FILENO   1   /* Standard output.  */
#define STDERR_FILENO   2   /* Standard error output.  */

To powiedziawszy napisałem narzędzia C, które używają niestandardowych deskryptorów plików do niestandardowego logowania, więc nie widzisz go, chyba że przekierujesz go do pliku lub coś.

 71
Author: Colin Burnett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 01:25:12

Znalazłem ten genialny post na przekierowaniu: Wszystko o przekierowaniach

Przekierowanie zarówno standardowego wyjścia, jak i standardowego błędu do pliku

$ polecenie & > Plik

Ten jednowierszowy używa operatora &> do przekierowania obu strumieni wyjściowych - stdout i stderr - z polecenia do pliku. Jest to skrót Bash do szybkiego przekierowywania obu strumieni do tego samego miejsca docelowego.

Oto jak wygląda tabela deskryptorów plików po tym jak Bash przekierował oba strumienie:

Tutaj wpisz opis obrazka

Jak widzisz, zarówno stdout, jak i stderr wskazują teraz na file. Więc wszystko napisane na stdout i stderr zostaje zapisane na file.

Istnieje kilka sposobów przekierowania obu strumieni do tego samego miejsca docelowego. Możesz przekierować każdy strumień jeden po drugim:

$ polecenie >Plik 2 > &1

Jest to znacznie bardziej powszechny sposób przekierowania obu strumieni do pliku. Pierwszy stdout jest przekierowywany na plik, a następnie stderr jest duplikowany, aby był taki sam jak stdout. Więc oba strumienie kończą się wskazaniem na file.

Gdy Bash widzi kilka przekierowań, przetwarza je od lewej do prawej. Przejdźmy przez kroki i zobaczmy, jak to się stanie. Przed uruchomieniem jakichkolwiek poleceń tabela deskryptorów plików Basha wygląda następująco:

Tutaj wpisz opis obrazka

Teraz Bash przetwarza pierwsze przekierowanie >plik. Widzieliśmy to wcześniej i to sprawia, że stdout punkt do plik:

Tutaj wpisz opis obrazka

Następny Bash widzi drugie przekierowanie 2>&1. Nie widzieliśmy wcześniej tego przekierowania. Ten duplikuje deskryptor pliku 2 jako kopię deskryptora pliku 1 i otrzymujemy:

Tutaj wpisz opis obrazka

Oba strumienie zostały przekierowane do pliku.

Jednak uważaj tutaj! Pisanie

Polecenie > Plik 2 > &1

To nie to samo co pisanie:

$ polecenie 2 > & 1 > plik

The kolejność przekierowań ma znaczenie w Bash! Polecenie to przekierowuje tylko standardowe wyjście do pliku. Stderr nadal będzie drukować na terminalu. Aby zrozumieć, dlaczego tak się dzieje, przejdźmy przez kolejne kroki. Przed uruchomieniem polecenia tabela deskryptora pliku wygląda następująco:

Tutaj wpisz opis obrazka

Teraz Bash przetwarza przekierowania od lewej do prawej. Najpierw widzi 2 > & 1, więc duplikuje stderr na stdout. Tabela deskryptorów plików staje się:

Tutaj wpisz opis obrazka

Teraz Bash widzi drugie przekierowanie, >file i przekierowuje stdout do pliku:

Tutaj wpisz opis obrazka

Widzisz, co się tu dzieje? Stdout wskazuje teraz na plik, ale stderr nadal wskazuje na terminal! Wszystko, co zostanie zapisane na stderr, zostanie wydrukowane na ekranie! Więc bądź bardzo, bardzo ostrożny z kolejnością przekierowań!

Zauważ również, że w Bash, pisząc

$ polecenie & > plik

Jest dokładnie takie samo jak:

$ polecenie > & Plik

 53
Author: Deen John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 03:43:35

Ta konstrukcja wysyła standardowy strumień błędów (stderr) do bieżącej lokalizacji standardowego wyjścia (stdout) - ta kwestia walutowa wydaje się być zaniedbywana przez inne odpowiedzi.

Za pomocą tej metody można przekierować dowolny uchwyt wyjściowy na inny, ale najczęściej jest on używany do przesyłania strumieni stdout i stderr do jednego strumienia do przetwarzania.

Niektóre przykłady to:

# Look for ERROR string in both stdout and stderr.
foo 2>&1 | grep ERROR

# Run the less pager without stderr screwing up the output.
foo 2>&1 | less

# Send stdout/err to file (with append) and terminal.
foo 2>&1 |tee /dev/tty >>outfile

# Send stderr to normal location and stdout to file.
foo >outfile1 2>&1 >outfile2

Zauważ, że ten ostatni będzie, a nie kierować stderr do outfile2 - przekierowuje go do tego, co stdout było, gdy argument został napotkany (outfile1) i następnie przekierowuje stdout do outfile2.

To pozwala na dość wyrafinowane sztuczki.

 50
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 08:39:06

2>&1 jest konstrukcją powłoki POSIX. Jest to jeden z elementów, który może być użyty w grze.]}


2: "błąd standardowy " deskryptor pliku wyjściowego.

>&: Duplikuj deskryptor pliku wyjściowego operator (wariant przekierowanie wyjścia operator >). Po podaniu [x]>&[y], deskryptor pliku oznaczony przez x jest kopią deskryptora pliku wyjściowego y.

1 "standardowe wyjście " plik wyjściowy deskryptor.

Wyrażenie 2>&1 kopiuje deskryptor pliku 1 do lokalizacji 2, więc każde wyjście zapisane do 2 ("błąd standardowy") w środowisku wykonawczym trafia do tego samego pliku pierwotnie opisanego przez 1 ("standardowe wyjście").


Dalsze wyjaśnienie:

Deskryptor pliku: "unikalna dla każdego procesu, nieujemna liczba całkowita używana do identyfikacji otwartego pliku w celu uzyskania dostępu do pliku."

Standardowe wyjście / błąd : zobacz następująca uwaga w sekcji przekierowanie w dokumentacji powłoki:

Otwarte pliki są reprezentowane przez liczby dziesiętne zaczynające się od zera. Największą możliwą wartością jest zdefiniowana implementacja; jednak wszystkie implementacje powinny wspierać co najmniej 0 do 9, włącznie, do wykorzystania przez aplikację. Liczby te nazywane są "deskryptorami plików". Wartości 0, 1 i 2 mają szczególne znaczenie i konwencjonalne zastosowania i są implikowane przez pewne operacje przekierowania; są określane odpowiednio jako standardowe wejście, standardowe wyjście i standardowy błąd. Programy zwykle pobierają dane ze standardowego wejścia i zapisują dane wyjściowe na standardowym wyjściu. Komunikaty o błędach są zwykle zapisywane na podstawie błędu standardowego. Operatory przekierowania mogą być poprzedzone jedną lub kilkoma cyframi (bez znaków interwencyjnych), aby wyznaczyć numer deskryptora pliku.

 14
Author: wjordan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-25 06:43:43

Aby odpowiedzieć na twoje pytanie: pobiera każde wyjście błędu (normalnie wysyłane na stderr) i zapisuje je na standardowe wyjście (stdout).

Jest to pomocne na przykład przy 'more', gdy potrzebujesz stronicowania dla wszystkich danych wyjściowych. Niektóre programy, takie jak drukowanie informacji o użytkowaniu na stderr.

To help you remember

  • 1 = standardowe wyjście (gdzie programy wyświetlają normalne wyjście)
  • 2 = błąd standardowy (gdzie programy wypisują błędy)

"2>&1" po prostu wskazuje wszystko wysłane do stderr, zamiast stdout.

Polecam również przeczytanie tego postu o błędnym przekierowaniu, gdzie ten temat jest szczegółowo omówiony.

 12
Author: Andrioid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-03 23:24:58

2 jest standardowym błędem konsoli.

1 jest standardowym wyjściem konsoli.

Jest to standardowy Unix, a Windows również postępuje zgodnie z POSIX.

Np. gdy biegniesz

perl test.pl 2>&1

Standardowy błąd jest przekierowywany na standardowe wyjście, więc możesz zobaczyć oba wyjścia razem:

perl test.pl > debug.log 2>&1

Po wykonaniu, możesz zobaczyć wszystkie dane wyjściowe, w tym błędy, w debugowaniu.log.

perl test.pl 1>out.log 2>err.log

Wtedy standardowe wyjście przechodzi na wyjście.log, i standardowy błąd do błędu.log.

I sugeruję, abyś spróbował je zrozumieć.

 12
Author: Marcus Thornton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 03:14:53

Z punktu widzenia programisty oznacza to dokładnie to:

dup2(1, 2);

Zobacz stronę man .

Zrozumienie, że 2>&1 jest kopią wyjaśnia również dlaczego ...

command >file 2>&1

... to nie to samo co ...

command 2>&1 >file

Pierwszy wysyła oba strumienie do file, podczas gdy drugi wysyła błędy do stdout, a zwykłe wyjście do file.

 10
Author: ams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-03 10:20:34

Ludzie, pamiętajcie zawsze podpowiedź paxdiablo o bieżącej lokalizacji celu przekierowania... To jest Ważne.

Mój osobisty mnemonic dla 2>&1 operatora jest taki:

  • pomyśl o & jako o znaczeniu 'and' lub 'add' (znak jest amperem-oraz, prawda?)
  • więc staje się: 'redirect 2 (stderr) to where 1 (stdout) already/currently is and add both streams " .

Ten sam mnemonic działa również dla innych często używanych przekierowań, 1>&2:

  • pomyśl o & znaczeniu and lub add... (masz pomysł o ampersand, tak?)
  • więc staje się: 'redirect 1 (stdout) to where 2 (stderr) already/currently is and add both streams'.

I zawsze pamiętaj: musisz czytać łańcuchy przekierowań "od końca", od prawej do lewej (Nie od lewej do prawej).

 4
Author: Kurt Pfeifle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-01 10:47:27

Pod warunkiem, że /foo nie istnieje w Twoim systemie i /tmp Nie...

$ ls -l /tmp /foo

Wyświetli zawartość /tmp i wyświetli komunikat o błędzie dla /foo

$ ls -l /tmp /foo > /dev/null

Wyśle zawartość /tmp do /dev/null i wyświetli komunikat o błędzie dla /foo

$ ls -l /tmp /foo 1> /dev/null

Zrobi dokładnie to samo (zwróć uwagę na 1)

$ ls -l /tmp /foo 2> /dev/null

Wydrukuje zawartość /tmp i wyśle komunikat o błędzie do /dev/null

$ ls -l /tmp /foo 1> /dev/null 2> /dev/null

Wyśle zarówno listę, jak i Komunikat o błędzie do /dev/null

$ ls -l /tmp /foo > /dev/null 2> &1

Jest skrótem

 4
Author: Matijs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-01 20:58:04

To jest tak jak przekazywanie błędu do stdout lub terminala.

Czyli cmd nie jest poleceniem:

$cmd 2>filename
cat filename

command not found

Błąd jest wysyłany do pliku w następujący sposób:

2>&1

Standardowy błąd jest wysyłany do terminala.

 4
Author: Kalanidhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 03:17:17

Przekierowanie Wejścia

Przekierowanie wejścia powoduje, że plik, którego nazwa wynik rozszerzenia programu word, który ma być otwarty do odczytu w pliku deskryptor n, lub standardowe wejście (deskryptor pliku 0), jeśli n jest nie określono.

Ogólny format przekierowania danych wejściowych to:

[n]<word

Przekierowanie Wyjścia

Przekierowanie wyjścia powoduje, że plik, którego nazwa wynika z rozszerzenia programu word, który ma być otwarty do pisania na plik deskryptor n, lub standardowe wyjście (deskryptor pliku 1), jeśli n nie określono. Jeśli plik nie istnieje, jest tworzony; jeśli istnieje, jest obcięty do rozmiaru zerowego.

Ogólny format przekierowania wyjściowego to:

[n]>word

Przenoszenie Deskryptorów Plików

Operator przekierowania,

[n]<&digit-

Przenosi cyfrę deskryptora pliku na deskryptor pliku n, lub standardowe wejście (deskryptor pliku 0), jeśli nie podano N. cyfra jest zamknięta po zdublowaniu do n.

Podobnie operator przekierowania

[n]>&digit-

Przenosi cyfrę deskryptora pliku na deskryptor pliku n, lub standardowe wyjście (deskryptor pliku 1), jeśli nie podano n.

Ref:

man bash

Wpisz /^REDIRECT, aby zlokalizować sekcję redirection i dowiedzieć się więcej...

Wersja online jest tutaj: 3.6 przekierowania

PS:

Przez wiele czasu, man było potężnym narzędziem do nauki Linux.

 2
Author: yurenchen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 03:25:15

0 dla wejścia, 1 dla stdout i 2 dla stderr.

Jedna Końcówka : somecmd >1.txt 2>&1 jest poprawne, podczas gdy {[1] } jest całkowicie błędne bez efektu!

 0
Author: fzyzcjy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 09:46:19