Лучший способ сделать это:
for d in `ls -A`; do if [ "$d" != "TTT" ]; then cp -Rf $d TTT; fi; done
копии все каталоги из текущего каталога рекурсивно в каталоге TTT кроме самого TTT. Опция -A
в ls
позволяет Вам рассматривать все скрытые каталоги и файлы, но не рассматривают специальные файлы. и.. и условие "$d" != "TTT"
исключите каталог TTT так для предотвращения себя копия. Можно записать bash
сценарий с 2 аргументами сохраняет к локальному или системному мусорному ведру и использует его при необходимости.
Ниже я вижу информацию из здесь.
При использовании sudo используйте расширение псевдонима (иначе sudo игнорирует ваши псевдонимы)
alias sudo='sudo '
Причина, по которой оно не работает, объясняется здесь.
Бэш проверяет только первое слово команды на псевдоним, любые слова после этого не проверяются. Это значит, что в такой команде, как sudo ll, только первое слово (sudo) проверяется Bash на псевдоним, ll игнорируется. Мы можем попросить bash проверить следующее слово после псевдонима (т.е. sudo) по команде добавляя пробел в конец значения псевдонима.
Псевдонимы и функции определяются в оболочке. Судо - это внешняя программа. Поэтому sudo не видит псевдонимов, функций или сборок оболочки, только внешние команды.
Псевдонимы - это альтернативные имена команд, поэтому оболочки расширяют их только в позиции команд, а не тогда, когда они являются аргументами к командам. Zsh поддерживает глобальные псевдонимы, которые расширяются в любом месте командной строки, и лучше всего использовать их экономно, так как есть риск случайного их расширения даже в условиях, когда псевдоним не имеет смысла.
Можно сказать Судо, чтобы он вызвал оболочку: sudo sh -c "...shell command here..."
. Однако, ваши обычные псевдонимы не будут доступны внутри этой команды оболочки, так как они обычно хранятся в файле типа ~/.bashrc
или ~/.zshrc
, который считывается только интерактивными оболочками.
alias sudo= sudo '
, как , предложенный Ramesh, заставляет оболочку расширять псевдонимы после sudo
.
Я только что дал альтернативный ответ без переопределения Sudo
с псевдонимом.
В вашем случае это было бы:
type -a startapp | grep -o -P "(?<=\`).*(?=')" | xargs sudo
Все в одной строке, без дополнительных оболочек, без переопределений псевдонимов. ; -)