Есть ли в Vim такое «Окно командной строки» для Bash?

lsпоказывает размер обычныхфайлов (или, в случае каталогов, размер его inodes, а не только их содержимое, поскольку у него нет быстрого способа определить это, в то время как для обычных файлов размер известен и поэтому может отображаться точно и быстро).

На самом деле это поле различается в зависимости от того, что представляет собой файл:

  • для обычных файлов: показывает их фактический размер
  • для символических ссылок (символические ссылки, ln -s source dest): длина имени символической ссылки (так как это содержимое файла символической ссылки). (например: символическая ссылка /dev/fd -> /proc/self/fd: путь назначения имеет длину ровно 13 символов ( / proc / self / fd), поэтому ls -lотобразит «13» в 5-м столбце вместо размера указанного файла.)
  • для каталогов: размер индексного дескриптора (если содержимое записей каталога соответствует один) или несколько инодов (если было необходимо несколько инодов для описания списка записей этого каталога). Вот почему вы видите 4096 для большинства из них: обычно внутри них не так много файлов, поэтому все они помещаются в 1 индексный дескриптор, который обычно составляет 4096 байтов по умолчанию. Если вы когда-нибудь поместите МНОЖЕСТВО файлов в какой-либо каталог, он возрастет (и, скорее всего, останется после этого, если вы не создадите заново сам каталог).
  • для каналов и других типов файлов: каждый раз, когда поле, обычно связанное с размером, может быть или не быть размером (например, для блочных устройств (например, /dev/hd* files) оно не показывает никакого размера но вместо этого показывает их большую и второстепеннуюпару информации.См. man mknod. См. man ls, чтобы узнать, как они идентифицируются.)

Чтобы узнать сумму содержимого каталогов + подкаталогов:

  • du /some/path# будет отображаться для каждого каталога : сумма его содержимого (включая подкаталоги) и показывает, что для каждого каталога в и ниже /some/path

  • du -s /some/path# будет показан только 1 уровень, т.е. total for /some/path

  • du -S /some/path# показать содержимое каждого каталога, не включая его подкаталоги. Полезно точно знать, какой из подкаталогов /some/path большой.

Подробнее см. https://linux.die.net/man/1/du.

1
07.07.2017, 00:43
2 ответа

У вас есть две альтернативы.

Либо вы можете установить hstr(https://github.com/dvorka/hstr), в котором есть окно предложений с расширенными параметрами поиска для удобного просмотра, навигации, поиска и управления историей команд:

enter image description here

Кроме того, Bash имеет редактор истории командной строки, похожий на vi -. Сделайте set -o vi, затем вы сможете искать по всей истории с помощью этих нажатий клавиш:

Esc входит в командный режим

/ начинает поиск; введите строку поиска, затем Введите для выполнения поиска.

n переходит к следующему совпадению, а N переходит к предыдущему совпадению

i возврат в режим вставки

5
27.01.2020, 23:14

Подобно упомянутому hstr, fzf(fuzzy finder )представляет собой интерактивный фильтр для детализации списков, а не только истории оболочки (a Ctrl + Ярлык R для этого предусмотрен из коробки ),но также и другие файлы, имена хостов и так далее. Существует несколько режимов поиска (, нечеткий или буквальный ).

1
27.01.2020, 23:14

Теги

Похожие вопросы