Я намагаюся встановити змінну в скрипті sh для останніх 3 символів базового імені файлу (під ім'ям бази я маю на увазі без шляху та без суфікса). Мені це вдалося зробити, але, з цікавості, мені цікаво, чи є коротша, єдина команда, яку я можу використовувати. Спочатку у мене був одноводковий awk, але він був досить довгим. На даний момент у мене є цей дворядковий сценарій (якщо повна назва файлу є $1):
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
Так, наприклад, "/path/to/somefile.txt" закінчується "ile" в $lastpart.
Чи можу я якось комбінувати basenameі біт, щоб зняти суфікс в одну команду, і чи є спосіб надіслати його tail(або щось інше, що я можу використовувати), не використовуючи трубу? Суфікс невідомий, тому я не можу базувати його як параметр basename.
Основна мета насправді не стільки бути максимально короткою, скільки бути читабельною на перший погляд. Справжнім контекстом усього цього є це питання про Суперрусера , де я намагаюся знайти досить просту відповідь.
twoби; продовження на це було б .threeя здогадуюсь.
file.one.two.three? Хочетеileчиtwo?