Проблема с переименованием псевдонима Ubuntu
В моей системе установлена Ubuntu 14.04 Trusty Tahr.
Я создал следующий псевдоним в моем файле ~/.bashrc, чтобы рекурсивно переименовывать каталоги в текущей папке, как простую в использовании короткую команду.
renamedirs() {
find . -depth -type d -not -name '.' -exec rename 's/$1/$2/' {} +
}
alias rendirs=renamedirs
я уже сделал source ~/.bashrc
вещь.
Но когда я запускаю этот псевдоним ниже,
rendirs Olddir Newdir
Я получаю следующую ошибку:
Use of uninitialized value $1 in regexp compilation at (eval 33) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 33) line 1.
Use of uninitialized value $1 in regexp compilation at (eval 34) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 34) line 1.
...
...
Кто-нибудь может дать мне знать, что здесь не так.
1 ответ
Bash делает разницу между одинарными кавычками '...'
и двойные кавычки "..."
,
Одиночные кавычки приводят к тому, что заключенный текст воспринимается буквально, а двойные кавычки допускают различные интерпретации строки, такие как расширение переменной.
Вы должны использовать двойные кавычки, если у вас есть $x
- как переменные Bash в вашей строке, которые вы хотите расширить.
Кроме того, прямо назовите вашу функцию rendirs
и не используйте псевдоним для добавления второго имени, если первое не будет использоваться.
rendirs() {
find . -depth -type d -not -name '.' -exec rename "s/$1/$2/" {} +
}