Domanda bandit6, operatori logici curiosi

angelcarl251

Utente Iron
4 Giugno 2022
5
2
0
5
Buongiorno a tutti,
sono al bantit6, e ho trovato la soluzione in internet,
ma come sempre preferisco capire e non copiare,
aiutatemi e ditemi se come lo leggo è giusto

find / -user bandit7 -group bandit6 -size 33c 2>&1 | grep -F -v Permission | grep -F -v directory
tutto mi è chiaro tranne questa parte 2>&1 |
che sono and e or li riconosco, ma il 2 e 1 non riesco a capire a cosa servono
grazie anticipatamente
 
Nella gestione degli stream IO dei processi ci sono dei file descriptor: 1 è lo stream di stdout (output normale), 2 è quello di stderr (usato per messaggi di errore). 2>&1 serve a redirigere l'output di stderr su stdout in modo da avere tutto l'output in un solo stream (in 1, quello di stdout), la & serve a esplicitare che si sta facendo la redirection su uno stream e non su un file chiamato "1" nella cartella corrente.

Nella pipeline ha questa utilità: senza redirection se il comando find scrivesse qualcosa su stderr, verrebbe printata in console di default (o ovunque punti stderr) e quel testo non verrebbe passato al prossimo comando (grep) che invece riceverebbe solo ciò che si trova in stdout.
 
  • Mi piace
  • Grazie
Reazioni: 0xbro e DidyMond
Giusto per completezza da quanto detto da JunkCoder, il simbolo " | ", in questo caso, non rappresenta l'operatore or, ma è il simbolo "pipe" e serve per connettere fra loro due o più comandi. In pratica viene preso l'output generato dal comando precedente e utilizzato come input per il comando successivo.
 
  • Mi piace
Reazioni: JunkCoder e 0xbro