Midnight Commander загрузка / копирование исключить
Мой вопрос похож на этот, но я хотел бы рекурсивно исключить некоторые каталоги при копировании / загрузке файлов. В частности, я хотел бы исключить папки.git из всей загружаемой кодовой базы (она содержит суб-репозитории, некоторые довольно глубокие по структуре)
Я могу сделать это для текущего каталога с ключом "-" и отменить выбор.git, но есть ли способ сделать это рекурсивно?
1 ответ
Midnight Commander не имеет такого контроля над операциями с подкаталогами. Вид сделки типа "все или ничего". Как вы сказали, вы можете контролировать записи верхнего уровня, но не более того.
Я полагаю, вы могли бы написать какой-то скрипт для использования в меню F2...
По-другому, вроде клудги, но сработало бы...
find . -type d -name ".git" -exec chmod 000 "{}" \;
Из-за этого все подкаталоги.git будут нечитаемыми, MC выведет диалоговое окно с сообщением об ошибке, скажет "Продолжить" и продолжит обработку.
После этого:
find . -type d -name ".git" -exec chmod 750 "{}" \;
восстановить нужные разрешения. (Я сам использую 750 и 640, многие предпочитают 755 и 644... используйте там, где вы предпочитаете, вместо "750")
Ха! и как смешение моей идеи "поместить его в меню F2"... вы можете поместить ЭТИ две команды в меню F2... делая это почти (почти!) безболезненным.
РЕДАКТИРОВАТЬ:
По запросу:
#
# Restore permissions for any .git subdirectories to 755
g Restore .git directories to 755 permissions
if [ "x$PWD" = "x$HOME" ]; then
exit
fi
find . -type d -name ".git" -exec chmod 755 "{}" \; 2>/dev/null
#
# Remove permissions for any .git subdirectories
G Hide .git directories with 000 permissions
if [ "x$PWD" = "x$HOME" ]; then
exit
fi
find . -type d -name ".git" -exec chmod 000 "{}" \; 2>/dev/null
#
Сохраните это в файл~/.config/mc/menu
Если этот файл уже существует, добавьте его в КОНЕЦ (некоторые вещи должны быть первыми в файле, не хотите испортить это).
Если этот файл не существует, то записи здесь заменят все записи меню F2/ пользователя по умолчанию, которые обычно просматривались. Если вам нужны эти пункты меню назад (некоторые из них удобны!), Найдите файл с именем mc.menu (обычно находится в / etc / mc /), скопируйте его в ~/.config/mc/menu и снова добавьте выше до конца. КОНЕЦ!
Если вы используете более старую версию mc, вам может потребоваться выполнить поиск файла mc.menu, а файл меню должен быть в ~ /.mc.menu... сложный, да, немного. Но недавно mc пересмотрел расположение своих конфигурационных файлов, чтобы отразить лучшие практики (предложения XDG), и переместил все в ~ /.config / mc /. Справочная страница mc(1) очень полезна, ищите пользовательское меню.
Это добавляет две команды:
g (lowercase g) which will RESTORE the 755 permissions for any .git subdirs
G (uppercase g) which will REMOVE the permissions (set to 000) from any .git subdirs
Я добавил тест, чтобы предотвратить выполнение этого в вашем $HOME, хотя это не разрушительно... просто не получалось это сделать.
Наслаждайтесь!