Jeśli szukasz wersję w języku angielsku - README.md.
-
Z GUI do Terminala:
-
Z terminala GUI:
ls xdg-open .
-
Przejrzyj zawartość katalogu $HOME, z pomocą ls :
# ls # $HOME stores # path to your home directory ls $HOME echo $HOME
-
Surwiwal 1 - gdzie jestem? Dlaczego moje komendy zwracają
No such file or directory
alboPermission denided
? Dwie komendy pomogą Tobie:pwd ls
-
Surwiwal 2 - jak wrócić do swojego katalogu domowego?
# glowny katalog w linuxie to: / , na windowsie byłby to C: cd / pwd # szybki powrów do katalogu domowego cd # zobaczmy czy to jest prawda: pwd # i jescze raz cd / pwd ls # ~ oznacza katalog domowy # czyli zmien katalog na ~ cd ~
-
Przygotowanie do pracy z katalogami, zainstalujmy
tree
:sudo apt-get update sudo apt install tree
-
Praca z kalalogami:
mkdir poland cd poland mkdir cities cd cities mkdir gdansk ls mkdir warszawa mkdir wroclaw mkdir krakow ls cd .. pwd cd .. tree tree ../poland
Po uruchmieniu
tree
powinieneś zobaczyć:poland \- cities/ |- gdansk/ |- warszawa/ |- wroclaw/ \- krakow/
-
Przechodzenie po katalogach z
cd ŚCIEŻKA
:# go in pwd cd cities/krakow pwd # go out cd ../..
-
Zauważ:
# relatywna o miejsca gdzie jesteś ls cities # absolutna/pełna ścieżka ls /home/ ls ~
-
Dodaj katalog
villages
i podkatalogi dla przykładowych wsi w Polsce:poland |- cities/ | |- gdansk/ | |- krakow/ | |- warszawa/ | \- wroclaw/ | \- villages/ |- nowawies \- zytno
-
Surwival 2 -
vim
/vi
:-
Zainstaluj vim:
sudo apt-get install vim
-
wrócmy spowrotem do katalogu domowego:
cd
-
czas uruchomić
vim
:vim learning_vim.txt
-
Jak wyjść, jeśli niczego nie dodaliśmy:
- ESC ESC
- :q
- ENTER
-
iii! Uuuu.. jednak coś wpisałem (insert mode:
ESC ESC i
), chce po prostu wyjść bez zapisywania:- ESC ESC
- :q!
- ENTER
-
ok. Jestem gotowa, jedem gotowy, aby zmienić plik:
-
vim learning_vim.txt
-
ESC ESC
-
i
-
Please add sth, e.g.,
Uwielbiam vim!
-
ESC ESC
-
:wq
-
ENTER
-
Zweryfikujmy czy zapisaliśmy poprawnie plik:
cat learning_vim.txt
-
-
-
Surwiwal 4 -
emacs
/nano
:# jak wyzej nano learning_nano.txt
Zauważ,
^
znaczy CTL/CONTROL. -
Jeśli szukasz jakiegoś prostego edytora podobnego do Notebook na Windowsie:
gedit p.txt
- Jeśli komenda nie wypisuje niczego na ekran, znaczy się, że wszystko się udało
- Korzystaj z auto uzupełninia:
TAB
TAB
-
Wrócmy spowrotem do naszego katalogu domowego, utwórzmy folder
workspace
i przejdźmy do niego:cd mkdir workspace cd workspace
-
Pliki tworzymy za pomocą
touch
(to remember it), w tym ćwiczeniu skorzystamy zecho
, aby dodać zawartość:touch myfile.txt # tworzymy pusty plik echo "Ubuntu 18.04" > myfile.txt echo "Ubuntu 20.04" >> myfile.txt cat myfile.txt echo "Mint" >> myfile.txt echo "Debian" >> myfile.txt echo "Redhat" >> myfile.txt echo "Linux" >> myfile.txt cat myfile.txt
-
Oczywiśćie, moglibyśmy skorzystać z atoma:
atom myfile.txt
Jak zainstalować
atom
, google pomoże, jeśli nie chcesz wyszukiwać w tym momencie tutaj znajdziesz właściwą komendę snapcraft.io/install/atom/ubuntu. -
grep
jest jadną z najczęściej wykorzystywaną komendą w CLI oraz skryptach. Zauważ grep domyślnie zwraca uwagę na duże i małe litery:grep Linux myfile.txt grep Ubuntu myfile.txt # compare with: grep ubuntu myfile.txt
grep -i ubuntu myfile.txt
-
Często używany
grep
do analizy logów:grep -i Error /var/log/*log # alternative to `wc -l` grep -c -i Error /var/log/*log
Zadanie: na zasadzie analogi, wyszukaj swojego użytkownika (komenda
whoami
przypomni Ci jako kto jesteś zalogowana) w /etc/passwd. -
Jako kopiować pliki, z pomocą przychodzi
cp
:cp myfile.txt myfile2.txt ls # możesz wykonać `grep` # na wielu plikach jednoczesnie # poniżej - wszystkie pliki konczace sie # na `.txt` grep Linux *.txt
-
Jak prenieść plik plik z jednego katalogu do drugiego?
mv
- również służy do zmiany nazwy plików lub katalogów.mkdir mydirectory mv myfile2.txt mydirectory ls mydirectory tree ../ # let's move the file back # to the current directory `.` mv mydirectory/myfile2.txt .
-
mv
służy również do zmiany nazwy foderów oraz plików, wróćmy do naszych katalogów o Polsce i zmienmy nazwę naszego katalogucities
namiasta
:cd ~ cd poland ls # sb asked us to use Polish word for cities # - miasta mv cities miasta ls tree ../poland
-
A co jeśli musimy mieć i po PL jak i ENG? Przekopijmy zawartość
miasta
:cp -r miasta cities cd .. tree poland
Powineneś zobaczyć zarówno
miasta
jak icities
. -
Wrócmy do naszego katalogu, gdzie mieliśmy pliki z nazwami dystrybucji linuxa, aby zobaczyć jak skasować plik z pomocą
rm
:cd cd workspace rm myfile2.txt
-
... a teraz spowrotem do katalogów z miastami, aby zobaczyć jak kasujemy katalogi (puste oraz z zawartością):
cd ls poland rmdir poland/cities/warszawa # czy to zadziała? rmdir poland/cities # nie? z pomocą przychodzi rm -r rm -r poland/cities
-
Utwórz następujące katalogi i pliki, pamiętaj o komendzie tree (
*.txt
są plikami):biologia/ |- drzewa | |- lisciaste.txt | \- iglaste.txt | \- zwierzeta |- drapiezniki | \- koty.txt \- roslinozerne \- rogate.txt
Po utworzeniu.
- Przenieś
koty.txt
irogate.txt
bezpośrednio do katalogu zwierzeta, - Następnie przekopiuj iglaste.txt do katalogu domowego (sprawdź czy wykonałeś poprawenie z
ls ~
), - Skasuj katalog
zwierzeta
, - Skasuj katalog
biologia
.
- Przenieś
-
W Linuxie, mamy ukryte pliki. Nazwy ukrytych plików zaczynają się od
.
:cd ls -a ls -la ls -la | grep bash
-
Zmienne środowiskowe wykorzystujemy bardzo często w automatyzacjach i korzysta z nich wiele komend i programów na Linuxie:
printenv printenv | grep HOME= printenv | grep LANG= echo $HOME
-
Wypisanie zmiannych środowiskowych:
# porownaj: echo "$HOME" echo '$HOME' # zawsze w skryptach # zmienne srodowiskowe umieszczaj # miedzy { i } echo "${HOME}"
-
Zmienne środowiskowe i
echo
:cd ~ mkdir tmp cd tmp echo "$HOME" > home.txt cat home.txt
-
Zmienne środowiskowe i
$HOME/.bashrc
, dodadanie powitania oraz naszej własnej zmiennej środowiskowej:atom $HOME/.bashrc
Na samym końcu
~/.bashrc
dodajmy powitanie oraz zmienną środowiskową i zapisz plik:echo "Hi ${USER}!" export MY_PHONE=9999
Po uruchomienou bash lub otworzenie nowego okna terminalu, zobaczysz powitania i będzie dostępna nowa zmienna:
# notice TAB TAB works echo $MY_PHONE
-
Ad hoc definicja zmiennych środowiskowych:
export SHOP_USER=natalia echo "$SHOP_USER"
-
Create your first bash script
my_script.sh
with the following content:#!/bin/bash echo "Hi ${USER}! Nice to meet you!" echo "Your home directory is ${HOME}" echo "Your configured language is ${LANG}"
and run it:
bash my_script.sh
Pamiętam, że gdzieś utworzyłem plik lub katalog ale nie wiem gdzie dokładnie.
# znajdzmy wszystkie pliki lub katalogi
# zakonczone na txt
cd
find . -iname '*.txt'
# a jednak interesują m
# mnie tylko pliki
find . -iname '*.txt' -type f
# find in the home directory `~`
# a directory `-type d`
# with name `poland`
find ~ -iname poland -type d
-
You got an export from your ecommerce shop
koszyk1.txt
:mleko,10,1zl chleb,1,4zl
Używając
cut
:cut -d',' -f1 koszyk1.txt cat koszyk1.txt | cut -d',' -f1 # zauważ: cut --delimiter=',' --fiels=1 koszyk.txt # oraz cut -d',' -f3,1 koszyk1.txt
wypisz na ekran:
1zl 4zl
Wykorzystując nabytą wiedzę:
- Wyświetl nazwy użytkowników z
/etc/passwd
(pierwsza kolumna) - Wyciągniej miesiąc i dzień
/var/log/syslog
- Wyciągniej miesiąc i dzień oraz godzinę (bez minut)
/var/log/syslog
- Wyświetl nazwy użytkowników z
-
Przeglądasz logi i znajdujesz zrzut z obiektu reprezentującego produkt do pliku
koszyk2.txt
:product=mleko price=1 product=chleb price=4
Korzystając z pomocy
cut
orazpaste
, utwórz plikkoszyk2b.txt
z danymi w następującym formacie:mleko 1 chleb 4
Wskazówka:
cat koszyk2.txt | paste - -
-
Zastępowanie łańcuchów znaków, masz plik
koszyk3.txt
z treścią:product_category: mleczne
Zauważasz, że mamy tutaj użytą nazwę kategorii produktu zamiast jego kodu. Twoim zadaniem jest zastopienie
mleczne
identyfikatorem kategoriiM0
:product_category: M0
Wskazówka:
sed 's/category/cat/g'
-
tr
jest bardzo pomocne kiedy musimy zamienić pojedyńczą literę:cat koszyk3.txt | tr ':' '='
albo usunąć:
cat koszyk3.txt | tr -d ':'
Na przykład, jeśli użyjemy jeszcze
xargs
to możemy wygenerować URLe do sklepu:echo "product_cat=M0" | xargs -I {} echo "https://example.com/search?{}"
-
Sprawdź co robią komendy
head
,tail
orazless
:less /var/log/syslog tail /var/log/syslog head /var/log/syslog head -n 10 /var/log/syslog
-
Mamy następujący eksport z naszego sklepu (zauważ
*.txt
są plikami):basket/ |- chocolates/ | \- products.txt | wedel,2 | goplana,3 | \- dairy/ \- products.txt mlekovita,5 zimnemleko,4
-
Za pomocą jednej komendy wypisz ceny każdego z produktów:
2 3 5 4
-
Teraz zsumuj, żebyśmy mieli wartość całego koszyka (poszukaj rozwiązania na stackoverflow/google):
14
Zauważ, jak łatwo można znaleźć rozwiązanie dla nawet złożonych problemów w bashu.
-