Pomocnik początkujących i zapominalskich
Poniżej kilka komend, których znajomość pozwola napisać mały skrypt lub ułatwić pracę z powłoką.
Ogólnie, dla systemów Unix, nie tylko dla FreeBSD.
Pomocnik spisany przez: Anatole Olczak
ISBN=093573922x
Tytuł: Bourne Shell Quick Reference Guide
# Wykonanie wielu komend w jednym ciągu
$ pwd ; ls tmp ; echo "Hello world"
# Uruchamianie find w tle
$ find . -name tmp.out -print &
# Łączenie wyjścia who z grep'em
$ who | grep fred
# Rozmawiaj z fredem jeśli jest zalogowany
$ { who | grep fred ; } && talk fred
# Wyślij wynik ls do ls.out
$ ls > ls.out
# Dołącz wynik ls do ls.out
$ ls >> ls.out
# Wyślij zaporoszenie.txt do jasia, kasi, krzysia
$ mail jas kasia krzys < zaproszenie.txt
# Wyślij standartowy błąd xsend do stderr.out
$ xsend file 2>stderr.out
# Wyświetl nazwy plików zaczynających się na z
$ ls z*
# Wyświetl dwu-, trój- oraz czteroliterowe nazwy plików
$ ls ?? ??? ????
# Wyświetl nazwy plików zaczynające się na a, b lub c
$ ls [a-c]*
# Wyświetl nazwy plików, które nie kończą się na .c
$ ls *[!.c]
# Przyporządkuj zmiennej NU liczbę zalogowanych użytkowników
$ NU=`who | wc -l`
# Ustaw zmienną TOTAL do wartości sumy 4 + 3
$ TOTAL=`expr 4 + 3`
# Ustaw i wyeksportuj zmienną LBIN
$ LBIN=/usr/lbin; export LBIN
# Usuń zmienną LBIN
$ unset LBIN
# Ustaw zmienną SYS do nazwy komputera (jeśli nie ustawiona), wyświetl
$ echo ${SYS:=`uuname -l`}
# Wyświetl informację o błędzie jeśli zmiennaXBIN nie jest ustawiona
$ : ${XBIN:?}
# Wyświetl $HOME ustawione na /home/anatole
$ echo '$HOME ustawione na' $HOME
# Wyświetl wartość $TERM
$ echo $TERM
# Przywróć na pierwszy plan pracę numer 3, będącą w tle
$ fg %3
# Zatrzymaj pracę find
$ stop %find
# Wyświetl liczbę parametrów pozycyjnych
$ echo "There are $# positional parameters"
# Wyświetl wartość drugiego parametru pozycyjnego
$ echo $2
# Wyświetl wszystkie informacje dotyczące bieżących prac
$ jobs -l
# Zakończ pracę 5
$ kill %5
# Zwiększ zmienną X
$ X=`expr $X + 1`
# Ustaw zmienną X na 20 modulo 5
$ X=`expr 20 % 5`
# Ustaw tryb diagnostyczny
$ set -x
# Uruchom skrypt dbscript w trybie noexec
$ sh -n dbscript
# Sprawdzaj, czy masz nowe listy co 2 minuty
$ MAILCHECK=120; export MAILCHECK
# Ustaw podstawowy znak zachęty
$ PS1='Witaj!'; export PS1
# Sprawdź, czy zmienna VAR jest ustawiona na 0
$ [-z "$VAR"] && echo "VAR jest ustawiona na 0"
# Sprawdź, czy zmienna VAR jest ustawiona na ABC
$ ["$VAR" = ABC ]
# Sprawdź, czy plik xfile jest pusty
$ test ! -s xfile
# Sprawdź, czy tmp to katalog
$ [ -d tmp ]
# Sprawdź, czy plik file ma atrybuty odczytu i zapisu
$ test -r file -a -w file
# Wyświetl informację o błędzie, piknij w głośniczek
$ echo "Nieoczekiwany błąd!\007"
# Wyświetl informację na standardowym wyjściu błędu
$ echo "To idzie do stderr" >&2
# Wyświetl znak zachęty i czytaj odpowiedź do ODPOWIEDZ
$ echo "Wpisz odpowiedź: \c"; read ODPOWIEDZ
# Zrób funkcję md, która tworzy katalog i wchodzi do niego
$ md() { mkdir $1 && cd $1 ; pwd ; }
# Ustaw pułapkę tak, aby zignorować sygnały 2 i 3
$ trap "" 2 3
# Ustaw zmienną X na 1, ale w trybie tylko do odczytu
$ X=1 ; readonly X
# Ustaw zmienną VAR na 1, następnie wyeksportuj
$ VAR=1 ; export VAR
# Ustaw parametr pozycyjny na A B C
$ set A B C
# Ustaw limit tworzenia nowych plików do 1000 bloków
$ ulimit 1000
# Wyłącz zrzuty core
$ ulimit -c 0
# Dodaj zezwolenie zapisu grupy do maski tworzonego pliku
$ umask 013
# Wyświetl pierwsze oraz trzecie pola z pliku
$ awk '{print $1, $3}' plik
# Wyświetl siedem pierwszych znaków każdej linii z tplik
$ cut –c1–7 tplik
# Wyświetl pierwsze i trzecie pola z pliku /etc/passwd
$ cut –f1,3 –d":" /etc/passwd
# Wyświetl linie w imiona zaczynające się na A, B, C lub Z
$ egrep '[A–C,Z]*' imiona
# Wyświetl linie z dict zawierające czteroznakowe wyrazy
$ egrep '....' dict
# Wyświetl wpisy dla użytkowników używających powłoki Korn'a
$ grep ":/bin/ksh$' /etc/passwd
# Wyświetl liczbę linii w uplik zawierających unix; zignoruj wielkość liter
$ grep –c 'unix' uplik
# Wyświetl długości pierwszego pola z pliku
$ nawk'{TMP=length($1);print $TMP}' plik
# Wyświetl pierwsze 10 linii tpliku
$ nawk '{for (i=1; i<10; i++) \
printf "%s\n", getline}' tplik
# Wyświetl zawartość bieżącego katalogu w trzech kolumnach
$ ls | paste d" " – – –
# Wyświetl plik ze wszystkimi wystąpieniami nie zamienionymi na tak
$ sed 's/nie/tak/g' plik
# Wyświetl tylko nazwę użytkownika
$ id | sed 's/).*//' | sed 's/.*(//'
# Wyświetl plik z liniami zawierającymi wymazany wyraz unix
$ sed '/unix/d' plik
# Wyświetl pierwsze 50 linii pliku
$ sed 75q plik
# Posortuj /etc/passwd na podstawie id grup.
$ sort -t":" -n +3 -4 /etc/passwd
# Zmień małe litery w pliku na duże
$ cat plik | tr a-z A-Z
# Wyświetl sąsiednie, powtórzone linie w pliku
$ uniq –d file
# Wyświetl liczbę znaków i słów w pliku
$ wc –l plik
# Wyświetl liczbę plików .c w bieżącym katalogu
$ ls *.c | wc -l
$ pwd ; ls tmp ; echo "Hello world"
# Uruchamianie find w tle
$ find . -name tmp.out -print &
# Łączenie wyjścia who z grep'em
$ who | grep fred
# Rozmawiaj z fredem jeśli jest zalogowany
$ { who | grep fred ; } && talk fred
# Wyślij wynik ls do ls.out
$ ls > ls.out
# Dołącz wynik ls do ls.out
$ ls >> ls.out
# Wyślij zaporoszenie.txt do jasia, kasi, krzysia
$ mail jas kasia krzys < zaproszenie.txt
# Wyślij standartowy błąd xsend do stderr.out
$ xsend file 2>stderr.out
# Wyświetl nazwy plików zaczynających się na z
$ ls z*
# Wyświetl dwu-, trój- oraz czteroliterowe nazwy plików
$ ls ?? ??? ????
# Wyświetl nazwy plików zaczynające się na a, b lub c
$ ls [a-c]*
# Wyświetl nazwy plików, które nie kończą się na .c
$ ls *[!.c]
# Przyporządkuj zmiennej NU liczbę zalogowanych użytkowników
$ NU=`who | wc -l`
# Ustaw zmienną TOTAL do wartości sumy 4 + 3
$ TOTAL=`expr 4 + 3`
# Ustaw i wyeksportuj zmienną LBIN
$ LBIN=/usr/lbin; export LBIN
# Usuń zmienną LBIN
$ unset LBIN
# Ustaw zmienną SYS do nazwy komputera (jeśli nie ustawiona), wyświetl
$ echo ${SYS:=`uuname -l`}
# Wyświetl informację o błędzie jeśli zmiennaXBIN nie jest ustawiona
$ : ${XBIN:?}
# Wyświetl $HOME ustawione na /home/anatole
$ echo '$HOME ustawione na' $HOME
# Wyświetl wartość $TERM
$ echo $TERM
# Przywróć na pierwszy plan pracę numer 3, będącą w tle
$ fg %3
# Zatrzymaj pracę find
$ stop %find
# Wyświetl liczbę parametrów pozycyjnych
$ echo "There are $# positional parameters"
# Wyświetl wartość drugiego parametru pozycyjnego
$ echo $2
# Wyświetl wszystkie informacje dotyczące bieżących prac
$ jobs -l
# Zakończ pracę 5
$ kill %5
# Zwiększ zmienną X
$ X=`expr $X + 1`
# Ustaw zmienną X na 20 modulo 5
$ X=`expr 20 % 5`
# Ustaw tryb diagnostyczny
$ set -x
# Uruchom skrypt dbscript w trybie noexec
$ sh -n dbscript
# Sprawdzaj, czy masz nowe listy co 2 minuty
$ MAILCHECK=120; export MAILCHECK
# Ustaw podstawowy znak zachęty
$ PS1='Witaj!'; export PS1
# Sprawdź, czy zmienna VAR jest ustawiona na 0
$ [-z "$VAR"] && echo "VAR jest ustawiona na 0"
# Sprawdź, czy zmienna VAR jest ustawiona na ABC
$ ["$VAR" = ABC ]
# Sprawdź, czy plik xfile jest pusty
$ test ! -s xfile
# Sprawdź, czy tmp to katalog
$ [ -d tmp ]
# Sprawdź, czy plik file ma atrybuty odczytu i zapisu
$ test -r file -a -w file
# Wyświetl informację o błędzie, piknij w głośniczek
$ echo "Nieoczekiwany błąd!\007"
# Wyświetl informację na standardowym wyjściu błędu
$ echo "To idzie do stderr" >&2
# Wyświetl znak zachęty i czytaj odpowiedź do ODPOWIEDZ
$ echo "Wpisz odpowiedź: \c"; read ODPOWIEDZ
# Zrób funkcję md, która tworzy katalog i wchodzi do niego
$ md() { mkdir $1 && cd $1 ; pwd ; }
# Ustaw pułapkę tak, aby zignorować sygnały 2 i 3
$ trap "" 2 3
# Ustaw zmienną X na 1, ale w trybie tylko do odczytu
$ X=1 ; readonly X
# Ustaw zmienną VAR na 1, następnie wyeksportuj
$ VAR=1 ; export VAR
# Ustaw parametr pozycyjny na A B C
$ set A B C
# Ustaw limit tworzenia nowych plików do 1000 bloków
$ ulimit 1000
# Wyłącz zrzuty core
$ ulimit -c 0
# Dodaj zezwolenie zapisu grupy do maski tworzonego pliku
$ umask 013
# Wyświetl pierwsze oraz trzecie pola z pliku
$ awk '{print $1, $3}' plik
# Wyświetl siedem pierwszych znaków każdej linii z tplik
$ cut –c1–7 tplik
# Wyświetl pierwsze i trzecie pola z pliku /etc/passwd
$ cut –f1,3 –d":" /etc/passwd
# Wyświetl linie w imiona zaczynające się na A, B, C lub Z
$ egrep '[A–C,Z]*' imiona
# Wyświetl linie z dict zawierające czteroznakowe wyrazy
$ egrep '....' dict
# Wyświetl wpisy dla użytkowników używających powłoki Korn'a
$ grep ":/bin/ksh$' /etc/passwd
# Wyświetl liczbę linii w uplik zawierających unix; zignoruj wielkość liter
$ grep –c 'unix' uplik
# Wyświetl długości pierwszego pola z pliku
$ nawk'{TMP=length($1);print $TMP}' plik
# Wyświetl pierwsze 10 linii tpliku
$ nawk '{for (i=1; i<10; i++) \
printf "%s\n", getline}' tplik
# Wyświetl zawartość bieżącego katalogu w trzech kolumnach
$ ls | paste d" " – – –
# Wyświetl plik ze wszystkimi wystąpieniami nie zamienionymi na tak
$ sed 's/nie/tak/g' plik
# Wyświetl tylko nazwę użytkownika
$ id | sed 's/).*//' | sed 's/.*(//'
# Wyświetl plik z liniami zawierającymi wymazany wyraz unix
$ sed '/unix/d' plik
# Wyświetl pierwsze 50 linii pliku
$ sed 75q plik
# Posortuj /etc/passwd na podstawie id grup.
$ sort -t":" -n +3 -4 /etc/passwd
# Zmień małe litery w pliku na duże
$ cat plik | tr a-z A-Z
# Wyświetl sąsiednie, powtórzone linie w pliku
$ uniq –d file
# Wyświetl liczbę znaków i słów w pliku
$ wc –l plik
# Wyświetl liczbę plików .c w bieżącym katalogu
$ ls *.c | wc -l
Autor:
Alex
Porozmawiaj o tym artykule na forum:
quex, pon., 25/02/2008 - 01:30
