Próbuję ustawić zmienną w skrypcie sh na 3 ostatnie znaki podstawowej nazwy pliku (pod nazwą podstawową mam na myśli bez ścieżki i sufiksu). Udało mi się to zrobić, ale z czystej ciekawości zastanawiam się, czy mogę użyć krótszego pojedynczego polecenia. Początkowo miałam jedną wkładkę awk, ale była raczej długa. Obecnie mam ten dwuwierszowy skrypt (zakładając, że jest pełna nazwa pliku $1):
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
Na przykład „/path/to/somefile.txt” kończy się na „ile” w $lastpart.
Czy mogę jakoś połączyć basenamei nieco rozebrać sufiks w jednym poleceniu i czy istnieje sposób na wysłanie go do tail(lub czegoś innego, z czego mogę skorzystać) bez użycia potoku? Przyrostek jest nieznany, więc nie mogę oprzeć go na parametrze basename.
Głównym celem nie jest bycie tak krótkim, jak to tylko możliwe, aby być jak najbardziej czytelnym na pierwszy rzut oka. Rzeczywistym kontekstem tego wszystkiego jest pytanie Superuser , w którym staram się znaleźć dość prostą odpowiedź.
twodziałałby; Wydaje mi się, że to rozszerzenie .three.
file.one.two.three? Chceszileczytwo?