Przycinanie nazwy pliku i katalogu w Bash
Bash ma wiele ciekawych możliwości, które pozwalają zrobić wiele rzeczy bez odwoływania się do innych programów.
Przykład działań na tekście np. na ścieżce do pliku
Przykładowa zmienna do prezentacji
$ a=/home/uzytkownik/skrypt.123.py
- wypisanie zmiennej
$ echo $a
/home/uzytkownik/skrypt.123.py
- wypisanie zmiennej - alteratywny sposób
$ echo ${a}
/home/uzytkownik/skrypt.123.py
W poniższych nie wykorzystywane są wyrażenia regularne i sama gwiazdka *
oznacza dowolny ciąg znaków (o dowolnej długości lub pusty)
% - obcięcie od końca minimalnej ilości
- obcięcie wszystkiego od końca (
%
) do pierwszej kropki włącznie (licząc od końca) (.*
) czyli sposób na pozbycie się rozszerzenia pliku
$ echo ${a%.*}
/home/uzytkownik/skrypt.123
- obcięcie wszystkiego od końca (
%
) do pierwszego slasha włącznie (licząc od końca) (/*
) czyli sposób na pozbycie się całej nazwy pliku
$ echo ${a%/*}
/home/uzytkownik
%% - obcięcie od końca maksymalnej ilości
- obcięcie wszystkiego od końca (
%%
) do ostatniej kropki włącznie (licząc od końca) (.*
) czyli sposób na pozbycie się "podwójnego" rozszerzenia pliku
$ echo ${a%%.*}
/home/uzytkownik/skrypt
# - obcięcie od początku minimalnej ilości
- obcięcie wszystkiego od początku (
#
) do pierwszego slasha włącznie (licząc od początku) (*/
)
$ echo ${a#*/}
home/uzytkownik/skrypt.123.py
- obcięcie wszystkiego od początku (
#
) do pierwszej kropki włącznie (licząc od początku) (*.
) czyli sposób na zostawienie tylko "podwójnego" rozszerzenia pliku
$ echo ${a#*.}
123.py
## - obcięcie od początku maksymalnej ilości
- obcięcie wszystkiego od początku (
##
) do ostatniego slasha włącznie (licząc od początku) (*/
) czyli sposób na zostawienie tylko nazwy pliku
$ echo ${a##*/}
skrypt.123.py
- obcięcie wszystkiego od początku (
#
) do ostatniej kropki włącznie (licząc od początku) (*.
) czyli sposób na zostawienie tylko rozszerzenia pliku
$ echo ${a##*.}
py
If you like it
Buy a Coffee
Buy a Coffee