Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Dlaczego warto polubić linuksowy terminal

Wielu początkujących użytkowników narzeka na to, że w Linuksie trzeba korzystać z terminalu. Na forach podawane są dla wielu nic nie mówiące polecenia, wielu nowych użytkowników stara się unikać tego narzędzia jak tylko się da. Jeszcze inni twierdzą, że korzystanie z terminalu jest niewygodnie i w XXI w. wszystko powinno dać się wyklikać. Owszem da się, jednak ja chcę pokazać, że terminal to bardzo wygodne narzędzie, niekiedy wygodniejsze niż klikanie myszką. Oczywiście nie namawiam nikogo do korzystania z konsoli, jeśli wolisz klikać, twoja wola.

Ostatnimi czasy użytkownik Webnull pokazał, że w uniksowej konsoli można zrobić prawie wszystko, ja natomiast chcę pokazać rzeczy przydatne bardziej dla zwykłych użytkowników, rzeczy wykonywane na co dzień, które można sobie uprościć i nie są mocno związane z szeroko pojętą administracją systemami z rodziny Unix.

Czym tak naprawdę jest terminal? Terminal to inaczej emulator konsoli. Dlaczego emulator? Ponieważ użytkownik w trybie graficznym nie ma bezpośredniego dostępu do powłoki tekstowej i ten dostęp umożliwia terminal. Czym w takim razie jest konsola? Konsola oferuje bezpośredni dostęp do powłoki tekstowej, w której wykonywane są polecenia. Powłoka natomiast umożliwia komunikację użytkownika z jądrem systemu oraz zarządzanie systemem operacyjnym. Konsola umożliwia również dostęp do tak zwanych wirtualnych terminali. Użytkownik ma możliwość przełączania się pomiędzy wirtualnymi terminalami, w każdym z nich można zalogować się do powłoki systemowej. Na wirtualnym terminalu można uruchomić również Xserver, który odpowiada za tworzenie trybu graficznego oraz za obsługę wielu urządzeń, tj. jak myszka, klawiatura (obecnie tę funkcję przejął hal). Xserver w większości dystrybucji linuksowych uruchomiony jest na siódmym wirtualnym terminalu ale nic nie stoi na przeszkodzie, aby to zmienić, przykładem jest chociażby FreeBSD, w którym Xsverer uruchomiony jest domyślnie na dziewiątym wirtualnym terminalu.

Autodopełnienia

Pierwsza i jakże przydatna właściwość wielu powłok systemowych, to autodopełnienia nazw i poleceń. Autodopełnienie polega na uzupełnianie nazw plików czy poleceń po wciśnięciu klawisza TAB (tabulatora), o czym pisałem w poprzednim moim wpisie na podobny temat. Znacznie skraca to czas wykonywania poleceń, ponieważ skraca się czas ich wpisywania. Po prostu wpisując dane polecenie, wystarczy w trakcie jego wpisywania wcisnąć klawisz TAB, aby je uzupełnić. Opcja ta jest również przydatna, gdy czasami zapomni się nazwę polecenia, a zna się jego pierwszy człon.

Przykłady:

Przykłady będą wzięte raczej z codziennego użytkowania systemu bez jakichś administracyjnych wymysłów :) Jak wiadomo, system powinno się regularnie aktualizować, w zależności od dystrybucji robi się to codzienne albo na przykład raz w tygodniu. Z racji tego, że korzystam na co dzień z Ubuntu, na nim będę przedstawiał przykłady. Aktualizację przeprowadza się albo przy pomocy menedżera aktualizacji, albo przy pomocy Synaptica lub w terminalu. O ile sprawa z menedżerem aktualizacji jest prosta, ponieważ pojawia się tylko informacja o aktualizacji, o tyle w przypadku Synaptica sprawa jest już troszkę, może nie tyle skomplikowana, co czasochłonna, czyli

1. Należy uruchomić Synaptic, w tym celu trzeba przeklikać się przez menu;
2. Podać hasło administratora;
3. Kliknąć Odświeź;
4. Kliknąć Zaznacz wszystko do aktualizacji;
5. Zaakceptować zmiany.

W tym przypadku trzeba wykonać kilka czynności, w przypadku terminalu wystarczy tylko:

1. Uruchomić terminal lub go wywołać, jeśli korzysta się z terminalu typu drop-down, tj. Yakuake, Guake czy Tilda, więc czas uruchamiania terminalu nie wchodzi w grę, bo on już jest uruchomiony;
2. Wpisać dwa magiczne polecenia

sudo apt-get update sudo apt-get upgrade

lub tak naprawdę jedno

sudo apt-get update && sudo apt-get upgrade

Tutaj dochodzimy do sedna sprawy, autodopełniania. Polecenia wydaje się przydługawe ale gdy po sudo apt-g wciśnie się tabulator, powłoka dopełni polecenie sudo apt-get, natomiast, gdy po upd znowu wciśnie się tabulator, powłoka uzupełni polecenia do update i tym sposobem szybko wpisuje się polecenie sudo apt-get update, tak samo ciąg dalszy polecenia.

Czasami zdarza mi się i na pewno nie tylko mi, kopiować, przenosić lub usuwać jeden lub wiele plików z jednego miejsca w inne. Załóżmy, że chcę skopiować kilka plików z rozszerzeniem jpg i usunąć kilka innych o danym rozszerzeniu, załóżmy tar.bz2:

Kopiowanie wielu plików

cp /home/roobal/Pobrane/*.jpg /home/roobal/Obrazy/Tapety/Nowe/Fajne/

Usuwanie niechcianych plików

rm /home/roobal/Pobrane/*tar.bz2

W tym przykładzie dopełniane jest nie polecenie, a ścieżka do pliku. Gdy po poleceniu cp wpiszę /hom i wcisnę tabulator, powłoka uzupełni nazwę katalogu, gdy wcisnę po raz kolejny tabulator i jeśli jestem jedynym użytkownikiem systemu, automatycznie zostanie uzupełniona nazwa mojego katalogu domowego, czyli /home/roobal i tak dalej. Dodatkowo gdy podam mój katalog domowy, jako zmienna $HOME i wcisnę tabulator, powłoka automatycznie zamieni to na /home/roobal, więc nie muszę wpisywać całej ścieżki, a wystarczy jedynie:

cp $HOME/Pobrane/*.jpg $HOME/Obrazy/Tapety/Nowe/Fajne/

Gdybym chciał sprawdzić tylko listę plików w danym katalogu, chcąc to wyklikać, musiałbym:

1. Uruchomić menedżer plików;
2. Przejść do katalogu, który mnie interesuje;
3. Znaleźć w gąszczu plików te, które mnie interesują

Zajmuje to chwilkę czasu, więc tu z pomocą przychodzi polecenie ls lub dir, który wyświetli mi listę plików w kilka sekund. Przydatne jest również polecenie grep, dzięki któremu można otrzymać przefiltrowany wynik według wzorca.

Podpowiedzi

Powłoka może również użytkownikowi udzielać podpowiedzi nie tylko, dotyczących poleceń ale również nazw. Czasami zdarza się, że nie zna się pełnej nazwy pliku lub polecenia i wystarczy wówczas dwukrotnie wcisnąć tabulator, powłoka wyświetli dostępne podpowiedzi. Świetny przykład zaprezentował Docent na zeszłorocznym HotZlocie, kiedy prowadził sesję na temat Vyatta, polecam obejrzeć sobie relację, widać tam, jak Docent korzysta z autodopełnień oraz podpowiedzi oferowanych przez powłokę poleceń. Ktoś nawet w komentarzach zażartował, że Docent bardzo szybko pisze – to jest właśnie przykład na to, ile czasu można oszczędzić, korzystając z terminalu, klikanie myszką w panelu przeglądarkowym zajęłoby na pewno więcej czasu.

Przykład:

Przykładem niech będzie znów polecenie aktualizacji systemu, załóżmy, że nie pamiętam całego polecenia, wciskam dwukrotnie klawisz Tab i dostaję podpowiedzi

roobal@ubuntu:~$ sudo apt- apt-add-repository apt-cdrom apt-extracttemplates apt-get apt-mark apt-cache apt-config apt-ftparchive apt-key apt-sortpkgs roobal@ubuntu:~$ sudo apt-get up update upgrade roobal@ubuntu:~$ sudo apt-get up

i już mi się przypomina, jakie to miało być polecenie.

Aliasy

Powłoka Bash, która jest domyślną w wielu linuksowych dystrybucjach, umożliwia również definiowanie aliasów dla poleceń. Czymże są te aliasy? Alias, jak nazwa wskazuje, pozwala na definiowanie własnych poleceń i przypisywania poleceń systemowych do tych aliasów. Mówiąc po chłopsku, pod własnym poleceniem ukrywamy inne polecenia.

Kiedy to się przydaje? Wtedy, gdy dość często trzeba wykonywać dość długie, trudne do zapamiętania polecenia. Posłużę się tu znów przykładem aktualizacji systemu, czyli zamiast

sudo apt-get update sudo apt-get upgrade

lub

sudo apt-get update && sudo apt-get upgrade

można po prostu tak

aktualizuj

Swoją drogą, skoro system porozumiewa się z nami w języku polskim, to dlaczego użytkownik nie mógłby się porozumiewać z nim również w ojczystym języku :)

Takich aliasów można tworzyć do woli, zamiast

sudo apt-get install nazwa_programu

można wydać polecenie

instaluj nazwa_programu

Proste, a jakże użyteczne.

Skrypty powłoki

Aliasy to przydatna rzecz, jednak bardziej przydatną są skrypty powłoki. Właśnie dlatego warto znać chociażby podstawowe polecenia powłoki, aby móc napisać prosty skrypt. Oczywiście nie każdy jest administratorem czy programistą ale każdy może pisać nawet najprostsze skrypty, które mogą automatyzować pewne czynności, np. aktualizację systemu.

#!/bin/bash sudo apt-get update sudo apt-get upgrade -y

Taki skrypt można dodać do Crona i wykonywać, go automatycznie, np. codziennie, wówczas system będzie automatycznie aktualizowany o ustalonej porze. Aktualizacje i tak są logowane w /var/log/apt/history.log, więc zawsze można sprawdzić co i kiedy się aktualizowało.

Innym przykładem może być, np. zmiana adresu MAC karty sieciowej (MAC można zmienić jeszcze w inny sposób ale to jest tylko przykład).

#!/bin/bash sudo ifconfig eth0 down sudo ifconfig eth0 hw ether 00:00:00:00:00 sudo dhclient eth0

Polecenie sudo ifconfig eth0 up można pominąć, gdyż dhclient automatycznie podniesie (włączy) interfejs eth0. Zamiast wpisywać kilka poleceń ręcznie, wystarczy uruchomić skrypt i niekiedy zostanie on wykonany w kilka sekund. Dla przykładu, skrypt zmiany adres MAC (bez pobierania adresu IP z DHCP) wykonuje się dosłownie zaraz po wciśnięciu klawisza enter.

Jak widać, skrypty mogą pisać nawet najzwyklejsi użytkownicy ale można pisać i bardzie rozbudowane skrypty, o czym przekonał Was już Webnull.

Mam nadzieję, że większość z Was polubi pracę z terminalem albo przynajmniej nie będzie uważała tego narzędzia za zbędne i trudne w obsłudze, a przy okazji przekona się, jak wygodnie można pracować w systemie i nim zarządzać. 

linux inne

Komentarze

0 nowych
TestamenT   11 #1 12.01.2011 07:10

Warto również polubić Windowsowy wiersz poleceń. Przynajmniej ja z niego korzystam i to co napisał roobal też może się przydać w Windowsie. Choć nie wszystko bezpośrednio w cmd ale na pewno w MinGW Shell albo w Cygwin.

Może się komuś przyda jak przepisać skrypt wiersza poleceń na uniksową powłokę http://tldp.org/LDP/abs/html/dosbatch.html
Albo spis poleceń Linuksowych i ich Windowsowe odpowiedniki
http://jakilinux.org/administracja/cmdexe-dla-fanatykow-linuksa/

  #2 12.01.2011 08:38

"korzystanie z terminalu jest niewygodnie i w XXI w. wszystko powinno dać się wyklikać."
Jest wygodne i choć lubię bardziej klikać to jednak nie zawsze można polegać na graficznych nakładkach. Bo np. w Debianie testingu CO się wiesza, na PCLinux też nie zawsze działa synaptic. Faktycznie szybciej jest wklepać apt-get install ...

Jaahquubel_   12 #3 12.01.2011 12:22

Już myślałem, że ukradłeś mi temat, ale i Ty opisałeś sprawę nie po mojemu. :)
1. Akapit "Czym tak naprawdę jest terminal?" zniechęca do ciągu dalszego.
2. Za dużo na raz.
3. Błędy: nie "terminalu" i "jakiś", a "terminala" i "jakichś".

Taki mądry jestem, a jak przyjdzie co do czego, to mój wpis pewnie nie pójdzie na główną i tak się skończy. ;P

antiferno   7 #4 12.01.2011 13:47

wyczuwam aluzje do mojej osoby ;P

roobal   14 #5 12.01.2011 16:10

@Jaahquubel_

"Już myślałem, że ukradłeś mi temat, ale i Ty opisałeś sprawę nie po mojemu. :)"

Ten wpis napisałem tak naprawdę na początku grudnia 2010 ale dopiero wczoraj postanowiłem go opublikować ;)

"1. Akapit "Czym tak naprawdę jest terminal?" zniechęca do ciągu dalszego."

Być może ale nie każdy musi wiedzieć czym jest terminal, po to to wyjaśnienie, a jak kogoś to nie interesuje to omija tę część wpisu, po to są akapity. Ja gdy czytam czyjś wpis i w danym akapicie ktoś przynudza, to pomijam to, co mnie nie interesuje i czytam dalej.

"2. Za dużo na raz."

Miało być mniej ale... doszły przykłady i wyszło więcej ;) Tak poza tym, nie lubię się rozdrabniać.

"3. Błędy: nie "terminalu" i "jakiś", a "terminala" i "jakichś"."

Co do "jakiś" to widocznie literówka, zaraz to poprawię, natomiast jeśli chodzi o "terminalu", to sprawdzałem jeszcze specjalnie w słowniku, forma "terminalu" jest jak najbardziej poprawna.

@antiferno

Jeśli chodzi Tobie o mój wpis, to na pewno nie, nie znam Ciebie aż tak dobrze ;)

Pozdrawiam!

freeq52   8 #6 12.01.2011 16:34

Swego czasu rozmawiałem z zatwardziałym użytkownikiem Ubuntu, który nie wyobrażał sobie pracy na innym systemie, a tym bardziej na Windowsie, gdyż w darmowym Linuksie znalazł wszystko czego potrzebował i nie widzi sensu płacenia za Windę, która poniekąd go ogranicza. Z jednej strony się z nim zgodziłem, jednak po czasie rozmowa zeszła na tory właśnie terminala/u. Moim "argumentem" był właśnie fakt, że terminal ów jest niezwykle niewygodny dla użytkownika Windows, który przyzwyczajony jest do strony graficznej i raczej TYLKO do klikania w dane ikonki, niż wpisywania dziwnych komend, a także kompletnie niezrozumiały dla nowych użytkowników - co i jak wpisać, żeby uzyskać pożądany efekt - dla nowych to czarna magia. No i ten znajomy stwierdził, że owszem dla początkujących może to być problem, jednak jak już się pozna podstawy, to z czasem użytkownik powiedzmy takiego Ubuntu, nie wyobraża sobie nie korzystać z tak wygodnego narzędzia jakim jest terminal. Szczerze - patrząc na takie wpisy jak ten roobala, dochodzę do wniosku, że musi to być prawda - jeśli twierdzi tak całkiem spora ilość osób, to rzeczywiście poznanie kilkunastu komend może całkiem uprzyjemnić życie.

Bardzo dobre wpisy - podoba mi się, że w jakiś sposób zachęcasz do korzystania z systemów linuksowych, wyjaśniasz różnice i rzeczy mogące sprawić trudność. Nie wszyscy ich użytkownicy są tak tolerancyjni i pomocni - przykładem polskie forum Ubuntu...

kuba144   5 #7 12.01.2011 16:36

To ja jeszcze polecę program Wuake na windowsa.
Korzystam często gdy piszę coś w cpp, polecam. Bardzo wygodne rozwiązanie ;)

  #8 12.01.2011 17:15

Nie dziwcie się roobal siedzi już na Linuksie ok. 8 lat ;)

roobal   14 #9 12.01.2011 18:04

@wompermPL

No coś koło 7 lat dopiero będzie :P

Pozdrawiam!

Loreno   6 #10 12.01.2011 20:12

freeq52 - zgadzam się z opinią o "tolerancyjności" użytkowników polskiego forum Ubuntu... Nie każdy musi przecież wiedzieć od początku wszystko o Linuxie, ale niestety "eksperci" z tego forum nie zdają sobie z tego sprawy.

  #11 12.01.2011 22:04

Najbardziej istotną dla większości ludzi zaletą konsoli jest shutdown -ah now . Oczywiście należy dodać swojego użytkownika do odpowiedniego pliku.

robimy coś takiego:
polecenie; shutdown -ah now

Jaahquubel_   12 #12 12.01.2011 22:42

@roobal
Fakt, przepraszam, słownik podaje "terminalu".
Aczkolwiek dla mnie brzmi to dziwnie.

Vifon   5 #13 13.01.2011 00:42

A to nie jest przypadkiem tak?
"używam terminala" (dopełniacz)
"pracuję w terminalu" (narzędnik)

roobal   14 #14 13.01.2011 04:31

@vifon

Kogo? Czego? Używam, terminalu (dopełniacz) :)

Z kim? Z czym? Mam do czynienia, z terminalem (narzędnik) :)

Pozdrawiam!

  #15 13.01.2011 06:06

@wompernPL "Nie dziwcie się roobal siedzi już na Linuksie ok. 8 lat ;)"
Teraz chyba na Free BSD.

kwpolska   5 #16 13.01.2011 16:45

FreeBSD*
" && " można zastąpić ";" (spacje specjalnie, wiem, ze sie nie powinno dawac)
Ja posiadam alias 666-in-1:
* bez argumentów - aktualizuje czas, pacmana i clyde,
* --lock - odblokowuje bazę danych,
* --time - aktualizuje tylko czas,
* --noaur - pomija krok trzeci.

Chillout   7 #17 14.01.2011 22:49

roobal dzięki za ciekawy temat

roobal   14 #18 15.01.2011 21:44

@Chillout

Nie ma sprawy ;)

Pozdrawiam!

  #19 16.01.2011 15:09

Można zastąpić, ale czy wiesz, jaka jest między && a ; różnica? Bo jest znaczna.

soal   5 #20 16.01.2011 16:20

@kwpolska ' " && " można zastąpić ";" (spacje specjalnie, wiem, ze sie nie powinno dawac)'
Nie do końca jest to prawda - w tym przypadku akurat bardziej odpowiednie jest "&&". Dlaczego? Ponieważ drugie polecenie (apt-get upgrade) wykona się tylko wtedy, gdy pierwsze (apt-get update) zakończy swoje działanie sukcesem.
A raczej nie ma sensu wywoływać "upgrade'u" bez uprzedniej aktualizacji bazy dostępnych pakietów ;)

  #21 18.01.2011 13:32

Basha przede wszystkim należy zrozumieć, a potem się go uczyć. Sam często zaglądam do książki bo nie pamiętam podstawowych rzeczy.

- znak ; traktowany jest przez powłokę jako nowy wiersz.

Przykład:
{ cd Pulpit && ls > lista_plików ; gedit lista_plików ; }

- && (zaczerpnięte z języka C) jest operatorem, który nie dopuści do wykonania wszystkiego po && jeśli wszystko przed zwróci wartość różną od 0 (zmienna $? przechowuje tą wartość, a dokładnie kod zakończenia polecenia, programu, instrukcji, ogólnie wszystkiego)

ZALICZYLI='Kowalski Nowak'
echo "$ZALICZYLI" | grep -q 'roobal' \
&& echo 'Student roobal zaliczył zajęcia' \
|| echo 'Student roobal nie zaliczył zajęć'

;)

  #22 09.04.2011 20:51

"Terminal" - ja Go nienawidzę, proste wydawałoby się czynności (jak "klikanie", "przeciąganie" i takie tam), sprowadza do rangi najwyższego kunsztu i tajemnej wiedzy w zasadzie dostępnej głównie dla najwytrwalszych masochistów. Czy, żeby być dobrym kierowcą trzeba znać budowę silnika i wszystkich układów - bo bez tego ani rusz? Podobno dzięki terminalowi z Linux'em można zrobić "wszystko", ale ja w Windowsie też mogę zrobić, no prawie wszystko, choć niewiele się znam na DOS'owych poleceniach. Jak chcę coś zmienić, poszukam jakiegoś *.exe, ściągnę, zainstaluję, poklikam i zmieniam, ustawiam co i jak tylko chcę - nie muszę sobie tego sam od podstaw "programować".
Mam nadzieję, że w przyszłości powstanie coś takiego jak Linuxowy Windows, czy Windowsowy Linux, tzn funkcjonalny, łatwy i darmowy. ;-)

roobal   14 #23 23.04.2011 03:23

@PioKot

" Czy, żeby być dobrym kierowcą trzeba znać budowę silnika i wszystkich układów - bo bez tego ani rusz?"

Żeby być dobry kierowcom, to przejedź kilkaset kilometrów i to nie tylko w Polsce. Ja przejechałem na dzień dzisiejszy ponad 60 tys km w ciągu 3 lat zarówno za granicą, jak i w Polsce i dość bogate doświadczenia za kierownicą mam i to nie trzeba znać budowy samochodu czy silnika. Tak samo w Linuksie nie trzeba znać budowy jądra, dlatego w Linuksie nikt Cię nie zmusza do korzystania z konsoli/terminalu ja tylko opisuję dlaczego warto z nigo korzystać, nikomu niczego nie narzucam, piszę tylko dlaczego ja wolę klepać polecenia, niż klikać myszkę, więc nie pisz mi tu farmazonów, że ktoś do czegoś Cię zmusza, bo w Linuksie wszystko można wyklikać. W Linuksie można wyklikać nawet więcej, niż w Windowsie!

T

Pozdrawiam!

roobal   14 #24 23.04.2011 03:24

Miało być kierowcą, nie kierowcom :)

Pozdrawiam!

bohart   1 #25 06.09.2011 10:40

Witaj Robal bardzo rzeczowo opisałeś linuksowy terminal. Artykuł czytelny i trafia w sedno. Ja poszukuję informacji na temat usunięcia historii wydawanych poleceń w oknie poleceń wywołanym skrótem Alt+F2, rzecz jasna chodzi o linuksa. Jak skasować użyte wcześniej polecenia?

Pozdrawiam:
Bohart

  #26 02.08.2012 13:43

Do: bohart
Wprawdzie na porównywałem tego na innych dystrybucjach, ale w debianie, w folderze domowym użytkownika - nieważne czy jest to: /home/nazwa_uzytkownika, czy też: /root, znajduje się plik: .bash_history. Jeśli oczywiście korzystasz z basha to tam znajdziesz historię wpisywanych komend w terminalu i możesz edytować tą listę jak chcesz. Co do komendy, która by to w sposób automatyczny wykonywała nie słyszałem, ale można samemu napisać skryp, który będzie ten plik edytował.

  #27 06.11.2015 07:41

Próbuje przekonać się do tego systemu bo sam nie wiem dlaczego ciągnie mnie w jego struktury / ja jestem zachwycony terminalem linuxa/. Ale zawsze napotykam się na takie błędy czy to z kartą Ati i Nvidia jak screen terling. Odświeżanie obrazu podczas przeglądania filmów w przeglądarce czy programie nigdy nie dorówna obrazowi tego pod Windowsem.
Jak według Ciebie jest z tymi sterownikami, bo mnie wydaje się, że napisane dla Windowsa są dużo bardzie wydajniejsze i lepiej wykorzystują sprzęt, a może się mylę ? Nurtuje mnie to pytanie bo dla mnie istotną rzeczą jest aby kupiony sprzęt /jego podzespoły/ działały jak najwydajniej.
pozdrawiam