Podstawowe operacje w systemach Linux dla początkujących

Obrazek dla 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]#

operacje tekstowe

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 /]#

 

Podoba Ci się? 2
Miniaturka Adam
Adam

Idealistyczny DevOps/Backend developer po służbie w formacji I-szej linii wsparcia, od 9 lat sercem związany z HitMe, przez którego teraz na blogu pojawia się tyle artykułów poświęconych platformie WordPress ;-).