Bash
Kedja av kommandon och operationer
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