Skip to content
Na tej stronie

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