Можно использовать DEBIAN_FRONTEND
переменная среды.
DEBIAN_FRONTEND=noninteractive aptitude -y install mysql-server > /dev/null 2>&1
или если Вы выполните больше чем 1 установку, Вы могли бы хотеть добавить экспорт в верхнюю часть Вашего сценария
export DEBIAN_FRONTEND=noninteractive
aptitude -y install mysql-server > /dev/null 2>&1
for name in TestSR*
do
newname=CL"$(echo "$name" | cut -c7-)"
mv "$name" "$newname"
done
Это использует замену команды удара для удаления первых 6 символов из входного имени файла через cut
, предварительно ожидает CL
к результату и хранилищам это в $newname
. Затем это переименовывает старое название к новому имени. Это выполняется на каждом файле.
cut -c7-
указывает, что только символы после индекса 7 должны быть возвращены из входа. 7-
диапазон, запускающийся в индексе 7 без конца; то есть, до конца строки.
Ранее, я использовал cut -b7-
, но -c
должен использоваться вместо этого для обработки кодировок символов, которые могли иметь несколько байтов на символ, как UTF-8.
Расширение параметра Shell достаточно для простых преобразований как это. Замена команды менее эффективна из-за потребности породить дополнительные процессы (для самой замены команды и cut
/sed
).
for f in TestSR*; do mv "$f" "CL${f#TestSR}"; done
Я сказал бы что самое простое это, чтобы просто использовать rename
команда, которая распространена на многих дистрибутивах Linux. Существует две общих версии этой команды, так проверьте ее страницу справочника для нахождения, какой Вы имеете:
## rename from Perl (common in Debian systems -- Ubuntu, Mint, ...)
rename 's/^TestSR/CL/' *
## rename from util-linux-ng (common in Fedora systems, Red Hat, CentOS, ...)
rename TestSR CL *
Если Вы хотите использовать версию из util-linux-ng в системе Debian, это доступно под именем rename.ul
rename
существуйте в дикой природе. Проверьте свое локальное rename
документация, чтобы выяснить, как использовать Ваш.
– jw013
06.09.2012, 20:39
Можно попробовать:
for i in TestSR*; do mv ${i} ${i/#TestSR/CL}; done
Посмотрите man bash
(раздел "Parameter Expansion") для деталей.
Вот один путь:
ls *.{h,m} | while read a; do n=CL$(echo $a | sed -e 's/^Test//'); mv $a $n; done
ls *.{h,m}
-> Находят все файлы с.h или расширением.mn=CL
-> Добавляют префикс CL к имени файлаsed -e 's/^Test//'
-> Удаляет Тестовый префикс из имени файлаmv $a $n
-> Выполняет переименовываниеЕсли Вам нужно что-то, больше погибают, можно сделать это
perl -e 'for(@ARGV) { rename($_, $n) if( ($n = $_ ) =~ s/^TestSR/CL/) }' *
Ну, это не было настолько же твердо как я все же.
$ for f in TestSR*.m; do mv $f CL$(echo $f | cut -c7-); done;
$ for f in TestSR*.h; do mv $f CL$(echo $f | cut -c7-); done;
for f in TestSR*.[mh]
, for f in TestSR*.{m,h}
, for f in TestSR*.m TestSR*.h
.
– mrb
07.09.2012, 01:37