Intereting Posts
звуковая обратная связь Может ли proxyCommand ssh_config выполнить локальную команду перед подключением к удаленному компьютеру? / dev / disk / by-id, создающие неправильные символические ссылки для жесткого диска Утилита для отправки HTML-почты с вложениями в длинный список писем? ISC DHCP с Active Directory Secure Dynamic DNS Updates Формат / etc / hosts в Linux (отличается от Windows?) каталог автозаполнения zsh Переход на Mozilla Firefox 5.0 с помощью терминала в CentOS? Лишь один из двух процессорных ядер распознается Linux Mint на моем ноутбуке Почему я пытаюсь подключиться к SFTP с ошибкой «Листинг удаленной папки»? как перечислить загруженные apt-пакеты без зависимостей Любые встроенные методы Linux для устройств типа AXI-burst? Как можно анализировать параметры в сценарии Bash, оставляя непризнанные параметры после «-»? Параметры grep и сортировки Как диагностировать надежную ненадежную связь?

Поиск последнего символа имени базового файла

Скажем, есть разные файлы,

script.sh text.txt pic_1.png 

или файлы без расширения – «привет». Как вы можете извлечь последний символ имени базового файла? т.е.

 script. sh - t text.txt - t pic_1.png - p hello - o 

Есть ли простой способ сделать это?

Прежде всего, вы удаляете расширение, если оно есть:

 name_no_ext=${file%.*} 

то вы получите последний символ:

 char=${name_no_ext: -1} #note the space after colon 

Если вы хотите больше узнать о строковых манипуляциях в bash, перейдите к разделу « Parameter Expansion руководства bash.

POSIXLY:

 for w in script.sh text.txt pic_1.png; do w=${w%.*} all_but_last_char=${w%?} w=${w##"$all_but_last_char"} printf '%s\n' "$w" done 

Обратите внимание, что он не работает с символами Unicode в некоторых оболочках, таких как mksh , dash .