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
furas.pl