Linux Tutorial Teil 4 - erstes praktisches Bash-Script
Indholdsfortegnelse:
- Sådan bruges Linux
xargs
kommando - Sådan vises kommandoen og spørg brugeren
- Sådan begrænses antallet af argumenter
- Sådan køres flere kommandoer
- Sådan specificeres en afgrænser
- Sådan læses varer fra fil
- Brug af
xargs
medfind
- Brug af xargs til at trimme Whitespace-tegn
- Konklusion
xargs
værktøjet giver dig mulighed for at opbygge og udføre kommandoer fra standardinput. Det bruges normalt i kombination med andre kommandoer gennem rørsystemer.
Med
xargs
kan du levere standardinput som argument til kommandolinjeværktøjer som
mkdir
og
rm
.
I denne tutorial dækker vi det grundlæggende ved brug af
xargs
kommandoen.
Sådan bruges Linux
xargs
kommando
xargs
læser argumenter fra standardindgangen, adskilt af blanke mellemrum eller nylinjer og udfører den specificerede kommando ved hjælp af input som kommandos argumenter. Hvis der ikke findes nogen kommando, er standard
/bin/echo
.
Syntaks for kommandoen
xargs
er som følger:
xargs]
Det mest basale eksempel på at bruge
xargs
ville være at passere flere strenge adskilt med hvidafstand ved hjælp af et rør til
xargs
og køre en kommando, der vil bruge disse strenge som argumenter.
echo "file1 file2 file3" | xargs touch
I eksemplet ovenfor
xargs
vi standardindgangen til
xargs
, og
touch
kommandoen køres for hvert argument og skaber tre filer. Dette er det samme som hvis du ville køre:
Sådan vises kommandoen og spørg brugeren
For at udskrive kommandoen på terminalen, før den udføres, skal du bruge indstillingen
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Skriv
y
eller
Y
at bekræfte og køre kommandoen:
touch file1 file2 file3 ?…y
Denne indstilling er nyttig, når du udfører destruktive kommandoer.
Sådan begrænses antallet af argumenter
Som standard bestemmes antallet af argumenter, der sendes til kommandoen, af systemets grænse.
Indstillingen
-n
(
--max-args
) specificerer antallet af argumenter, der skal overføres til den givne kommando.
xargs
kører den angivne kommando så mange gange som nødvendigt, indtil alle argumenter er opbrugt.
I det følgende eksempel er antallet af argumenter, der læses fra standardindgangen, begrænset til 1.
echo "file1 file2 file3" | xargs -n 1 -t touch
Som du kan se fra den verbose output nedenfor, udføres touch-kommandoen separat for hvert argument:
touch file1 touch file2 touch file3
Sådan køres flere kommandoer
Hvis du vil køre flere kommandoer med
xargs
, skal du bruge indstillingen
-I
. Det fungerer ved at definere en
replace-str
efter indstillingen
-I
, og alle forekomster af
replace-str
erstattes med argumentet, der er sendt til xargs.
Følgende
xargs
eksempel kører to kommandoer, først opretter de filerne ved hjælp af
touch
, og derefter viser det filerne med kommandoen
ls
:
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3
Et almindeligt valg for
replace-str
er
%
. Du kan dog bruge en anden pladsholder, for eksempel
ARGS
:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
Sådan specificeres en afgrænser
Brug indstillingen
-d
(
--delimiter
) til at indstille en brugerdefineret afgrænsning, der enten kan være et enkelt tegn eller en flugt-sekvens, der starter med
\
.
Følgende eksempel bruger vi
;
som afgrænser:
echo "file1;file2;file3" | xargs -d ; -t touch
Sådan læses varer fra fil
Kommandoen xargs kan også læse emner fra en fil i stedet for standardindtastning. Det gør du ved at bruge indstillingen
-a
(
--arg-file
) efterfulgt af filnavnet.
I det følgende eksempel vil
xargs
kommandoen læse
ips.txt
filen og pinge hver IP-adresse.
8.8.8.8 1.1.1.1
Vi bruger også indstillingen
-L 1
, der instruerer
xargs
at læse en linje ad gangen. Hvis denne mulighed er udeladt, vil
xargs
videresende alle IP'er til en enkelt
ping
kommando.
xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms
Brug af
xargs
med
find
xargs
bruges ofte i kombination med
find
kommandoen. Du kan bruge
find
til at søge efter specifikke filer og derefter bruge
xargs
til at udføre handlinger på disse filer.
For at undgå problemer med filnavne, der indeholder nye linjer eller andre specialtegn, skal du altid bruge funktionen find
-print0
, der får
find
til at udskrive det fulde filnavn efterfulgt af et nulltegn. Dette output kan tolkes korrekt af
xargs
ved hjælp af indstillingen
-0
, (-
--null
).
I det følgende eksempel udskriver
find
de fulde navne på alle filer inde i
/var/www/.cache
og
xargs
videregiver filstierne til kommandoen
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Brug af xargs til at trimme Whitespace-tegn
xargs
kan også bruges som et værktøj til at fjerne mellemrum fra begge sider af en given streng. Rør blot strengen til
xargs
kommandoen, så gør den trimning:
echo " Long line " | xargs
Long line
Dette kan være nyttigt, når man sammenligner strenge i shell-scripts.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi
Strings are not equal. Strings are equal.
Konklusion
xargs
er et kommandolinjeværktøj på Linux, der giver dig mulighed for at opbygge og udføre kommandoer.
For mere detaljeret information om hver
xargs
indstilling skal du læse siden xargs-man.
Fedora-projektet lancerede en beta af den næste version af sit gratis Linux-OS med nye sikkerheds-, desktop- og udviklerfunktioner, der giver et glimt af den retning, Red Hat kunne tage med sin Linux-distribution.

Fedora 11 beta er tilgængelig online til download fra projektets hjemmeside. Projektet beskriver nogle af højdepunkterne i udgivelsen i et blogindlæg. Den endelige udgivelse af Fedora 11, den kode-benævnt Leonidas, er planlagt til at være tilgængelig i slutningen af maj.
Red Hat er ved at slippe støtte til Intels itaniumprocessor i Enterprise Linux 6, den næste store udgave af operativsystemet, siger firmaet i en erklæring om søndagen. økonomisk sans for Red Hat, ifølge Chris Ingle, forskningsdirektør for IDC's European Systems Group. Antallet af Itanium-baserede servere, der sælges, er sandsynligvis ikke høj nok til, at Red Hat kan retfærdiggøre at bruge sine ressourcer på at understøtte en version af Enterprise Linux til denne processor. I stedet vil det fokus

Red Hat tilbyder i dag support til version 5 på systemer baseret på IBM Power, System z og S / 390 processorarkitekturer.
Oktober måned er måske mere eller mindre domineret af Ubuntu Linux for de af os, der forudser den seneste Quantal Quetzal-udgivelse, men i denne uge lavede Linux Mint-projektet en spændende meddelelse om

Specifikt meddelte Linux Mint-projektet tirsdag, at det nu har en online butik komplet med flere pc'er, der tilbyder Linux Mint forudindlæst.