Как я могу скрыть каталоги или файлы без изменения их имен?

51

OCD во мне хочет, чтобы каталоги, имя которых мне не нравилось, скрывались, поскольку я не взаимодействую с ними напрямую.

Как я могу скрыть каталоги без использования точечной нотации?

myusuf3
источник

Ответы:

79

Предполагая, что вы заботитесь только о том, чтобы скрыть файлы от показа в nautilus, в GNOME Bugzilla есть ошибка по этому поводу. Однако в настоящее время эта ошибка не устранена.

Существует еще один способ скрыть файлы от появления в nautilus. Если вы создадите файл с именем .hiddenвнутри каталога, любое имя файла, указанное в файле, не будет отображаться.

Например, ниже находится скрытый файл, который я создал. Этот файл будет скрывать любые файлы или папки, названные bили eрасположенные в том же каталоге, что и скрытый файл.

Пример .hidden File

Ниже приведен скриншот папки, содержащей скрытый файл. Обратите внимание , что вы видите только три файла: a, cи f. Вы не видите скрытый файл из-за '.' в начале его имени. Папка с примерами

На скриншоте ниже та же папка, что и раньше. Однако на этот раз я нажал Ctrl+, Hчтобы наутилус отобразил скрытые файлы и папки. Обратите внимание, что появляется несколько дополнительных файлов. Теперь вы видите несколько файлов, которые ранее были скрыты из-за имен, начинающихся с «.». Также теперь есть файлы с именами «b» и «e», которые, хотя и не имеют имен, начинающихся с «.», Были скрыты из-за того, что перечислены в файле .hidden.

Примеры папок с видимыми скрытыми файлами

Файлы, упомянутые в файле .hidden, будут скрыты только в nautilus. Инструменты, подобные ls, по-прежнему будут отображать их. Файл .hidden также не является рекурсивным. Это влияет только на файлы в том же каталоге, где находится скрытый файл.

Некоторые люди на форуме пошли дальше и создали сценарии для nautilus, которые облегчают добавление файлов в .hidden файл. Первый сценарий включает хорошее объяснение о том , как установить и использовать скрипты, но второй сценарий немного чище и короче. Не стесняйтесь использовать любой сценарий, чтобы сделать вашу жизнь немного проще.

nhandler
источник
+1. Просто заметка, если вы считаете, что вам нужно добавить имя 'файла или папки, которое содержит `` пробел, это не так. Просто добавьте имя файла или папки
Anwar
13

Unix и Linux поддерживают только скрытие папок, которые находятся с ..

Если вы действительно хотите убрать их с пути, но хотите, чтобы у них не было .s, поместите их все .hiddenв один каталог с файлом или папкой, которую вы хотите скрыть. .hiddenне будет отображаться файловым менеджером, и ваши файлы не будут иметь изменение имени.

lfaraone
источник
1
я бы очень хотел оставить их там же :)
myusuf3
1
это решение будет держать их на том же месте. .hidden даже не обязательно должен быть в вашей домашней папке, если вы этого не хотите. Я обычно использую его на съемных дисках, на которых есть файлы конфигурации, которые я не хочу видеть.
Jumpnett
1
@jumpnett правильный, поместите .hidden в то же место, где находятся файлы, которые вы хотите скрыть, и добавьте имена файлов / каталогов в файл .hidden, по одному на строку. Работает отлично!
инвертировать
3

Из командной строки вы можете попробовать что-то вроде этого в вашем .bash_aliasesфайле:

lsh() {
    [ -s .hidden ] && echo "lsh: hiding $(wc -l .hidden) patterns" && ls $@ | grep -v -F "$(cat .hidden)";
    [ ! -f .hidden ] && ls $@
}

Это добавляет новую команду, lshкоторая ведет себя как ls, но скрывает файлы, перечисленные в .hiddenкаталоге. (Также отсутствуют некоторые его функции, такие как цветной вывод и списки столбцов.)

qneill
источник
2

Если вы хотите скрыть файлы, вам остается только переименовать их с предыдущим ., как это принято в * 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

И теперь я сказал слово «секрет» так много раз, что оно потеряло всякий смысл !!

jathanism
источник
2
Вы можете сделать это действительно скрытым, chmod -R 000 secret_stashтогда никто не сможет его прочитать!
Марко Чеппи
@Marco Ceppi - СОВЕРШЕННАЯ СЕКРЕТИЯ!
jathanism
Конечно, это больше «Безопасность», чем «Непрозрачность» - именно это, как мне кажется, искала ФП;)
Марко Чеппи
2
@MarcoCeppi: chmod 000 скрывает файл даже от владельца файла, за исключением корневого, который всегда может обойти 000. Однако владелец файла может изменить разрешение на чтение файла, поэтому вам нужно также измените владельца файла на root, чтобы сделать разрешение 000 действительно значимым.
Ли Райан
2

Первое: если вы хотите скрыть файл от кого-либо: установите систему обнаружения вторжений в 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" может это сделать).

Есть какие-нибудь сочетания клавиш для этого?

Нет, это то, что вам нужно сделать вручную.

Rinzwind
источник
0

Существует также расширение для Nautilus, называемое nautilus-hide , которое позволит вам скрыть любой файл или папку, просто щелкнув по ним правой кнопкой мыши.

Чтобы установить это расширение: sudo apt-get install nautilus-hideв терминале или выполните поиск «nautilus hide» в программном центре Ubuntu.

Не забудьте выйти из Nautilus после установки: Alt+ F2и введите nautilus -q.

SNugues
источник