В моей системе установлена 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.
...
...
Может кто-нибудь дать мне знать, что здесь не так.
Bash имеет значение между одинарными кавычками '...'
и двойные кавычки "..."
.
Одинарные кавычки заставляют вложенный текст быть взятым буквально, в то время как двойные кавычки позволяют различные интерпретации строки как переменное расширение.
необходимо использовать двойные кавычки, если Вы имеете $x
- как переменные Bash в Вашей строке, которая Вы хотите быть расширенными.
Кроме того, непосредственно называют Вашу функцию rendirs
и не используют псевдоним для добавления второго имени, если первый не будет используемым.
rendirs() {
find . -depth -type d -not -name '.' -exec rename "s/$1/$2/" {} +
}
"sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"
как вывод для шага 6. Я использовалStartupWMClass=jetbrains-pycharm-ce
, и это работает. – d4nyll 12 January 2018 в 04:59