Никакой numlock на экране?

Если нет расширения в имени файла:

for i in secondfolder/IM_* ; do mv "$i" "${i%_[0-9]*}_$[10#${i##*_}+2048]" ; done
-121--133496-

Здесь основной способ сделать что-то подобное с помощью сценария оболочки и awk.

Этот пример сценария является достаточно явным для вашего конкретного случая, его использование второго поля в имени файла является допустимым целым числом. И надеется, что в именах файлов нет случайных подчеркиваний. Более общий сценарий подтверждает, что поле 2 является просто числами, и делает разделитель полей параметром. Также предполагается, что расширение файла отсутствует (например, .img или .png)

#!/bin/sh
WORKDIR=/(Directory where the files to be renamed are)
NUM2ADD=2048
cd $WORKDIR
echo "Old File    New File"
ls IM_* | while read i
do
   newfile=`echo $i | awk -F_ -v incby=$NUM2ADD '{t=$2 + incby;printf "IM_%s",t;}'`
   echo   $i    $newfile
   # after a dry run to test, replace 'echo' with 'mv' onces your sure of the result. 
done

Поскольку наличие расширения файла достаточно вероятно, можно изменить строку awk на:

newfile=`echo $i | awk -F[_.] -v incby=$NUM2ADD '{t=$2 + incby; printf "IM_%s.%s",t,$3;}'` 

Это сохраняет расширение файла и использует _ подчеркивания и точку в качестве разделителей полей.

-121--133498-

При экспорте LC_ALL=C я фактически избавился от предупреждения.

Это скорее обходной путь (так как LC_ALL также категорически не рекомендуется), но я предполагаю, что причина такого поведения заключается в предположениях nix о языковых стандартах в системе, которые не применяются к openSUSE.

0
29.04.2016, 05:49
2 ответа

Я нашел причину, по которой это не сработало.

В конфигурации PuTTy мне пришлось изменить настройки сеанса следующим образом:

Соединение -> Данные -> Сведения о терминале -> Строка типа терминала

Значение было: xterm {{ 1}} Я изменил его на linux

Теперь я могу использовать клавиши Home + End в Bash и Screen.

echo $ TERM покажет linux за пределами экрана и screen.linux внутри экрана.


ОБНОВЛЕНИЕ 23 октября 2018 г.

Я нашел гораздо более простое решение!

Просто запустите экран с помощью этой команды:

TERM = linux screen

или поместите эту строку в свой ~ / .bashrc :

alias screen = 'TERM = linux screen'

0
28.01.2020, 02:52

Проблема, вероятно, может быть устранена установкой переменной $TERM в screen. Попробуйте добавить term screen-256color в ~/.screenrc.

Если это не сработает, попробуйте добавить termcapinfo xterm ks@:ke@' в ~/.screenrc` также. Это может сломать некоторые другие клавиши, поэтому вам следует тщательно проверить это.

1
28.01.2020, 02:52

Теги

Похожие вопросы