Sostituzione del processo una forma di comunicazione tra processi che consente all'input o all'output di un comando di apparire come un file (come: `<(cmd)` o `> (cmd)`).
Mi chiedevo come capire quanto segue: Il piping dello stdout di un comando nello stdin di un altro è una tecnica potente. Ma cosa succede se è necessario eseguire il pipe dello stdout di più comandi? È qui che entra in gioco la sostituzione del processo. In altre parole, la …
Sto cercando di capire le pipe nominate nel contesto di questo esempio particolare. Digito <(ls -l)nel mio terminale e ottenere l'output come, bash: /dev/fd/63: Permission denied. Se digito cat <(ls -l), potrei vedere il contenuto della directory. Se lo sostituisco catcon echo, penso di ottenere il nome del terminale (o …
Oggi sto imparando qualcosa sul FIFO con questo articolo: Introduzione ai Named Pipes , che menziona cat <(ls -l). Ho fatto alcuni esperimenti usando sort < (ls -l), che fa apparire un errore: -bash: syntax error near unexpected token `('` Poi ho scoperto di aver erroneamente aggiunto uno spazio aggiuntivo …
A volte la sostituzione del processo non funzionerà come previsto. Ecco un esempio: Ingresso: gcc <(echo 'int main(){return 0;}') Produzione: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Ingresso: Ma funziona come previsto se utilizzato con un comando diverso: grep main <(echo 'int main(){return 0;}') …
Alcune shell, come bash, supportano la sostituzione del processo, che è un modo per presentare l'output del processo come file, come questo: $ diff <(sort file1) <(sort file2) Tuttavia, questo costrutto non è POSIX e, quindi, non portatile. Come si può ottenere la sostituzione del processo in modo compatibile con …
Voglio che i miei script di shell falliscano ogni volta che un comando eseguito con loro fallisce. In genere lo faccio con: set -e set -o pipefail (in genere aggiungo set -uanche io ) Il fatto è che nessuna delle precedenti funziona con la sostituzione del processo. Questo codice stampa …
Mi aspettavo cat <(cat)e cat | catfare la stessa cosa: copiare le righe da stdin a stdout. La mia comprensione era che entrambi avrebbero eseguito a catin una subshell, reindirizzando lo catstdout della subshell a una pipe denominata temporanea e quindi eseguendo un'altra catnella shell corrente con il suo stdin …
In bash, posso usare Process Substitution e trattare l'output di un processo come se fosse un file salvato su disco: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] sfortunatamente, Sostituzione processo non è supportata in dash. Quale sarebbe il …
Il echo one; echo two > >(cat); echo three; il comando fornisce un output imprevisto. Ho letto questo: come viene implementata la sostituzione di processo in bash? e molti altri articoli sulla sostituzione dei processi su Internet, ma non capisco perché si comporti in questo modo. Uscita prevista: one two …
Sto cercando di eseguire grep su un elenco di alcune centinaia di file: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Tuttavia, anche se sto cercando una stringa che so essere trovata nei file, quanto segue non cerca i file: $ grep -i 'foo' <(cat files.txt) $ grep -i …
Nella versione 4.2.47 (1) di Bash, quando provo a catenare il testo formattato che proviene da un documento HERE in questo modo: cat <(fmt --width=10 <<FOOBAR (I want the surrounding parentheses to be part of the HERE-document) (Even the preceding unbalanced parenthesis should be part of it. FOOBAR ) # …
La seguente riga è ovvia: echo "bla" | foo | bar Ma quelli sotto fanno lo stesso? echo "bla" | bar <(foo) echo "bla" | bar < <(foo) Quale dei fooe barleggi "bla" di stdin e perché? Voglio dire, ovviamente, posso solo codificarlo e verificarlo, ma non sono sicuro che …
Ho uno script che analizza i nomi dei file in un array usando il seguente metodo tratto da una domanda e risposta su SO : unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done < <(find "$@" -type f -name '*.txt' -print0) Funziona alla grande e …
Non ho molta esperienza nell'uso di tee, quindi spero che questo non sia molto semplice. Dopo aver visto una delle risposte a questa domanda, mi sono imbattuto in uno strano comportamento tee. Per poter visualizzare la prima riga e una riga trovata, posso usare questo: ps aux | tee >(head …
Stavo facendo ricerche sull'altra domanda , quando mi sono reso conto che non capisco cosa sta succedendo sotto il cofano, quali sono questi /dev/fd/*file e in che modo i processi figlio possono aprirli.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.