Ważne polecenia bash

Potrzebujesz pomocy z C, C++, perl, python, itp.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Ważne polecenia bash

Post autor: jang » 25 kwietnia 2007, 22:00

Bardzo proszę wszystkich którzy znają basha o pomoc przy tworzeniu tego tematu.

Na czym miałaby polegać ta pomoc? Wystarczy podanie nazwy polecenia i link (linki) do jakichś przykładów i opisu (najlepiej po polsku), ewentualnie, byłoby miło, przy odnośniku krótko, jednym zdaniem co to polecenie robi. Całkiem bajecznie by było gdyby ktoś z Was zechciał podać jakiś przykładzik.

Może ktoś zapytać po co to wszystko? Tutaj: -->link<-- zadałem pytanie, teraz już wiem że głupie, a dlaczego je zadałem, ano dlatego, że wcześniej znalazłem na Wikipedii takie oto wytłumaczenie -->link<-- dla expr i na żaden sposób nie byłem w stanie dowiedzieć się z tego objaśnienia że to właśnie polecenie jest tym czego szukam. Natomiast gdybym wiedział, że takowe istnieje i do czego służy wiedziałbym czego szukać przy pomocy Google i znalazłbym np. -->link<-- i tym sposobem obyłoby się bez głupiego pytania.

Jeśli ktoś z Was jest w posiadaniu książki na temat BASH-a i uważa, że jest ona godna polecenia innym to również bardzo proszę o podanie jej tytułu i autora.

Wszystkim, którzy zechcą pomóc z góry bardzo dziękuję.

Pozdrawiam.

**********************************************************
Informacja
Wszystkie posty, które będziecie uprzejmi w tym temacie napisać, po dodaniu przeze mnie informacji w nich zawartych do postu poniżej, będą usuwane. Oprócz dopisania zawartości nie omieszkam również dodać informacji o tym kto był tak uprzejmy je dodać.
**********************************************************

Przy tworzeniu tego tematu pomogli:
irl, sparks

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 26 kwietnia 2007, 10:37

Książki i opisy dostępne w internecie

Advanced Bash-Scripting Guide (j.angielski) - -->link<-- - dodał irl
Bash Reference Manual (j.angielski) - -->link<--
bash - -->link<--
Wprowadzenie do basha - -->link<--
Podręcznik systemowy - -->link<--
Programowanie w shellu: BASH - -->link<--
Bash w przykładach - -->link<--
Bash - pisanie skryptów - -->link<--

###########################################################

Dostrajanie Basha - -->link<--
Narzędzia operujące na plikach tekstowych - -->link<--
User Interface and dialog utility-Part I(j.angielski) - -->link<-- - dodał sparks
User Interface and dialog utility-Part II(j.angielski) - -->link<-- - dodał sparks

Polecenia
& - wpisanie po dowolnym poleceniu rozkazuje systemowi uruchomić je w tle
-----------------------------------------------------------
abs - oblicza bezwzględna zmiennej integer
-----------------------------------------------------------
apropos - szukanie polecenia o określonym zastosowaniu - apropos disk
-----------------------------------------------------------
arch - architektura komputera
-----------------------------------------------------------
asin - funkcja arcus sinus
-----------------------------------------------------------
at - odkładanie wykonania zadania na później
at - at czas/data polecenie
-----------------------------------------------------------
atan - funkcja arcus tangens
-----------------------------------------------------------
awk - -->link<--
-----------------------------------------------------------
bc - język kalkulatora dowolnej precyzji
-----------------------------------------------------------
bcmp - porównanie ciągów bajtów (man bcmp)
-----------------------------------------------------------
bcopy - kopiowanie ciągu bajtów
-----------------------------------------------------------
bg - umieszcza już działający proces w tle
-----------------------------------------------------------
bsearch - binarne przeszukiwanie posortowanej tablicy (man bsearch)
-----------------------------------------------------------
bzero - wpisywanie zerowych bajtów (man bzero)
-----------------------------------------------------------
cal - wyświetla kalendarz
-----------------------------------------------------------
cat - wyświetlenie zawartości pliku
cat - -->link<--
cat /proc/meminfo - ilość wolnej pamięci
-----------------------------------------------------------
cbrt - pierwiastek sześcienny (man cbrt)
-----------------------------------------------------------
cd - -->link<--
-----------------------------------------------------------
checkalias - sprawdź, czy alias nie jest już zdefiniowany (man checkalias)
-----------------------------------------------------------
chgrp - -->link<--
-----------------------------------------------------------
chmod - zmienia parametry pliku
chmod - -->link<--
-----------------------------------------------------------
chown - zmienia właściciela pliku
chown - -->link<--
-----------------------------------------------------------
clear - czyści ekran
-----------------------------------------------------------
clone - utworzenie procesu potomnego (man clone)
-----------------------------------------------------------
cmp - porównanie zawartości dwóch plików - cmp plik plik
-----------------------------------------------------------
colrm - usuń z pliku kolumny (man colrm)
-----------------------------------------------------------
comm - porównaj dwa posortowane pliki linia po linii (man comm)
-----------------------------------------------------------
cp - kopiuje plik/katalog
-----------------------------------------------------------
cron - daemon do wywoływania odłożonych komend (man cron)
cron - -->link<--
-----------------------------------------------------------
crontab - opis formatu tabel crona (man crontab)
crontab - -->link<--
-----------------------------------------------------------
cut - usuń sekcje z każdej linii plików (man cut)
-----------------------------------------------------------
date - wyświetla bieżącą datę i czas
-----------------------------------------------------------
df - df - informacje o wszystkich zamontowanych urządzeniach (zamontowanych obrazach ISO również)
df - df /dev/sda1 - informacje o konkretnym urządzeniu, tutaj o partycji /sda1
df - df -h - to samo co wyżej ale trochę bardziej czytelne
-----------------------------------------------------------
diff - wyświetla różnice między plikami
-----------------------------------------------------------
dircmp - porównuje katalogi
-----------------------------------------------------------
djpeg - dekompresja pliku JPEG do pliku obrazkowego (man djpeg)
-----------------------------------------------------------
dpkg - zarządzanie pakietami
-----------------------------------------------------------
du - zajętość dysku
du -h - pokazuje wszystkie pliki z katalogu w którym się znajdujemy oraz ich objętość
du -sh - pokazuje tylko sumę objętości plików z katalogu w którym się znajdujemy
du -sh / - pokazuje zajętość całego dysku łącznie z tym co mamy w /mnt/...
-----------------------------------------------------------
echo - wyświetl linijkę tekstu
echo - -->link<--
-----------------------------------------------------------
ex - edytor wierszowy
-----------------------------------------------------------
exp, log, log10, pow - funkcje wykładnicza, logarytmiczna i potęgowa (man pow)
-----------------------------------------------------------
export - -->link<--
-----------------------------------------------------------
expr - wykonaj wyrażenie
expr - -->link<--
expr - -->przykład<--
-----------------------------------------------------------
file - testowanie pliku
-----------------------------------------------------------
find - -->link<--
-----------------------------------------------------------
finger - informacje o użytkowniku - finger username
-----------------------------------------------------------
fork - utworzenie procesu potomnego
-----------------------------------------------------------
free - wyświetla ilość wolnej i zajętej pamięci
-----------------------------------------------------------
fsck - sprawdźa i naprawia system plików
fsck - -->link<--
-----------------------------------------------------------
fsview - pokazuje zajętość miejsca na dysku w sposób graficzny
-----------------------------------------------------------
g++ - kompilator języka C
-----------------------------------------------------------
gcc - kompilator języka C
-----------------------------------------------------------
grep - http://pl.wikipedia.org/wiki/Grep
-----------------------------------------------------------
groupadd - dodawanie grupy
-----------------------------------------------------------
groupdel - usuwanie grupy
-----------------------------------------------------------
groupmod - modyfikowanie danych grupy
-----------------------------------------------------------
gunzip - rozpakowanie pliku (także: gz, bz, bzip2)
-----------------------------------------------------------
halt - wyłączenie systemu
-----------------------------------------------------------
head - wypisuje 10 pierwszych linijek pliku lub potoku
-----------------------------------------------------------
hello - wysyłanie krótkiego tekstu na ekran innego użytkownika
-----------------------------------------------------------
hostname - wyświetlenie lub zmiana nazwy komputera
hostname nowaNazwa - zmienia nazwę hosta na "nowaNazwa"
-----------------------------------------------------------
iconv -
-----------------------------------------------------------
id - wyświetla identyfikator użytkownika i grup do których należy
-----------------------------------------------------------
ifconfig - konfigurowanie połączenia sieciowego
-----------------------------------------------------------
ifdown - zatrzymywanie interfejsu sieciowego
-----------------------------------------------------------
ifup - uruchamianie interfejsu sieciowego
-----------------------------------------------------------
insmod - instalowanie modułu jądra
-----------------------------------------------------------
join - połącz linie dwóch plików według wspólnych pól (man join)
join - -->link<--
-----------------------------------------------------------
last - sprawdzenie logów użytkownika - last username
-----------------------------------------------------------
less - przeglądarka tekstów, przewijanie w górę i w dół
-----------------------------------------------------------
let -
let - -->przykład<-- - podał ilr
-----------------------------------------------------------
ln - tworzenie dowiązań twardych oraz symbolicznych.
-----------------------------------------------------------
loadkeys - ładuje nową mapę klawiatury, np. polską
-----------------------------------------------------------
logout - wylogowanie
-----------------------------------------------------------
lpr - drukowanie plików
-----------------------------------------------------------
ls - lista plików w danym katalogu
ls -al - lista plików i katalogów w danym katalogu wraz z różnymi informacjami o nich
-----------------------------------------------------------
lsmod - lista modułów załadowanych w pamięci (tylko jako root)
-----------------------------------------------------------
lsof - -->link<--
-----------------------------------------------------------
mail - wysyłanie i odbieranie poczty
-----------------------------------------------------------
mailaddr - opis adresowania poczty (man mailaddr)
-----------------------------------------------------------
md5sum - wypisuje albo sprawdza sumy kontrolne MD5 (md5sum --h)
-----------------------------------------------------------
memset - wypełnia obszar pamięci stałym bajtem (man memset)
-----------------------------------------------------------
mesg - zablokowanie/odblokowanie przesyłania komunikatów
-----------------------------------------------------------
mkdir mkdir nazwa_katalogu - tworzy nowy katalog
mkdir - mkdir -m 755 katalog - tworzy katalog z określonymi prawami dostępu
-----------------------------------------------------------
mkisofs - program tworzący obrazy CD w formacie *.iso
-----------------------------------------------------------
modprobe - instalowanie modułu z potrzebnymi opcjami i modułami
-----------------------------------------------------------
more - program do wyświetlania pliku na ekranie - przewijanie tylko w dół
more - -->link<--
-----------------------------------------------------------
mount - -->link<--
-----------------------------------------------------------
mv - przenosi plik/katalog, zmienia nazwę pliku/katalogu
-----------------------------------------------------------
netstat - informacje o połączeniach sieciowych
-----------------------------------------------------------
nice - uruchomienie procesu z określonym priorytetem
-----------------------------------------------------------
passwd - zmiana hasła użytkownika
-----------------------------------------------------------
paste - zlep linie plików (man paste)
-----------------------------------------------------------
printf - formatuj i drukuj dane
-----------------------------------------------------------
ps - lista procesów użytkownika
ps -aux - lista wszystkich procesów w systemie
-----------------------------------------------------------
pwd - zwraca ścieżkę do bieżącego katalogu.
-----------------------------------------------------------
qsort - sortuje tablicę (man qsort)
-----------------------------------------------------------
rcp - -->link<--
-----------------------------------------------------------
read - wczytuje do zmiennej wartość z wejścia
read - -->przykład<-- - podał Hagal
read - -->przykład<--
-----------------------------------------------------------
reboot - zatrzymanie i ponowne uruchomienie systemu
-----------------------------------------------------------
rm - kasuje plik/pliki
-----------------------------------------------------------
rmdir kasuje katalog/katalogi (tylko puste)
-----------------------------------------------------------
rmmod - usuwanie modułu jądra
-----------------------------------------------------------
sed - edytor strumieniowy
sed - -->link<--
-----------------------------------------------------------
setenv - ustawia zmienną lokalną/globalną
-----------------------------------------------------------
size - wyświetla wielkości plików
-----------------------------------------------------------
sleep - zawiesza proces na określoną liczbę sekund
-----------------------------------------------------------
shutdown -r now - restart komputera (tylko jako root)
shutdown -h now - wyłączenie komputera (tylko jako root)
-----------------------------------------------------------
sort - sortuje linie w pliku
-----------------------------------------------------------
source - -->link<--
-----------------------------------------------------------
split - dzieli pliki na mniejsze części
-----------------------------------------------------------
startx - uruchomienie graficznej nakładki
-----------------------------------------------------------
strings - -->link<--
-----------------------------------------------------------
strlen - obliczenie długości łańcucha (man strlen)
-----------------------------------------------------------
sysinfo - zwraca informacje statystyczne systemu
-----------------------------------------------------------
tail - wypisuje 10 ostatnich linijek pliku lub potoku
-----------------------------------------------------------
tar - tworzy archiwum wieloplikowe
-----------------------------------------------------------
test - sprawdzanie typów plików i porównywanie wartości (man test)
-----------------------------------------------------------
textutils - opis pakietu narzędzi tekstowych GNU (man textutils)
-----------------------------------------------------------
time - czas działania (wykonywania) programu ( time hddtemp /dev/sda )
-----------------------------------------------------------
touch - touch nazwa_pliku - tworzy nowy pusty plik
-----------------------------------------------------------
tr - do zmiany i usuwania tekstu w ciągu znaków
-----------------------------------------------------------
tree - wyświetla strukturę katalogów w formie drzewa
-----------------------------------------------------------
uniq - -->link<--
-----------------------------------------------------------
uname - informacje o systemie - uname -a
-----------------------------------------------------------
unexpand - w każdym PLIKU spacje zamieniane są na TAB-ulatory (unexpand --h)
-----------------------------------------------------------
unset - usuwa zmienną z pamięci
-----------------------------------------------------------
unzip - rozpakowywanie archiwów *.zip
-----------------------------------------------------------
uptime - pokazuje jak długo jest uruchomiony komputer
-----------------------------------------------------------
useradd - dodawanie użytkownika
-----------------------------------------------------------
userdel - kasowanie użytkownika
-----------------------------------------------------------
usermod - modyfikowanie danych użytkownika
-----------------------------------------------------------
users - lista zalogowanych użytkowników
-----------------------------------------------------------
w - lista zalogowanych użytkowników
-----------------------------------------------------------
wait, waitpid - oczekiwanie na zakończenie procesu (man wait)
-----------------------------------------------------------
wall - przesyłanie komunikatów do wszystkich użytkowników systemu
-----------------------------------------------------------
wc - zlicza słowa, znaki, linie lub bajty w pliku lub potoku
-----------------------------------------------------------
whereis - szukanie programów - whereis opera
whereis - -->link<--
-----------------------------------------------------------
which - podaje scieżkę do szukanego programu
-----------------------------------------------------------
write - pisanie do innego zalogowanego użytkownika - write username
-----------------------------------------------------------
xargs - -->link<--
-----------------------------------------------------------
xterm - wywołanie podshella
-----------------------------------------------------------
zcmp - porównaj skompresowane pliki
-----------------------------------------------------------
zdiff - porównaj skompresowane pliki
-----------------------------------------------------------
zgrep - znajdź wyrażenie regularne również w skompresowanych plikach
-----------------------------------------------------------
zipgrep - znajdź wyrażenie regularne w plikach .zip
-----------------------------------------------------------
zless - przeglądanie (w górę i w dół) na ekranie skompresowanych plików tekstowych
zless - zless ~/antlr-2.7.7.tar.gz
-----------------------------------------------------------
zmore - przeglądanie (tylko w dół) na ekranie skompresowanych plików tekstowych
zmore - zmore ~/antlr-2.7.7.tar.gz
-----------------------------------------------------------
znew - dokonaj konwersji pliku .Z do pliku .gz
-----------------------------------------------------------

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 21 maja 2007, 13:37

Przykłady
Wykorzystanie awk, echo, grep, let, sed, wc, for, select, case

Kod: Zaznacz cały

#!/bin/bash

# '/^#/d' - jeśli pierwszym znakiem w linii (^) jest (#) to nie wczytuj tej linii (d)
debianMirrors="$(sed -e '/^#/d' /etc/apt/sources.list)"

# grep '^deb ' - jeśli pierwszymi znakami w linii (^) są (deb) to wczytaj tą linię
# awk '{print $2}' - z pobranej linii wypisz drugie ($2) pole
debianMirrors=`echo "$debianMirrors" | grep '^deb ' | awk '{print $2}'`

# echo -n - utwórz nowy plik a jeśli istnieje nadpisz go plikiem o zerowej długości
echo -n > /tmp/lista

for x in $debianMirrors; do
	echo "$x" >> /tmp/lista
done

# wc -l - policz linie w pliku i zapisz (echo) do zmiennej $ile
ile=`echo "$(wc -l < /tmp/lista)"`
# $ile+1 - dochodzi pozycja Quit
let "ile += 1"

# PS3 - prompt (znak zachęty) - [url]http://bash.wikidot.com/prompt[/url]
PS3="Twój wybór : "

select mirror in $debianMirrors Quit;
do
  case $mirror in
 		"Quit") exit ;;
        *)
			# Jeśli $REPLY jest > 0 oraz (AND -> -a) $REPLY jest < $ile to wyświetl ...(echo ...)
			[ "$REPLY" -gt "0" -a "$REPLY" -lt "$ile" ] && echo -e "\033[1;32mWybrałeś - \033[00m" $mirror \($REPLY\)
			# Jeśli $REPLY jest < 1 lub (OR -> -o) $REPLY jest > $ile to wyświetl ...(echo ...)
			[ "$REPLY" -lt "1" -o "$REPLY" -gt "$ile" ] && echo -e "\033[1;31mWybrałeś niewłaściwą cyfrę\033[00m"
         ;;
  esac
done
W razie problemów z działaniem ściągnij stąd

==================================================

Trochę inna wersja powyższego przykładu:

1. zamiast dwóch pierwszych linii:

Kod: Zaznacz cały

debianMirrors="$(sed -e '/^#/d' /etc/apt/sources.list)"
debianMirrors=`echo "$debianMirrors" | grep '^deb ' | awk '{print $2}'`
zrobimy jedną :

Kod: Zaznacz cały

debianMirrors=(`echo -e "$(sed -e '/^#/d' /etc/apt/sources.list)"\n | grep '^deb ' | awk '{print $2}'`)
2. dokładamy do tego nawiasy debianMirrors=(` ... `) przez co od razu tworzy nam się tablica, dzięki czemu nie musimy niczego zapisywać do pliku a ilość elementów tablicy liczymy tak :

Kod: Zaznacz cały

ile=`echo ${#debianMirrors[@]}`
no i całość :

Kod: Zaznacz cały

debianMirrors=(`echo -e "$(sed -e '/^#/d' /etc/apt/sources.list)"\n | grep '^deb ' | awk '{print $2}'`)
ile=`echo ${#debianMirrors[@]}`
let "ile += 1"

PS3="Twój wybór: "

select mirror in ${debianMirrors[*]} Quit;
do
  case $mirror in
 		"Quit") exit ;;
        *)
			# Jeśli $REPLY jest > 0 oraz (AND) $REPLY jest < $ile to wyświetl ...(echo ...)
			[ "$REPLY" -gt "0" -a "$REPLY" -lt "$ile" ] && echo -e "\033[1;32mWybrałeś - \033[00m" $mirror \($REPLY\) && exit 0
			# Jeśli $REPLY jest < 1 lub (OR) $REPLY jest > $ile to wyświetl ...(echo ...)
			[ "$REPLY" -lt "1" -o "$REPLY" -gt "$ile" ] && echo -e "\033[1;31mWybrałeś niewłaściwą cyfrę\033[00m"
         ;;
  esac
done
Raz napisałem tak debianMirrors[@] a raz tak debianMirrors[*][/b] - nie ma to żadnego znaczenia czy użyjemy * czy też @, zawsze skrypt odczyta to jako wszystkie elementy tablicy

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 23 maja 2007, 21:44

Obliczanie wyrażeń arytmetycznych w bashu
We wszystkich przykładach zmienne mają tą samą wartość:

Kod: Zaznacz cały

B=2
C=5
Dodawanie:

Kod: Zaznacz cały

A=$((B+C))
A=$[B+C]
echo $A   => 7

echo $((B+C))   => 7

let A=B+C
echo $A   => 7
Odejmowanie:

Kod: Zaznacz cały

A=$((B-C))
A=$[B-C]
echo $A   => -3

echo $((B-C))   => -3

let A=B-C
echo $A   => -3
Mnożenie:

Kod: Zaznacz cały

A=$((B*C))
A=$[B*C]
echo $A   => 10

echo $((B*C))   => 10

let A=B*C
echo $A   => 10
Dzielenie:

Kod: Zaznacz cały

A=$((B/C))
echo $A => powinno być 0.4 a jest   => 0

echo $((B/C)) => powinno być 0.4 a jest   => 0

echo "scale=5 ; ($B/$C)" | bc    => 0.40000 <- scale=5 - 5 miejsc po przecinku
echo "scale=15 ; ($B/$C)" | bc  => 0.400000000000000 <- scale=15 - 15 miejsc po przecinku
Pierwiastek:

Kod: Zaznacz cały

echo "scale=5 ; sqrt($B)" | bc    => 1.41421
echo "scale=10 ; sqrt($B)" | bc  => 1.4142135623
echo "scale=7 ; sqrt($B)" | bc    => 1.4142135
Potęgowanie:

Kod: Zaznacz cały

echo "$(( B**2 ))"   => 4

A=$[B**2]
let A=B**2
echo $A   => 4

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 29 maja 2007, 21:31

Obydwie części tego skryptu robią to samo
Podaję to jako przykład jak powinno się pisać skrypty (część pierwsza)
a jak nie powinno się ich pisać (część druga)
a dlaczego ? uruchom sam(a) a się dowiesz
"echo `date`" wszystko Ci powie :-P

Kod: Zaznacz cały

#!/bin/bash 

echo -n > /tmp/spis-deb-system1
echo -n > /tmp/spis-deb-system2

##########
# 1
##########
listaPakietow1="/tmp/spis-deb-system1" 
echo `date`
paczka="$(apt-cache show `dpkg -l | grep '^ii ' | awk '{print $2}'` | sed '/Filename:/!d;{s/.*\///}')"
for x in $paczka; do 
    echo "$x" >> $listaPakietow1
done 
echo "Ilość pakietów w pliku /tmp/spis-deb-system1 -> $(wc -l < $listaPakietow1)"

##########################################################
echo `date`
##########################################################

##########
# 2
##########
paczka="$(dpkg -l | grep '^ii ' | awk '{print $2}')"
listaPakietow2="/tmp/spis-deb-system2" 

for x in $paczka; do 
    apt-cache show "$x" | sed '/Filename:/!d;{s/.*\///}' >> $listaPakietow2
done 
echo "Ilość pakietów w pliku /tmp/spis-deb-system2 -> $(wc -l < $listaPakietow2)"
echo `date`
W razie problemów z działaniem ściągnij stąd

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 12 czerwca 2007, 18:03

Zliczanie ilości linii w pliku:

Kod: Zaznacz cały

wc -l </etc/apt/sources.list
Zliczanie ilości słów w pliku:

Kod: Zaznacz cały

wc -w </etc/apt/sources.list
Zliczanie ilości linii w pliku, które zaczynają się od podanego słowa (tutaj Package):

Kod: Zaznacz cały

grep -c '^Package:.*' /var/lib/dpkg/status
Zliczanie ilości linii w pliku, które zaczynają się od podanego słowa (tutaj Status: install ok installed}
Ten przykład wyświetli ilość pakietów, które mamy zainstalowane w systemie:

Kod: Zaznacz cały

cat /var/lib/dpkg/status | grep "^Status: install ok installed" | wc -l
Pierwszy z poniższych przykładów wyświetli wszystkie linie zaczynające się od słowa "Package",
drugi dodatkowo je posortuje, a trzeci wyświetli ilość tych linii:

Kod: Zaznacz cały

1. sed -e '/^Package:.*/!d' /var/lib/dpkg/status
2. sed -e '/^Package:.*/!d' /var/lib/dpkg/status | sort
3. sed -e '/^Package:.*/!d' /var/lib/dpkg/status | wc -l
Wyświetli wszystkie pakiety dystrybucji testowej, które można zaktualizować do nowszych wersji i dodatkowo je posortuje:

Kod: Zaznacz cały

apt-get update && apt-show-versions -u -b | fgrep testing | sort
Czasami zdarza się, że niektóre pakiety po:

Kod: Zaznacz cały

apt-get upgrade
ani myślą się zaktualizować (wczoraj miałem takich 21 sztuk) i pomogło takie coś:

Kod: Zaznacz cały

apt-get install `apt-show-versions -u -b | fgrep testing`
Oczywiście wcześniej jeśli ktoś nie ma to:

Kod: Zaznacz cały

apt-get install apt-show-versions
Usuwa całą tablicę z pamięci:

Kod: Zaznacz cały

unset a[*]
Odnajduje i wypisuje na ekranie wszystkie linie zaczynające się od podanego słowa (Filename) z plików znajdujących w podanym katalogu (/var/lib/apt/lists/), których nazwy kończą się jakimś słowem (_Packages) oraz dodatkowo nam te linie posortuje (przykład 1).Natomiast przykład drugi policzy nam te linie:

Kod: Zaznacz cały

1. grep -h 'Filename:.*' /var/lib/apt/lists/*_Packages | sort
2. grep -h 'Filename:.*' /var/lib/apt/lists/*_Packages | wc -l

jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang » 13 czerwca 2007, 07:48

Pętla while i polecenie read

Kod: Zaznacz cały

# otwórz plik (/etc/apt/sources.list) do czytania
exec 6< /etc/apt/sources.list

# wczytuje kolejne wiersze aż do napotkania końca pliku
while read -u 6 deb
do
    # tutaj można robić cokolwiek z daną linią
    echo $deb
done

# zamknij plik
exec 6<&-

CzarnyZajaczek
Posty: 1
Rejestracja: 20 kwietnia 2008, 23:16
Lokalizacja: Lublin (prawie)

Post autor: CzarnyZajaczek » 20 kwietnia 2008, 23:23

Opisy w sieci (po polsku):
BASH Programming - Introduction HOW-TO (tłumaczenie na polski) - -->link<--
Kurs bash'a - -->link<--

Marcinnn
Posty: 86
Rejestracja: 26 grudnia 2007, 07:08

Post autor: Marcinnn » 22 maja 2008, 12:44

Całkiem ładnie to wygląda, ale zbiór poleceń można poszerzyć, mimo, że zdarza się, że one się dublują:

atq [opcje] [identyfikator zadania] - wyświetla listę zadań oczekujących na użytkownika; jeśli jest to użytkownik uprzywilejowany to wyświetla listę zadań dla wszystkich użytkowników; jeśli podany zostanie identyfikator zadania to wyświetli tylko zadania z podanym identyfikatorem zdaje się że at -l działa podobnie.

atrm [zadanie] - usuwa zadanie, które zostało umieszczone w kolejce do wykonania w przyszłości. Zadaje się, ze ad -d działa podobnie.

batch [opcje] [czas] - wykonuje polecenia z konsoli (ściśle na standardowym wejściu); jeśli nie zostanie podany czas, to polecenia zostaną wykonane, kiedy pozwoli na to obciążenie systemu.

bash - można też wpisać sh i znaczenie jest chyba dość oczywiste

biff - powiadamia o otrzymaniu mejla i podanie nazwę nadawcy; działa tylko wtedy kiedy jest włączony comsat(8); biff y uruchamia powiadamianie a biff n wyłącza je. Samo biff podaje aktualny status.

change [opcje] użytkownik - zmienia datę wygaśnięcia hasła użytkownika; z wszystkimi opcjami prócz -l (wyświetlenie daty wygaśnięcia hasła lub konta użytkownika) może być używany tylko przez uprzywilejowanego użytkownika

chattr - podobne do chmod

chsh - zmienia powłokę systemową, która będzie uruchamiana po zalogowaniu się do systemu; ostrzega jeśli powłoka nie występuje w pliku /etc/shells

cksum [pliki] - oblicza sumę kontrolną pliku lub plików przy użyciu CRC w celu sprawdzenia ich poprawności. Jeśli nie zostanie podana nazwa pliku lub znak - to będzie wczytywać dane ze standardowego wejścia.

cpio - tworzy lub (zależnie od opcji) odzyskuje archiwum plików

csh - dość oczywiste

csplit [opcje] argumenty - dzieli plik na sekcje i umieszcza je w plikach nazwanych od xx00 do xxn (dla n<100), dzieląc plik według wzoru określonego w argumentach.

dd [opcja=wartości] - dość ważna funkcja; tworzy kopię pliku wejściowego (if=); warto ją sobie przejrzeć i o niej przeczytać; nie zastąpiona przy tworzeniu dyskietek czy dysków startowych, startowyxh pendrivów

dirname ścieżka - wyświetla ścieżkę dostępu pomijając ostatni poziom

dumpkeys [opcje]

emacs - jak jest ex to chyba emacs też powinien być na tej liście.

egrep - przeszukuje jeden lub kilka plików w poszukiwaniu stałego wyrażenia; nie obsługuje wyrażeń oznaczonych przez / (np. /n, />, / itd)

env -

expand [opcje] pliki - zmienia znaki tabulacji w podanych plikach lub ze standardowego wejścia na zadaną liczbę znaków spacji.

false - zwraca przy wyjściu status nieudany (niezerowy), zdecydowanie powinno się przydać w skryptach.

fdformat - formatowanie niskiego poziomu dla dyskietek.

fgrep [opcje] wzorzec [pliki] - przeszukuje plik lub pliki na obecność linii zawierających ciąg tekstowy (wzorzec); jeśli znajdzie taką linie zwraca 0, jeśli nie 1, jeśli błąd to 2.

ftm - przekształcanie tekstu

fold [opcje] pliki - ustawia szerokość linii w pliku (domyślnie 80), może przy tym dzielić słowa, jeśli zostanie podany znak - to bierze dane z konsoli (ściśle standardowego wejścia).

formail [opcje] - filtruje dane wejściowe do formatu skrzynki pocztowej.

ftp - dość oczywiste

fuser [opcje] nazwa_pliku - wyświetla numery ID zadań, które używają podanych plików lub systemów plików.

gawk - wersja GNU polecenia awk.

getkeycodes - odpowiedniki kodowe dla kodu klawisza.

ghostscript [opcje] pliki - język do obróbki dokumentów, podobny do Postscriptu.

groff - program do formatowania tekstu groff.

groups użytkownik - pokazuje grupy, do których należy użytkownik.

gzexe - kompresja plików wykonywalnych, oszczędza miejsce na dysku kosztem czasu wykonywania takiego pliku.

hostid - wyświetla nr id hosta

info

ispell [opcje] pliki - porównuje słowa z pliku lub plików z systemowym słownikiem i wyświetla wynik

kill

killall

login

logname - sprawdza czy plik /etc/utmp zawiera nazwę użytkownika, jeśli znajdzie go wyświetla jeśli nie zwraca komunikat o błędzie.

look [opcje] ciąg pliki - szuka linii w pliku zaczynającej się od ciągu.

lpq - sprawdza kolejkę dokumentów oczekujących do wydruku.

lprm - usuwa zadanie z kolejki zdań drukarki.

man

manpath

merge - łączy pliki.

nohup polecenie argumenty - kontynuuje wykonywanie polecenia użytkownika po jego wylogowaniu.

ntfs-3g - używa się tego jak mount do bezpiecznego zamontowania partycji ntfs w trybie odczytu zapisu i wykonania.

perl

pidof - wyświetla nr ID zadań i programów.

pr [plik] - zmienia plik tekstowy na jego wersję podzieloną na strony wraz z nagłówkami itp. Jeśli zamiast pliku damy znak ,,-'' to jak w większości tego typu poleceniach będzie pobierał dane ze standardowego wejścia.

printenv [zmienne] - wyświetla wartości zmiennych.

qouta [opcje] [użytkownik | grupa] - określa wykorzystanie miejsca na dysku dla określonego użytkownika/grupy.

rdate - uzyskuje datę i czas z węzła w sieci.

renice [priorytet] [opcje] [cel] - zmienia priorytet różnych zadań w trakcie ich pracy.

reset - czyści terminal.

rev - odwraca kolejność znaków w liniach wysyłanych na standardowe wejścia; jeśli nie zostanie podany plik to pobiera dane ze standardowego wejścia.

rlogin - zdalne logowanie.

rsh [opcje] węzeł [polecenie] - wykonuje polecenia na zdalnym komputerze.

run-parts [opcje] katalog - sortuje skrypty zdanego katalogu po nazwach w porządku alfabetycznym i tak je po kolei uruchamia.

rusers - wyświetla kto jest zalogowany na lokalnym komputerze.

rwall - wysyła wiadomość do wszystkich użytkowników sieci.

rwho - informuje kto jest zalogowany na wszystkich komputerach sieci.

script [opcja] [plik] - kopiuje wszystkie dane z terminala do pliku typescript lub do pliku o określonej nazwie; kończy pracę po zakończeniu pracy terminala

setfdprm - odczytuje parametry dysku używane podczas autokonfiguracji

shar - do pakowania plików; chyba trochę archaizm, ale ma trochę możliwości.

sleep - odczekuje określoną ilość czas przed wykonaniem następnego polecenia; domyślna jednostka to sekundy.

stty - ustawia opcje wejścia/wyjścia terminala dla obecnego standardowego urządzenia wejściowego.

su [opcja] [użytkownik][argument powłoki] - tworzy powłokę z rzeczywistym nr ID innego użytkownika; domyślnie jest to użytkownik uprzywilejowany, ale może być każdy inny; warto się przyjrzeć temu poleceniu moim zdaniem.

sudo - do uruchamiania aplikacji czy poleceń zarezerwowanych dla roota; niektórzy wpadają na cudaczne pomysły ze skryptami z tą komendą zamiast po prostu skonfigurować sobie to polecenie w /etc/sudoers.

sum [opcje] plik - oblicza i wyświetla sumę kontrolną i nr bloku.

symlinks [opcje] katalogi - wyświetla informacje o łączach symbolicznych.

tac [opcje] [pliki] - wyświetla pliki w odwrotnym porządku zamieniając wersy, tzn. wers pierwszy wyświetli się jako ostatni.

talk osoba [nazwa_tty] - umożliwia rozmowę z innym użytkownikiem.

tcsh - dość oczywiste.

tee [opcje] pliki - ciekawe polecenie; przyjmuje dane wysyłane z innego polecenia na standardowe wyjście i jednocześnie wyświetla je na ekranie i zapisuje w plikach.

telnet

test wyrażenie - oblicza wyrażenie i jeśli jest prawdziwe zwraca zero, jeśli nie, to zwraca status niezerowy
test opcja plik
do testowania plików

tftp - interfejs użytkownika do protokołu TFTP (Trivial File Transfer Protocol); coś trochę jak ftp.

tload [opcje][tty] - wyświetla średnie obciążenie systemu w formie graficznej.

top - wyświetla informacje o obecnie działających zdaniach, które najbardziej zajmują czas procesora.

tr [opcje] [ciąg1][ciąg2] - zmienia znaki; kopiuje standardowe wejście na standardowe wyjście zastępując ciąg1 na ciąg2.

true - polecenia zwracające wartość prawda (TRUE - wartość 0).

unshar - rozpakowuje archiwa shar.

uptime - podaje obecny czas, ilość czasu jaka upłynęła od zalogowania, ilość zalogowanych użytkowników i średnie obciążenie systemu.

usleep

uudecode/uuencode - pakowanie/rozpakowywanie plików.

vi
pojęcie vima
vim - edytor tekstowy

vrfy

whatis - przeszukiwanie podręcznika systemowego (manuala).

who - jak w, ale daje mniej informacji.

whoami - informacje o obecnym użytkowniku; dobre przy potwornym kacu ;-)

yes

ypchfn

ypchsh

yppasswd

zcat - do odczytywania plików skompresowanych.

zforce - zmienia nazwy spakowanych plików.

Poleceń jest więcej, ale wydają mi się naprawdę archaiczne. Nie opisywałem tych, które albo wydały mi się oczywiste, albo których działania nie potrafię jasno wytłumaczyć. Dla mnie zawsze najważniejsze było, żeby wiedzieć, że coś istnieje i tak a tak się nazywa, to wtedy zawsze można poszukać z pomocą Google, jak ktoś naprawdę chce wiedzieć, bo jak nie wiadomo, że coś istnieje to nawet nie wiemy, że mamy to znaleźć. Zresztą ta ilość poleceń umieszczona w tym temacie też jest bardzo skromnie opisana.

Zablokowany