[ Pobierz całość w formacie PDF ]

/passwd:
Rozdział 8. Debianowe porady 106
$ oldIFS="$IFS" # zapisuje starą wartość
$ IFS=":"
$ while read user password uid gid rest_of_line; do
if [ "$user" = "osamu" ]; then
echo "$user s ID is $uid"
fi
done
osamu s ID is 1001
$ IFS="$oldIFS" # przywraca starą wartość
(Jeśli chcesz użyć Awk do tego samego skorzystaj zFS= : by ustawić separator pól.)
IFS jest również używane przez powłokę do rozdzielania wyników dopełniania parametrów,
podmian poleceń i dopełniania arytmetycznego. To nie dotyczy wyrazów w podwójnym lub
pojedynczym cudzysłowiu. Domyślną wartością IFS jest kombinacja następujących znaków
, i .
Uważaj używając trików z IFS w powłoce. Dziwne rzeczy się mogą dziać kiedy powłoka
zinterpretuje część skryptu jako swoje wejście.
$ IFS=":," # użyj ":" i "," jako IFS
$ echo IFS=$IFS, IFS="$IFS" # echo jest wbudowane w Basha
IFS= , IFS=:,
$ date -R # zwykłe wyjście polecenia
Sat, 23 Aug 2003 08:30:15 +0200
$ echo $(date -R) # pod-powłoka --> wejście do głównej powłoki
Sat 23 Aug 2003 08 30 36 +0200
$ unset IFS # przywrócenie domyślnej wartości IFS
$ echo $(date -R)
Sat, 23 Aug 2003 08:30:50 +0200
8.6.17 Kawałki kodu przekierowywania poleceń
Poniższe skrypty wspólnie tworzą piękną całość jeśli są połączone potokiem (ang. pipe).
find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local"
# znajduje wszystkie pliki w /usr z wyłączeniem pewnych
plików
xargs -n 1 polecenie # uruchamia polecenia dla każdego z elementu ze standardow
xargs -n 1 echo | # dzieli elementy oddzielone białymi znakami na linie
xargs echo | # łączy wszystkie linie w jedną
grep -e wzorzec| # wyciąga linie zawierające dany wzorzec
cut -d: -f3 -| # wyciąga trzecie pole oddzielone znakiem : (np. plik passw
awk  { print $3 } | # wyciąga trzecie pole oddzielone białymi znakami
awk -F \t  { print $3 } | # wyciąga trzecie pole oddzielone tabulatorem
Rozdział 8. Debianowe porady 107
col -bx | # usuwa backspace i rozwija tabulacje na spacje
expand -| # rozwija tabulacje
sort -u| # sortuje i usuwa powtórzenia
tr  \n   | # usuwa znaki LF (wysuń wiersz)
tr  \r ''| # usuwa znaki CR (powrót karetki)
tr  A-Z  a-z | # przekształca wielkie litery w małe
sed  s/^/# / | # zmienia każdą linię na komentarz (zaczyna się od #)
sed  s/\.ext//g | # usuwa .ext
sed -n -e 2p| # wypisuje drugą linię
head -n 2 -| # wypiuje pierwsze 2 linie
tail -n 2 -| # wypiuje ostatnie 2 linie
8.6.18 Skrypty działające w pętli na każdym pliku
Poniższe sposoby pętli działającej na plikach z rozszerzeniem*.extzapewniają prawidłową
obsługę dziwnych nazw plików na przykład ze spacjami:
" Pętla w powłoce:
for x in *.ext; do
if test -f "$x"; then
command "$x"
fi
done
" findw kombinacji zxargs:
find . -type f -maxdepth 1 -name  *.ext -print0 | \
xargs -0 -n 1 command
" findz opcją-execw poleceniu:
find . -type f -maxdepth 1 -name  *.ext \
-exec command  {} \;
" findz opcją-execi krótkim skryptem powłoki:
find . -type f -maxdepth 1 -name  *.ext \
-exec sh -c "command  {} && echo  successful " \;
Rozdział 8. Debianowe porady 108
8.6.19 Szaleństwo krótkich skryptów Perla
Kazdy skprypt Awk może być napisany w Perlu. Przykładowo:
awk  ($2=="1957") { print $3 } |
moze być zapisany jak poniżej:
perl -ne  @f=split; if ($f[1] eq "1957") { print "$f[2]\n"} |
perl -ne  if ((@f=split)[1] eq "1957") { print "$f[2]\n"} |
perl -ne  @f=split; print $f[2] if ( $f[1]==1957 ) |
perl -lane  print $F[2] if $F[1] eq "1957" |
Teraz usuwamy wszystkie białe znaki oraz wykorzystujemy przewagę automatycznej konwer-
sji pomiędzy liczbami a ciągami tekstowymi:
perl -lane  print$F[2]if$F[1]eq+1957 |
Zobacz też do: perlrun(1). Wiele równie, lub bardziej szalonych skrytów Perla znajdziesz
tutaj: http://perlgolf.sourceforge.net.
8.6.20 Pobieranie tekstu oraz archiwów list dyskusyjnych ze stron WWW
Poniższe polecenia zczytają stronę WWW do pliku tekstowego. Przydatne na przykład do
skopiowania konfiguracji ze strony WWW.
$ lynx -dump http://www.odległa-strona.pl/plik.html >plik.txt
linksiw3mmogąbyć również analogicznie użyte, z dokładnością do niewielkich różnic.
Jeśli to jest archiwum listy dyskusyjnej, użyjmunpackaby uzyskać zawartość mime.
8.6.21 Estetyczne wydruki stron WWW
Poniższe polecenia wydrukują stronę WWW do drukarki/pliku PostScript:
$ apt-get install html2ps
$ html2ps URL | lpr [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pantheraa90.xlx.pl