Tryb nocny
Przykładowe rozwiązania w terminalu
Poniżej przedstawiliśmy przykładowe zadania, z którymi może spotkać się użytkownik terminala w środowisku uniksopodobnym.
Operacje na tekście
Do poniższych komend należy przekazać odpowiednie wejście lub ścieżkę do pliku tekstowego. Ich wyjście można też odpowiednio przekierować (operatory |
, >
, <
).
Jak zamienić spacje na znaki nowej linii
bash
tr ' ' '\n'
tr ' ' '\n'
Jak zamienić podział linii na spacje
bash
xargs
xargs
Jak wyświetlić trzecie i piąte słowo z linii wypełnionej znakami pustymi
bash
awk '{ print $3, $5 }'
awk '{ print $3, $5 }'
Powłoka i skrypty Bash
Jak przekierować wyjście komendy wraz z błędami do pliku zawierającego datę w nazwie?
bash
sudo apt update -y >> "log-$(date).txt" 2>>&1
sudo apt update -y >> "log-$(date).txt" 2>>&1
Informacja
Trzeba uważać na kolejność operacji przekierowania. 2>>&1
przypisuje strumień 2
do strumienia 1
w stanie, jakim jest w danej chwili.
Jak wykonać pętlę 100 razy
bash
for i in $(seq 100); do
echo $i
done
for i in $(seq 100); do
echo $i
done
Jak wykonać komendę w pętli, dopóki komenda nie zwróci błędu
bash
while komenda; do :; done
while komenda; do :; done
Jak wykonać komendę w pętli, dopóki komenda nie zwróci braku błędu
bash
until komenda; do :; done
until komenda; do :; done
Jak wykonywać komendę w nieskończoność z pewnym opóźnieniem
bash
while :; do
komenda
sleep 1
done
while :; do
komenda
sleep 1
done
Jak sprawdzić, czy którykolwiek z danych plików nie istnieje?
bash
for file in /tmp/plik1.txt ./plik2.txt ./plik3.txt; do
if ! [ -e "$file" ]; then
echo "$file nie istnieje!"
exit 1
fi
done
for file in /tmp/plik1.txt ./plik2.txt ./plik3.txt; do
if ! [ -e "$file" ]; then
echo "$file nie istnieje!"
exit 1
fi
done
Jak wypisać każdy znak od nowej linii?
bash
fold -w 1
fold -w 1
Przykładowe scenariusze
Zmień prawa dostępu skryptu, aby ten był wykonywalny przez każdego użytkownika
bash
chmod a+x ./skrypt.sh
chmod a+x ./skrypt.sh
txt
total 15M
-rw-rw-r-- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwxrwxr-x 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxrwxr-x 2 jacek jacek 4.0K Dec 22 12:59 wiecej-plikow
-rw-rw-r-- 1 jacek jacek 105K Dec 22 12:58 zdjecie.jpg
total 15M
-rw-rw-r-- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwxrwxr-x 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxrwxr-x 2 jacek jacek 4.0K Dec 22 12:59 wiecej-plikow
-rw-rw-r-- 1 jacek jacek 105K Dec 22 12:58 zdjecie.jpg
Zmień prawa dostępu wszystkich plików w katalogu roboczym, aby nie były dostępne użytkownikom innym niż właściciel
bash
chmod g=,o= *
chmod g=,o= *
txt
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwx------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwx------ 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwx------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwx------ 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg
Zmień prawa dostępu katalogu i plików, aby wszyscy użytkownicy mieli dostęp do odczytu listy plików, ale nie mieli dostępu do zawartości plików z wyłączeniem właściciela
bash
chmod a+rx więcej-plików
chmod g=,o= więcej-plików/*
chmod a+rx więcej-plików
chmod g=,o= więcej-plików/*
bash
jacek@parzychedu:~/przykład$ ls -l
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwx------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxr-xr-x 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg
jacek@parzychedu:~/przykład$ ls -l więcej-plików
total 1.9M
-rwx------ 1 jacek jacek 757K Dec 22 13:01 dane.txt
-rwx------ 1 jacek jacek 1.2M Dec 22 13:01 dokument.txt
jacek@parzychedu:~/przykład$ ls -l
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-rwx------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxr-xr-x 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg
jacek@parzychedu:~/przykład$ ls -l więcej-plików
total 1.9M
-rwx------ 1 jacek jacek 757K Dec 22 13:01 dane.txt
-rwx------ 1 jacek jacek 1.2M Dec 22 13:01 dokument.txt
Usuń wszystkim użytkownikom prawo modyfikacji pliku
bash
chmod a-w skrypt.sh
chmod a-w skrypt.sh
bash
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-r-x------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxr-xr-x 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg
total 15M
-rw------- 1 jacek jacek 15M Dec 22 12:58 generative-25.flac
-r-x------ 1 jacek jacek 1.7K Dec 22 12:58 skrypt.sh
drwxr-xr-x 2 jacek jacek 4.0K Dec 22 12:59 więcej-plików
-rw------- 1 jacek jacek 105K Dec 22 12:58 zdjęcie.jpg