OCD во мне хочет, чтобы каталоги, которые мне не нравятся, были скрыты, поскольку я не взаимодействую с ними напрямую.
Как я могу скрыть каталоги, не используя точечные обозначения?
Если предположить, что вы заботитесь только о том, чтобы скрыть файлы от появления в nautilus, в GNOME Bugzilla есть ошибка , связанная с этим. Однако, в настоящее время эта ошибка не устранена.
Существует другой способ скрыть файлы от появления в nautilus. Если вы создадите файл с именем .hidden
внутри каталога, любое имя файла, перечисленное в файле, не будет отображено.
Например, ниже скрытый файл, который я создал. Этот файл будет скрывать любые файлы или папки с именами b
или e
, расположенные в том же каталоге, что и .hidden файл.
Ниже приведен снимок экрана папки, содержащей .hidden файл. Обратите внимание, что вы видите только три файла: a
, c
и f
. Вы не видите .скрытый файл из-за '.' в начале его имени.
Снимок экрана ниже находится в той же папке, что и раньше. Однако в этот раз я нажал Ctrl+H, чтобы заставить nautilus отобразить скрытые файлы и папки. Обратите внимание, что появляется несколько дополнительных файлов. Теперь вы видите несколько файлов, которые ранее были скрыты из-за того, что у них имена начинались с "...". Теперь также есть файлы с именами, начинающимися с 'b' и 'e', которые, хотя и не имеют имён, начинающихся на '.', были скрыты из-за того, что были перечислены в .скрытом файле.
Файлы, упомянутые в .скрытом файле, будут скрыты только в nautilus. Такие инструменты, как ls
все равно будут отображать их. Скрытый файл также не является рекурсивным. Он влияет только на файлы в том же каталоге, в котором находится .hidden файл.
Некоторые люди на форуме создали скрипты для nautilus, которые облегчают добавление файлов в .hidden файл. Первый скрипт включает в себя хорошее объяснение того, как устанавливать и использовать эти скрипты, но второй скрипт немного чище и короче. Не стесняйтесь использовать любой сценарий, чтобы сделать свою жизнь немного проще.
1-й выход: если вы хотите скрыть файл от кого-либо: установите систему обнаружения вторжений Linux . ( Snort является примером) Вы даже можете скрыть файл от «root», но «root» также сможет отменить эти настройки.
Но может быть проще просто установить разрешения для каталога, в котором хранится файл, на «root». Пример:
$ sudo su
# mkdir tmp/
# touch tmp/1
# chown root:root tmp
# chmod 000 tmp
# ls -l
total 4
d--------- 2 root root 4096 2015-08-07 06:36 tmp
# exit
exit
$ ls
tmp
$ cd tmp/
bash: cd: tmp/: Permission denied
И файл 1
фактически скрыт от просмотра.
Каталог будет видимым; файл не будет виден. Однако помните: «root» ВСЕГДА будет иметь доступ к любому файлу.
Вместе с chattr
вы даже можете сделать файл неизменяемым.
sudo su
chattr + i {file}
и даже «root» не может изменить файл, если только не будет отменен chattr
(и да, «root» может это сделать).
Любые сочетания клавиш для этого?
Нет, это нужно сделать вручную.
Если вы хотите скрыть файлы, у вас останется только переименовать их с помощью предыдущего .
, как и в случае с соглашением *NIX. Извините, но это все.
Однако, если вы хотите скрыть содержание файлов/каталогов, вы можете сделать это с разрешениями на файлы.
Так скажем, у вас есть куча файлов в папке с именем secret_stash
, вы можете изменить ее так, чтобы только вы (владелец) имели r-x
(читать, исполнять), а у всех остальных ничего ---
(нет доступа). Так как r-x
- это минимальная завивка, необходимая для просмотра каталога (читать, чтобы получить доступ к его содержимому и выполнить, чтобы иметь возможность его увидеть), то все, что находится внутри этой папки, фактически скрыто от всех, кроме root
.
ПРИМЕЧАНИЕ: Я запускаю эту демонстрационную версию от имени root
, и пытаюсь получить доступ к папке от имени myuser
. Для этого вы запускаете chmod 700 dirname
(700 означает rwx------
):
% mkdir secret_stash
% chmod 700 secret_stash
И вот оно:
% whoami
root
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash
./ ../ secret.txt
% cat secret_stash/secret.txt
TOP SECRET DATA
Теперь и если я попытаюсь получить доступ к нему из myuser
, попытки получить доступ к папке или ее содержимому терпят неудачу:
% whoami
myuser
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash
ls: cannot open directory secret_stash: Permission denied
% cat secret_stash/secret.txt
cat: secret_stash/secret.txt: Permission denied
А теперь я столько раз говорил слово "секретно", что оно потеряло всякий смысл! !
Для Nautilus также есть расширение под названием nautilus-hide , которое позволит вам скрыть любой файл или папку простым щелчком правой кнопки мыши по ним.
Чтобы установить это расширение:
sudo apt-get install nautilus-hide
в терминале,
или выполните поиск по запросу «nautilus hide» в Центре программного обеспечения Ubuntu.
Не забудьте выйти из Nautilus после установки: Alt + F2 и введите nautilus -q
.
Из командной строки Вы можете попробовать что-нибудь подобное в Вашем файле .bash_aliases
:
lsh() {
[ -s .hidden ] && echo "lsh: hiding $(wc -l .hidden) patterns" && ls $@ | grep -v -F "$(cat .hidden)";
[ ! -f .hidden ] && ls $@
}
Это добавляет новую команду lsh
, которая ведет себя как ls
, но скрывает файлы, перечисленные в каталоге .hidden
. (В ней также отсутствуют некоторые из ее функций, такие как вывод в цветном виде и список столбцов)
Unix и Linux поддерживают только скрытие папок, которые находятся с .
.
Если Вы действительно хотите их убрать, но хотите, чтобы у них не было .
поместите их все в .спрятанную
в ту же директорию, что и файл или папку, которую Вы хотите спрятать. .hidden
не будет открыт файловым менеджером, и ваши файлы не будут иметь изменения имени.