często widzę poleceń takich jak:Kiedy mogę użyć | i w Bash? Czy można go używać w innych powłokach?
command1 |& command2
Więc co robimy tutaj jest przekierować stderr do standardowego wejścia, tak że oboje „stają się” stdin do następnego elementu w rurze.
Albo lepiej opisane w Bash Reference manual -> Pipelines:
Rurociąg jest sekwencją prostych poleceń rozdzielonych jednym z operatorów kontroli „|” lub „| & ".
...
Jeśli
|&
służy, błąd standardowy Command1 jest, oprócz standardowe wyjście , jest podłączone do standardowego wejścia command2 przez rurę ; jest skrótem dla2>&1 |
. To niejawne przekierowanie standardowego błędu na standardowym wyjściu jest wykonywane po każdym przekierowaniu podanym w poleceniu przez .
Zastanawiam się jednak: czy ta składnia jest użyteczna we wszystkich wersjach Bash? To znaczy, czy zawsze jest wymienny z 2>&1 |
? Czy można go również użyć w dowolnej innej powłoce (ksh, csh ...)?
Twój tytuł i pytanie, które w końcu poprosił mnie wydaje się do dwóch różnych pytań TBH. Proponuję edytować tytuł – MohitC
@MohitChandak masz rację. Zacząłem od tytułu, a następnie zbadałem temat. Zanim udało mi się rozwiązać pewne kwestie, pojawiły się inne pytania. Dokonam edycji, dzięki. – fedorqui
jeśli chcesz wiedzieć, co jest możliwe do użycia w innych powłokach, lepiej wypróbuj tryb posix, ponieważ standardowy to jedyny sposób na zagwarantowanie, że jedna rzecz na pewno zadziała w innym systemie. – HuStmpHrrr