From d8ddd416aff65dd8a92b9b852998e722728d5c19 Mon Sep 17 00:00:00 2001 From: piccihud Date: Sat, 9 Nov 2024 21:10:39 +0100 Subject: [PATCH] pipe e command substitution --- 101/017_pipe.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/101/017_pipe.md b/101/017_pipe.md index e69de29..7f53f70 100644 --- a/101/017_pipe.md +++ b/101/017_pipe.md @@ -0,0 +1,46 @@ +## Pipe + +Diversi comandi possono essere concatenati insieme per produrre un output combinato. Il carattere della *pipe* `|` puo' essere utilizzato per creare una pipeline che collega lo *stout* di un programma con lo *stdin* di un altro programma, da sinistra verso destra. + +```bash +grep "model name" /proc/cpuinfo | uniq +model name : AMD Ryzen 3 3200G with Radeon Vega Graphics +``` + +## command substitution + +Inserendo un comando all'interno degli ``, bash lo sostituisce col suo *stdout*. Ad esempio: + +```bash +mkdir `date +%Y-%m-%d` + +ls -lh +totale 148K +drwxrwxr-x 2 dado dado 4,0K 9 nov 21.00 2024-11-09 +``` + +Un risultato identico si ottiene usando `$()`: + +```bash +mkdir $(date +%Y-%m-%d) + +ls -lh +totale 148K +drwxrwxr-x 2 dado dado 4,0K 9 nov 21.02 2024-11-09 +``` + +Per memorizzare lo *stdout* di un comando come *variabile*: + +```bash +# Creazione di una variabile +OS="uname -a" +echo $OS +uname -a + +# Assegnazione dello stdout a una variabile +OS=`uname -a` +echo $OS +Linux pc 6.11.6-amd64 Debian 6.11.6-1 (2024-11-04) x86_64 GNU/Linux +``` + +Un altro metodo per usare lo *stdout* di un programma come argomento di un altro programma e' quello di utilizzare `xargs`. \ No newline at end of file