Podstawowe operacje w systemach Linux dla początkujących

Poradnik ten jest rozwinięciem podstaw zawartych w artykule „Podstawowe komendy w systemach Linux„. Obydwa poradniki przydadzą się jeśli dopiero zaczynasz przygodę z systemami Linux. Poruszę to kilka podstawowych operacji na plikach, które są miłe dla początkujących, a zarazem przydatne całe późniejsze linuksowe życie.
Jeżeli znasz podstawy z wyżej wspomnianego poradnika i potrafisz zalogować się zdalnie do konsoli poleceń lub masz maszynę przed sobą. Zaczynamy.
Pobieramy plik z sieci.
I od razu podajemy nazwę pod jaką ma być pobrany.
wget -O plik.txt https://wordpress.org/plugins/readme.txt
[root@srv1 temp]# wget -O plik.txt https://wordpress.org/plugins/readme.txt --2021-05-24 10:50:34-- https://wordpress.org/plugins/readme.txt Resolving wordpress.org (wordpress.org)... 198.143.164.252 Connecting to wordpress.org (wordpress.org)|198.143.164.252|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/plain] Saving to: ‘plik.txt’ plik.txt [ <=> ] 3.39K --.-KB/s in 0s 2021-05-24 10:50:35 (23.8 MB/s) - ‘plik.txt’ saved [3469] [root@srv1 temp]# ls -l total 4 -rw-r--r-- 1 root root 3469 May 24 10:50 plik.txt [root@srv1 temp]#
Head and tail – czyli głowa i ogon.
Służy do wyświetlania pierwszych i ostatnich (domyślnie dziesięciu) linijek zawartości pliku. Parametr -n służy do określenia ilości linii do wyświetlenia, bez niego wartością domyślna jest 10.
head -n1 plik.txt
[root@srv1 temp]# head -n1 plik.txt === Plugin Name === [root@srv1 temp]#
tail -n1 plik.txt
[root@srv1 temp]# tail -n1 plik.txt `<?php code(); // goes in backticks ?>` [root@srv1 temp]#
[root@srv1 temp]# tail -n3 plik.txt > Asterisks for *emphasis*. Double it up for **strong**. `<?php code(); // goes in backticks ?>` [root@srv1 temp]#
Wyodrębnij linie z pliku i zapisz jako.
Wyodrębnij włącznie z linią 3 … i leć, aż do linii 10 z pliku plik.txt i zapisz pod nazwą „8linii.txt”.
sed -n 3,10p plik.txt > 8linii.txt
[root@srv1 temp]# sed -n 3,10p plik.txt > 8linii.txt [root@srv1 temp]# ls -l total 8 -rw-r--r-- 1 root root 209 May 24 11:00 8linii.txt -rw-r--r-- 1 root root 3469 May 24 10:50 plik.txt [root@srv1 temp]# cat 8linii.txt Donate link: https://example.com/ Tags: comments, spam Requires at least: 4.7 Tested up to: 5.4 Stable tag: 4.3 Requires PHP: 7.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Znajdź plik w katalogu
Szukamy tylko w katalogu /root/ pliku o nazwie zaczynającej się od frazy „8li-„.
[root@srv1 temp]# pwd /root/temp [root@srv1 temp]# cd /root/ [root@srv1 ~]# find /root/ -name 8li* /root/temp/8linii.txt
Znajdź katalog
Wskazujemy jako miejsce poszukiwania od katalogu /root/ wgłąb oraz dodajemy parametr „-type d” wskazujący iż chodzi nam tym razem o katalog, a nie plik, ponadto zaczynający się od frazy „te-„. Tak żeby złapać nazwą katalog /temp/.
[root@srv1 ~]# find /root/ -type d -name te* /root/temp
Przeszukaj cały dysk w poszukiwaniu pliku.
Spróbujmy namierzyć nasz plik 8linii.txt. Poszukiwania zaczynamy od głównej ścieżki systemowej.
find / -name 8linii.txt
[root@srv1 /]# find / -name 8linii.txt ./root/temp/8linii.txt [root@srv1 /]#
Przeszukaj pliki tekstowe w poszukiwaniu frazy.
Wiemy, że w naszych plikach z rozszerzeniem .txt powinna wystąpić fraza „Requires PHP” i takiej szukamy.
cat *.txt | grep „Requires PHP”
[root@srv1 temp]# cat *.txt | grep "Requires PHP" Requires PHP: 7.0 Requires PHP: 7.0 [root@srv1 temp]#
lub można inaczej, bardziej efektywnie:
Szukaj wyrazu w plikach katalogu.
Użyjemy grep do przeszukiwania pliku pod kątem występowania danego wyrazu w danym katalogu:
grep -ir <wyraz> <ktalog>
[root@srv1 temp]# grep -ir Requires . ./plik.txt:Requires at least: 4.7 ./plik.txt:Requires PHP: 7.0 ./plik.txt:* "Requires at least" is the lowest version that the plugin will work on [root@srv1 temp]#
Utwórz plik z obecną datą.
Parametr -ne zostawi nam kursor w tej samej linii, a średnik (;)pozwoli na wykonanie kolejnej komendy w ciągu jednej linii poleceń.
Operator „>>” pozwala na dołączenie strumienia do istniejącego pliku, podczas gdy „>” pojedynczy, nadpisuje.
echo -ne „Obecna data: ” > data.txt; date >> data.txt
[root@srv1 temp]# echo -ne "Obecna data: " > data.txt; date >> data.txt [root@srv1 temp]# cat data.txt Obecna data: Mon 24 May 11:28:36 CEST 2021 [root@srv temp]#
Połącz dwa pliki w Linux.
Połączymy dwa pliki w jeden nowy plik, który zostanie nadpisany na stary „plik.txt”.
cat 8linii.txt data.txt > plik.txt
[root@srv1 temp]# cat 8linii.txt data.txt > plik.txt [root@srv1 temp]# cat plik.txt Donate link: https://example.com/ Tags: comments, spam Requires at least: 4.7 Tested up to: 5.4 Stable tag: 4.3 Requires PHP: 7.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Obecna data: Mon 24 May 11:28:36 CEST 2021 [root@srv1 temp]#
Ponadto, początkującym przyda się również znajomość ciekawych poleceń, takich jak:
Szybkie przełączanie się na uprawnienia 'root’ w konsoli.
su –
[admin@srv1 ~]$ su - Password: Last login: Mon May 17 15:43:44 CEST 2021 on pts/0 [root@srv1 ~]#
Nazwa hosta oraz informacje o systemie.
hostname oraz uname
[root@srv1 temp]# hostname srv1.hostdev.pl [root@srv1 temp]# uname -a Linux srv1.hostdev.pl 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Fri Apr 9 10:23:57 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [root@srv1 temp]#
Jak długo działa system operacyjny?
uptime
[root@srv1 ~]$ uptime 16:54:07 up 26 days, 8:39, 1 user, load average: 0.15, 0.07, 0.06 [root@srv1 ~]$
curl, skrót od „Klient dla URL-i”, to bardzo przydatne narzędzie w konsoli służące do przesyłania danych przy użyciu różnych protokołów. Możemy testować połączenia wykorzystując HTTP czy sprawdzać nagłówki, odpytywać API, wspiera SSL, proxy a nawet FTP.
Jaki jest mój zewnętrzny adres IP?
curl ifconfig.co/
[root@srv1 /]# curl ifconfig.co/ XX.XX.XX.186 [root@srv1 /]#
Test czy strona odpowiada protokołem HTTP/2?
curl -I -s –http2 https://www.hitme.pl/ | grep HTTP
[root@srv1 /]# curl -I -s --http2 https://www.hitme.pl/ | grep HTTP HTTP/2 301 [root@srv1 /]#
Konwersja timestamp do formatu daty.
To już przesada, ale da się i tak :-).
curl -w „\n” https://showcase.api.linx.twenty57.net/UnixTime/fromunix?timestamp=1621854934
[root@da1 /]# curl -w "\n" https://showcase.api.linx.twenty57.net/UnixTime/fromunix?timestamp=1621854934 "2021-05-24 11:15:34" [root@da1 /]#