kzen.dev
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
Tristan Havelick
Tristan Havelick
Question

W muszli, co oznacza "2>&1"?

W powłoce uniksowej, jeśli chcę połączyć stderr i stdout w strumień stdout do dalszej manipulacji, mogę dodać poniższe na końcu mojej komendy:

2>&1

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

g++ lots_of_errors 2>&1 | head

dzięki czemu zobaczę tylko kilka pierwszych błędów.

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

Czy ktoś może to rozbić i wyjaśnić znak po znaku co oznacza 2>&1?

2112 2009-05-03T22:57:00+00:00 3
 Ricardo
Ricardo
Edytowane pytanie 9. maja 2018 в 6:51
Programowanie
redirect
shell
unix
bash
Popular videos
Scary Movie 1-Brenda
Scary Movie 1-Brenda
10 lat temu
Dumb & Dumber (4/6) Movie CLIP - The Toilet Doesn't Flush (1994) HD
Dumb & Dumber (4/6) Movie CLIP - The Toilet Doesn't Flush (1994) HD
12 lat temu
Pitbull Opałka Marcin w więzieniu najlepsze sceny. Strachu najlepsze sceny. Polskie filmy.2021
Pitbull Opałka Marcin w więzieniu najlepsze sceny. Strachu najlepsze sceny. Polskie filmy.2021
2 lata temu
10 dziewczyn, które utknęły w dziwnych miejscach, cz. 2
10 dziewczyn, które utknęły w dziwnych miejscach, cz. 2
2 lata temu
ZŁAPANY NA KAMERZE! | I'm on observation duty #1
ZŁAPANY NA KAMERZE! | I'm on observation duty #1
2 lata temu
Gdy choroba wierci dziurę w brzuchu. Przetoki w NZJ.
Gdy choroba wierci dziurę w brzuchu. Przetoki w NZJ.
2 lata temu
#16 Typowe usterki Fiata Bravo 2 1.4 T-Jet 150 km
#16 Typowe usterki Fiata Bravo 2 1.4 T-Jet 150 km
1 rok temu
Renault Trafic 1.9 DCi regeneracja turbo
Renault Trafic 1.9 DCi regeneracja turbo
2 lata temu
Naga Broń - Jesteś Otoczony
Naga Broń - Jesteś Otoczony
12 lat temu
Jak wykręcić urwaną śrubę bez konieczności spawania? | Wskazówki od AUTODOC
Jak wykręcić urwaną śrubę bez konieczności spawania? | Wskazówki od AUTODOC
3 lata temu
Zagrajmy w Jet Kave Adventure (PL) Poziom 2-1 - Muszle - Znajdźka - bez straty energii [100%]
Zagrajmy w Jet Kave Adventure (PL) Poziom 2-1 - Muszle - Znajdźka - bez straty energii [100%]
2 lata temu
JEDZENIE TERAZ vs JEDZENIE PO ROKU 2 (jeszcze bardziej niesamowite!)
JEDZENIE TERAZ vs JEDZENIE PO ROKU 2 (jeszcze bardziej niesamowite!)
3 lata temu
10 osób, które wzięły instrukcje zbyt dosłownie, cz. 2
10 osób, które wzięły instrukcje zbyt dosłownie, cz. 2
3 lata temu
24 godziny bez PAPIEROSA - Wyzwanie od Kruszwila | KAMERZYSTA
24 godziny bez PAPIEROSA - Wyzwanie od Kruszwila | KAMERZYSTA
4 lata temu
Secrets To What Women Want, HONEST ANSWERS! 💥How To Text Girls 💥My First Time 💥 Approach Women 💥
Secrets To What Women Want, HONEST ANSWERS! 💥How To Text Girls 💥My First Time 💥 Approach Women 💥
1 rok temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Ayman Hourieh
Ayman Hourieh
3. maja 2009 в 11:04
2009-05-03T23:04:53+00:00
Więcej
Źródło
Edytuj
#9028602

Deskryptor pliku 1 to standardowe wyjście (stdout).
Deskryptor pliku 2 to standardowy błąd (stderr).

Oto jeden ze sposobów zapamiętania tej konstrukcji (choć nie jest on całkowicie dokładny): na początku, 2>1 może wyglądać jak dobry sposób na przekierowanie stderr do stdout. Jednakże, w rzeczywistości będzie to interpretowane jako "przekieruj stderr do pliku o nazwie 1". & wskazuje, że to co następuje jest deskryptorem pliku, a nie jego nazwą. Tak więc konstrukcja staje się: 2>&1.

 Ricardo
Ricardo
Edytowana odpowiedź 9. maja 2018 в 8:18
2353
0
Artificial intelligence to parse product page
productapi.dev
 dbr
dbr
3. maja 2009 в 10:59
2009-05-03T22:59:33+00:00
Więcej
Źródło
Edytuj
#9028601
echo test > afile.txt

przekierowuje stdout do afile.txt. To jest to samo, co zrobienie

echo test 1> afile.txt

Aby przekierować stderr, wykonujesz:

echo test 2> afile.txt

>& jest składnią do przekierowania strumienia do innego deskryptora pliku - 0 to stdin, 1 to stdout, a 2 to stderr.

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

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

Lub odwrotnie:

echo test 2>&1

Tak więc, w skrócie... 2> przekierowuje stderr do (nieokreślonego) pliku, dołączenie &1 przekierowuje stderr na stdout.

Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 4. lipca 2018 в 8:36
582
0
Artificial intelligence to parse product page
productapi.dev
Colin Burnett
Colin Burnett
3. maja 2009 в 10:58
2009-05-03T22:58:41+00:00
Więcej
Źródło
Edytuj
#9028600

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

  • Zero to stdin.
  • Jeden to stdout.
  • Dwa to stderr.

2>&1 przekierowuje fd 2 na 1.

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

Możesz zajrzeć do /usr/include/unistd.h jeśli je zapomniałeś:

/* 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 dla niestandardowego rejestrowania, więc nie'widzisz go, chyba że przekierujesz go do pliku lub czegoś.

Rob Kielty
Rob Kielty
Edytowana odpowiedź 6. listopada 2012 в 1:25
79
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Анна Литвиненко
Zarejestrowany 1 dzień temu
2
Inessa bu
Zarejestrowany 1 miesiąc temu
3
Denis Babushkin
Zarejestrowany 1 miesiąc temu
4
asakuno asakuno
Zarejestrowany 1 miesiąc temu
5
aldo salerno
Zarejestrowany 1 miesiąc temu
Artificial intelligence to parse product page
productapi.dev
DA
DE
EL
ES
FR
ID
IT
JA
KO
LV
NL
NO
PL
PT
RU
SK
SL
TR
ZH
© kzen.dev 2023
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem