Sök…


Introduktion

Det finns några sätt att kedja kommandon tillsammans. Enkla som bara en; eller mer komplexa sådana som logiska kedjor som körs beroende på vissa förhållanden. Den tredje är rörkommandon, som effektivt överlämnar utdata till nästa kommando i kedjan.

Räknar ett textmönster i fall

Genom att använda ett rör gör utgången från ett kommando till ingången till nästa.

ls -1 | grep -c ".conf"

I detta fall används lup-kommandot som ingången till grep-kommandot. Resultatet blir antalet filer som innehåller ".conf" i deras namn.

Detta kan användas för att kontrollera kedjor för efterföljande kommandon så länge som det behövs:

ls -1 | grep ".conf" | grep -c .

överföra root cmd-utgång till användarfil

Ofta vill man visa resultatet av ett kommando som utförs av root till andra användare. Tee- kommandot gör det enkelt att skriva en fil med användarperm från ett kommando som körs som root:

su -c ifconfig | tee ~/results-of-ifconfig.txt

Endast ifconfig körs som root.

logisk kedja av kommandon med && och ||

&& kedjar två kommandon. Den andra körs bara om den första går ut med framgång. || kedjer två kommandon. Men den andra körs bara om den första går ut med misslyckande.

[ a = b  ] && echo "yes" || echo "no"

# if you want to run more commands within a logical chain, use curly braces
# which designate a block of commands 
# They do need a ; before closing bracket so bash can diffentiate from other uses
# of curly braces
[ a = b ] && { echo "let me see." 
               echo "hmmm, yes, i think it is true" ; } \
          || { echo "as i am in the negation i think " 
               echo "this is false. a is a not b."  ; }
# mind the use of line continuation sign \
# only needed to chain yes block with || ....

seriell kedja av kommandon med semikolon

En semikolon skiljer bara två kommandon.

echo "i am first" ; echo "i am second" ; echo " i am third"

kedja kommandon med |

Den | tar utgången från det vänstra kommandot och rör det som inmatning av det högra kommandot. Tänk på att detta görs i ett underskal. Därför kan du inte ställa in värden för vars för samtalsprocessen med ett rör.

find . -type f -a -iname '*.mp3'  | \
       while read filename; do
             mute --noise "$filename"
       done 


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow