Komendy Bash

Pingwin ! .... aport !

Linux jest dostarczany z ogromną liczbą programów. Większość z nich można w jakiś sposób uruchomić z wiersza poleceń. Jeżeli chcecie się nauczyć linuxa to powłoka powinna stać się dla was podstawowym sposobem komunikacji z systemem.

W Linuxie komendy są wykonywane podobnie jak w DOSie. piszemy nazwę polecenia po czym podajemy parametry. Dodatkowo stosuje się bardzo często przekierowania strumieni i 'pajpsy' (pipes - też do strumieni). O tym jednak gdzie indziej.

Oto lista sporej części komend. Prawie wszystkie komendy linuxowe pisane są małymi literami (istotne). Jeżeli zaczynasz pracę z linuxem przeczytaj koniecznie. Jeśli już trochę wiesz zawsze możesz przejrzeć.

Komenda Opis Przykład
apropos Bardzo skuteczne w poszukiwaniu informacji. Jeżeli nie znamy jakiejś komendy a wiemy że np. kasuje pliki można szukać pomocy pisząc słowo kluczowe którego szukamy. apropos delete
bash Jeżeli jeszcze nie wiecie jest to powłoka systemu. Czyli takie coś co jest pomiędzy nami a systemem. Powłoka pozwala na wykonywanie pewnych wbudowanych poleceń (jak command.com). Wszelkie skrypty pisze się w różnych powłokach.  
cat Listuje na ekran (lub inne wyjście) zawartość podanego pliku. Można też używać go jako filtra. cat program4.cc
cd Cd jak w DOSie pozwala zmieniać katalogi. Wpisanie bez nazwy katalogu przeniesie nas do katalogu domowego (~/). Wpisanie nazwy katalogu ze znakiem '/' na początku przeniesie nas do odpowiedniego katalogu ale zaczynając od szczytu drzewa katalogów a nie od miejsca w którym się znajdujemy. Oczywiście by przejść katalog wyżej używamy '..'. cd ~/bin
cfv Polecenie do wyliczania sum kontrolnych plików by zapewnić ich spójność. Wyliczamy sumę na jednym komputerze kopiujemy na inny i wyliczamy na nowo. Pomaga tak samo przy kontroli kompresji itd. Rezulatem jest plik svf z listą sum kontrolnych. cfv -C distr_backup_200903171527.tar
cfv distr_backup_200903171527.tar
chmod Program do zmiany uprawnień plików i katalogów. składnia: chmod augo+-rwx plik

  • zmien komu +-(daj/zaberz) jakie_prawa na_jakich_plikach
  • a - all, u - user, g - group, o - others
  • + dodaj, - zabierz
  • r - odczyt, w - zapis, x - uruchamianie
  • W przypadku katalogów 'x' oznacza otwieranie katalogu, 'r' listowanie zawartości a 'w' tworzenie w nim plików.
  • -R mówi że wszystkie podkatalogi mają być zmienione tak samo
chmod -R go+r public_html
cp Kopiowanie pliku. Jak w DOSie, nazwa pliku kopiowanego nazwa kopii. cp ~/plik1.cc ~/gcc/plik1.cc
crontab Program do uruchamiania skryptów lub poleceń w określonym czasie. Nie ma dokładnego opisu bo wszystko jest w manualu. Ale można sporo. Ustalać dowolną ilość zadań. Można odpalać w określone dni roku, mies, tyg itd. Można na dokładną datę albo godzinę. Bardzo fajna zabawka. crontab -l
curl Bardzo przydatne narzędzie do pobierania stron WWW oraz plików z serwerów WWW. Przydatne nie dlatego że łatwo go używać do ściągania filmów i zdjęć ale dlatego że pozwala na testowanie połaczeń, poprawności skryptów na serwerze itd. Będziemy mogli zdefiniować protokół, nagłowki jak dozwolona kompresja czy cookies etc. Będziemy też widzieć wynik i łatwo napiszemy skrypt automatyzujący zadania z uzyciem curl. Pomoże nam to wykrycie przekierowań czy rotacyjny load balancing itd. curl -L -v localhost
date Program pozwala na uzyskanie aktualnej daty i czasu w zadanym formacie. Przydatny w skryptach logujących postęp czy backupach itd. Przykład 2002_05_26_20_31.txt date +'log_%Y_%m_%d_%H_%M.txt'
e2fsck Program do kontroli poprawności i naprawiania partycji. e2fsck -f /dev/hdc1
export Polecenie to zmienia wartości zmiennych środowiskowych. Możemy np. zmienić nasz język albo ścieżkę przeszukiwania. export ZMIENNA2='/home/konto/wartość'
fetchmail Program do ściągania poczty z innych serwerów na lokalne konto. fetchmail -k -p POP3 -u twoje_konto kki.net.pl
finger Finger jest programem pokazującym informacje o podanym użytkowniku. Podajemy nazwę konta i dostajemy opis. finger kowalski
ftp / ncftp
  • Ftp i ncftp są klientami protokołu FTP. Ftp jest prosty i popularny ale ncftp daje dużo większe możliwości. Pozwala na uzupełnianie nazw plików i katalogów (jak tab w shellu) i ściąga pliki interpretując maski (np * aby ściągnąć wszystko z danego katalogu)
  • popularne polecenia to :
    • open adres_hosta Łączy się
    • mode binary Przełącza w tryb binarny. Konieczne jeśli nie chcesz mieć totalnego syfu w plikach.
    • close Zamyka położenie.
    • cd Przechodzenie po katalogach.
    • get Pobranie pliku.
    • quit Zamyka program.
ftp kolos.math.uni.lodz.pl
g++ / gcc Kompilatory c i c++. Obowiązkowo :)) g++ nazwa_programu.cc
grep Program KONIECZNY do życia ! Pozwala na wyszukiwanie ciągów znaków w strumieniach które dostaje na wejście. Możemy np. wyszukać wiersze w których znajduje się dane słowo. Przeważnie stosowany jako filtr innych poleceń. w | grep root
host Zapytanie DNS o nazwe komputera. Jesli podamy jako następny parametr adres ip lub nomenowy serwera DNS to zapytanie bzie wysłane właśnie do niego. host www.onet.pl testowy.dns.lodz.pl
iconv Konwertowanie plikow między różnymi stronami kodowymi. iconv -f LATIN2 -t UTF-8 plik.txt > plik.txt.utf
ifconfig / ifup / ifdown Programy (skrypty) do konfigurowania i aktywowania interfejsów sieciowych. Ich znajomość jest absolutnie konieczna. Ifconfig jest uniwersalnym programem spotykanym w systemach unix, ifup oraz ifdown znajdują się tylko w niektórych dystrybucjach. ifup eth0
ipchains Kontrola reguł firewalla i routingu w starszych jądrach 2.4. Musisz być root'em. Gdy jakieś usługi sieciowe nie działają warto upewnić się że to nie firewall blokuje nam dostęp. ipchains -L
ipfwadm Kontrola reguł routingu i firewall w starych jądrach typu 2.2.  
iptables Kontrola reguł firewalla i routingu w jądrach 2.6 (i części 2.4). Musisz być root'em. Warto sprawdzić gdy sieć nie działa. iptables -L
iptraf Program do nadzorowania połączeń sieciowych. Musisz być rootem. iptraf
joe Niezły edytor tekstu, przeważnie dobrze radzi sobie z polskimi znakami bez względu na system. Jest też dość prosty w obsłudze. Ma raptem kilkanaście skrótów klawiszowych. joe plik.txt
kill Zabijanie procesów. Bardzo przydatne jeżeli nam się zwiesi jakaś konsola albo jakiś program. Można też podawać inne sygnały. Jako parametr trzeba podać numer pid procesu (znajdziesz go poleceniami top oraz ps)

  • -9 zabicie procesu
  • -11 jeśli proces przechwytuje błędy może się oprzeć -9. Sygnał -11 zawsze działa ponieważ symuluje wykonanie przez proces naruszenia ochrony pamięci. System sam wywala takie procesy.
  • -15 zamraża proces (nie każdy potrafi potem działać)
  • -19 odmraża zamrożony proces.
  • -HUP niektóre programy jak demony można w taki sposób zabić i jednocześnie zmusić do restartu
kill -HUP NUMER_PID_PROCESU
less Wyświetla swoje wejście po jednym ekranie na raz. Działa jak /p w DOSie. Spacja i PgDown przewijają w dół. Strzałki też działają. Najczęściej stosuje się go jako filtr dla innych poleceń. cat program2.cc | less
lilo Program konfiguracyjny loadera systemu. Pozwala też na instalację zaktualizowanego MBR. Ostrożnie!!! lilo -q
ln Komenda do tworzenia linkow w systemie plokow. parametr -s mowi aby tworzyl linki symboliczne. ln -s /tmp ~/skrot_do_tmp
logout / exit Pozwala na właściwe wylogowanie się i zamknięcie sesji. exit
ls Komenda ta służy do listowania zawartości katalogów. Jest bardzo często stosowana więc nie sposób jej pominąć. Najlepiej używać z parametrami -a (wszystko) lub -l (ze szczegółami). ls -l
lsdev Pokazuje jakie są wykryte urządzenia w systemie i czy są do nich przypisane jakieś zasoby. lsdev
lynx Tekstowa przeglądarka internetowa. Wątpliwa przyjemność ale nieraz trzeba więc warto umieć na wszelki wypadek. Bardzo popularna. lynx kolos.math.uni.lodz.pl
man
  • Man to nie żaden "Yo Man !" ani nic takiego. "man" to jeden z najpożyteczniejszych programów w codziennej pracy początkującego linuxowca. Za jego pomocą możemy wyświetlać pliki pomocy wszelkich programów i komend. Nawiasem mówiąc jest to bardzo dobrze zrobione.
  • Możemy wyświetlać różne strony w zależności od tego ile ich jest. Jeżeli zobaczysz gdzieś żę opis komendy jest komenda "w" ma "manuala" w "w(1)" to znaczy że plik pomocy komendy "w" jest dostępny komendą man 1 w. Jeżeli program posiada tylko jeden plik pomocy to nawet pomijając cyfrę "1" pokaże się dana strona pomocy.
  • Kultura sieciowa nakazuje uważne czytanie manuali. Jeżeli macie już choć troszkę wprawy starajcie się najpierw przeczytać a dopiero potem pytać. W przeciwnym wypadku możecie dostać odpowiedź "RTFM" Read The Fucking Manual albo "LOL" Lough Out Loud. Jeżeli musicie już pytać o proste rzeczy starajcie się nie przeszkadzać innym i być kulturalnym.
  • Gdy już otworzymy manuala widać od razu że komendy są opisane logicznie. W osobnych sekcjach są parametry uruchamiania w osobnych komendy wewnętrzne itd. Aby wyszukiwać ciągu znaków piszemy "/ciąg_znaków". Potem po wciśnięciu entera podświetla nam znalezione ciągi. Jeżeli chcemy przesunąć ekran do następnego wystąpienia ciągu naciskamy "n".
man man
mc Uruchamia menadżera plików. Praktycznie identyczny do Norton Comandera. By mieć polskie znaki należy w opcjach-wyświetlanie wybrać pełne 8bit dla wpisywania i wyświetlania. Bardzo pomocne narzędzie ale może utrudniać nauczenie się czystego basha i sprawnego operowania komendami. Dlatego jeśli chcesz się nauczyć dobrze linuxa staraj się szybko ograniczyć korzystanie z tej aplikacji. mc
md5sum Polecenie do wyliczania sum kontrolnych plików by zapewnić ich spójność. Wyliczamy sumę na jednym komputerze kopiujemy na inny i wyliczamy na nowo. md5 distr_backup_200903171527.tar
mesg Pozwala na zablokowanie otrzymywania komunikatów od innych użytkowników. Jeżeli na wasze terminale zaczną wywalać się setki stron jakiegoś syfu może to komunikaty od innych userów ? wykonanie cat spakowany_plik_5MB| write nie_lubiany_user sprawia że terminal wariuje a użytkownik nie bardzo wie o co idzie. Może Ctrl+c albo Ctrl+l ale jeżeli mało co wie pomyśli że system nawala. mesg n
mkdir Tworzenie katalogów. Podaj nazwę nowego katalogu. mkdir katalog2
mount Program do montowania systemów plików. W linuxie każda dyskietka, CD czy partycja dosowa to system plików i by można było z niego korzystać należy go zamontować gdzieś w drzewie katalogów /. Montować można tylko w pustym katalogu. By można było montować trzeba mieć przeważnie prawa roota. mount /dev/cdrom /mnt/dir_cdromu
mysql Klient bazy danych MySQL. Nie jest to może jakaś ekstrawagancka baza ale do pracy z PHP jest super ! Dla tego można ją polecać. Jest też wyjątkowo szybka i prosta w instalacji i obsłudze. mysql -u moje_konto -h localhost -p
mv Przenosi wybrany plik w określone miejsce. Może też zmieniać nazwę. mv plik2.cc /gcc/plik3.cc
netstat Pokazuje aktualne połączenia sieciowe i socketowe. Taka prostsza wersja iptrafa. Bardzo pomocne przy badaniu jakie programy łaczą się z jakimi serwerami i na jakich portach. netstat -n
passwd Pozwala zmieniać hasła użytkowników. Jeśli jesteś rootem możesz podać nazwę konta któremu chcesz zmienić hasło. Zwykli userzy mogą zmieniać hasła tylko sobie. passwd
ping Program wysyła komunikat Echo Request protokołem ICMP aby zbadać czy podany komputer jest dostępny. Jeżeli nie ma odpowiedzi może to oznaczać że komputer nie jest dostępny lub celowo zablokował odpowiadanie na takie żądania. ping kolos.math.uni.lodz.pl
ps Pokazuje listę działających procesów. Można wyświetlać wedle użytkowników albo tylko swoje. ps -aux |grep user23
psql Klient bazy PostgreSQL. Bardzo fajna baza. Szersza od Mysql. Ma trochę inne zasady działania. Koniecznie trzeba poznać. psql
pstree Podobnie jak ps pokazuje procesy ale w postaci drzewka. Ukrywa rozwidlone programy i śmieci. Niestety nie instalowane domyślnie w wielu systemach. pstree
pwd Wyswietla sciezke do aktualnego katalogu. pwd
rm Bardzo niebezpieczne ! Kasuje pliki. rm zbedny_plik.syf
rmdir Kasowanie katalogów. Też niebezpieczne. rmdir durny_katalog
screen
  • Screen to kolejne bardzo fajne i nieznane dosowcom narzędzie. Pozwala na otwieranie wirtualnych połączeń pracujących w tle. Chodzi o to że jeżeli mamy do wykonania wielki skrypt albo kompiluje na się program to lepiej pracować w screenie. Wtedy jeżeli połączenie zostanie zerwane albo będziemy musieli się rozłączyć nie zakłuci to pracy naszego procesu. Można mieć otwartych kilka screenów jednocześnie ale może to prowadzić do bałaganu.
  • Otwieramy screena poleceniem screen.
  • Aby przesunąć screena i wszelkie procesy z nim związane do tła należy wcisnąć Ctrl+a (naciskamy to przed wszelkimi skrótami) po czym Ctrl+d.
  • Ctrl+a po czym DD wylogowuje nas z serwera pozostawiając screena w tle.
  • Aby ponownie przywołać sesję z tła należy wpisać screen -r. Jeżeli posiadamy tylko jedną sesję screena to zostaniemy automatycznie na nią przełączeni. Jeżeli jest ich kilka wtedy musimy wybrać numer procesu (wyświetlą się). Przykładowo screen -r 2346
  • Aby zabić aktualne okno screena możemy się wylogować pisząc exit lub Ctrl+a i potem k.
screen
sed Bardzo potężne narzędzie do przetwarzania strumieni (textu). Pozwala na wyszukiwanie, wycinanie, wyszukaj-zastąp itd. Przykład zastąpi wszystkie wystąpienia nazwy użytkownika jego numerem id. Składnia tego przykładu jest następująca s oraz g na końcach argumentu to operatory mówiące że chcemy zastąpić wszystkie wystąpienia. Teks pomiędzy pierwszą parą ukośników to wyrażenie regularne. Wszystko co zostanie dopasowane będzie usunięte i zastąpione ciągiem 3245. cat plik | sed 's/jakieskonto/3245/g' | dalszepolecenia
seq Wypisuje liczby z podanego zakresu. Każda liczba wypisana jest w osobnym wierszu. Przydatne do tworzenia pętli w bash i auto numerowania. seq 10
for x in `seq 10`; do echo "wiersz ${x}"; done;
sort Sortuje wiersze które otrzyma na wejściu. Często stosuje się go jako filtr wyjścia innych programów. cat /etc/password |sort
split Dzieli pliki na mniejsze kawałki. Jeśli przesyłam 600MB warto nieraz podzielić to na 20-50MB kawałki na wypadek przerwania transmisji. To samo tyczy sie obrazow DVD ktore nie mieszcza sie w pojedynczy plik FAT16 itd. Sklejamy pliki komenda cat plik1 >> out etc. Pod Windows sklejic mozemy za pomoca Total Commanders split -b 10000000 plik
ssh Nawiązuje zdalną sesję korzystając z szyfrowanego połączenia. Koniecznie musisz go stosować. Są też wersje dla windows (putty, putty2, winssh). ssh kolos.math.uni.lodz.pl
strace Bardzo ciekawe narzędize, pozwala na podsłuchiwanie komunikacji pomiędzy programem a jądrem systemu linux. Program wysyłając pakiety siecią lub wczytujący dane z klawiatury czy dysku wykonuje wywołania systemowe. Te wywołania są miejscem styku systemu z programami użytkownika. Nasłuchując wywołan wykryjemy powody dla których program umiera (nieraz log nie wystarczy a strace powie nam od razu ze nie ma uprawnień do pliku konfiguracji itd). Strace pozwala tez na debugowanie oraz poprawe wydajności aplikacji. Widząc operacje wejścia wyjścia zaważa się nieraz nieefektywność algorytmów itd. strace -p pid_dzialajacego_programu
su Pozwala na chwilowe "przelogowanie" się na inne konto lub wykonanie pojedynczej komendy z prawami danego usera. su kowalik
tail / head Wybiera początkowe lub końcowe znaki/wiersze z podanego wejścia. Dobre do filtrowania. top -n 1 |head -n 8
talk Talk pozwala na komunikowanie się userów. Gdy wpiszemy talk user3 user3 dostanie powiadomienie że zapraszamy go do talka (jeżeli nie ma mesg n). Jeśli odpisze talk nasza_nazwa zostanie nawiązane połączenie (coś jak tekstowy chat). Zamykamy Ctrl+c. talk jurek
tar Program pakuje (nie kompresuje) podane pliki i katalogi do jednego pliku. Jest to super gdy chcemy wiele plików połączyć by łatwiej transportować albo archiwizować. Standardowo przepuszcza się taki plik jeszcze przez zipa żeby go skompresować. Tar potrafi zapisywać też informacje o uprawnieniach. Trzeba uważać żeby sobie nie zamienić kolejnością nazw i nie skasować cennych plików. Raz o trzeciej rano tak sobie zrobiłem :(. tar -kcf plik.tar katalog
telnet Nawiązuje nie szyfrowane połączenie ze zdalnym komputerem. Można przez niego pracować zdalnie. telnet kolos.math.uni.lodz.pl
top Top pokazuje procesy o maksymalnej ilości pochłanianych zasobów. Można sortować wedle ramu, procesora itd. top -n 1
touch Tworzy nowy plik o podanej nazwie. touch program_3.cc
uniq Usuwa z wejścia wszystkie powtarzające się wiersze. Wejście musi być posortowane tak aby powtarzające się wiersze następowały zaraz po sobie. cat plik | sort | uniq
uuencode / uudecode Programik kodujący i dekodujący pliki tak by można je przesyłać pocztą. Jeżeli popsuje wam się list z załącznikiem albo nie ma klienta pocztowego a trzeba sendmailem posłać list to można tak go zakodować. (pliki nie mogą być przesyłane pocztą normalnie bo poczta nie przesyła danych pełnym 8bitowym zapisem. Tak więc by zapisać np. kod binarny E4 musi on być przerobiony na litery). uuencode wejściowy wyjściowy
vim / vi
  • Vim jest najpopularniejszym edytorem tekstu pod linuxa. Jednak konwencja pracy jest tu maksymalnie nie intuicyjna i nie ma nic wspólnego z dosem czy windowsem. Aby edytować plik trzeba podać jego nazwę przy wywołaniu vima. Apotem to już jest magia i setki zaklęć ;- )
  • Vim jest rozszerzeniem vi. Może i vi jest bardziej rozpowszechniony ale na pewno nie jest prostszy !
  • Vim posiada dwa tryby pracy: wpisywanie i komendy. Aby pisać tekst należy wcisnąć klawisz insert lub i. Aby wyjść do trybu komend należy wcisnąć ESC.
  • W trybie pisania po prostu piszemy tekst i nie ma tu niczego dziwnego.
  • W trybie komend jest maxymalnie dużo poleceń ! oto kilka z nich.
    • :q wyjście
    • :w zapisz
    • :!q wyjście bez zapisu
    • :wq wyjście z zapisem
    • dd skasowanie wiersz
    • 3dd skasowanie 3 wierszy lub innej liczby zależy co podasz
    • v rozpoczęcie bloku do kopiowania
    • y koniec bloku do kopiowania
    • p wkleja kopię bloku
vim program2.cc
vlock Blokuje dany terminal by nie dało się niczego zrobić nie znając hasła usera albo roota. Nawet gdy musimy wyjść na 3 minuty warto to zrobić. Wpisanie rm -R * nie zajmie złośliwemu "człowiekowi" zbyt dużo czasu. Widziałem też jak kolega pisząc list zostawił konsolę. Inny (i to administrator!!!!) wpisał na zostawionej konsoli rm -R * i zostawił ją. Wszystko by było ok ale user po powrocie nacisnął najpierw enter (nie zauważył że tamten przerwał pisanie listu i napisał komendę w bashu) i skasował sobie większość katalogu domowego. To bardzo ponury żart ale pilnujcie się !!!! vlock
w Wyświetla aktualnie zalogowanych użytkowników. w
wget Coś w rodzaju teleporta pro. Programik pozwala w zależności od wywołania ściągać całe serwisy internetowe, wraz z grafiką i wszystkimi linkami. Można określić ile linków zewnętrznych w głąb ma ściągać. Dobry do ściągania pojedynczych plików. Super ! wget kolos.math.uni.lodz.pl
write Wysyła komunikaty na konsole usera. Patrz na opis polecenia mesg. cat plik_wiadomości | write user

Comments

Post new comment

Image CAPTCHA

About the author

Artur Ejsmont

Hi, my name is Artur Ejsmont,
welcome to my blog.

I am a passionate software engineer living in Sydney and working for Yahoo! Drop me a line or leave a comment.

Enjoy!