Если Вы хотите инструмент командной строки, я предпочитаю ncdu, ncurses версию du
. Это сканирует диск (или данная папка) и затем показывает использования пространства верхнего уровня; можно выбрать данный каталог, чтобы получить соответствующую сводку для того каталога и возвратиться, не будучи должен повторно проанализировать:
Если Вы соглашаетесь с программой GUI, Filelight является самой близкой вещью к WinDirStat, который я нашел; это показывает графическое представление потребления пространства:
Как ncdu
, Filelight позволяет Вам выбрать данный каталог для получения разбивки для того каталога
Сводка: Если когда-нибудь была оболочка, которая расширилась {}
, это - действительно старый материал прежней версии к настоящему времени.
В Оболочке Bourne и в совместимых POSIX оболочках, фигурные скобки ({
и }
) обычные символы (в отличие от этого, (
и )
которые являются ограничителями слова как ;
и &
, и [
и ]
которые являются globbing символами). Следующие строки, как все предполагается, печатаются буквально:
$ echo { } {} {foo,bar} {1..3}
{ } {} {foo,bar} {1..3}
Слово, состоящее из единственной фигурной скобки, является зарезервированным словом, которое является только особенным, если это - первая команда.
Ksh реализует расширение фигурной скобки как несовместимое расширение Оболочки Bourne. Это может быть выключено с set +B
. Bash эмулирует ksh в этом отношении. Zsh реализует расширение фигурной скобки также; там это может быть выключено с set +I
или setopt ignore_braces
или emulate sh
. Ни одна из этих оболочек не расширяется {}
в любом случае, даже когда это - подстрока слова (например. foo{}bar
), из-за общего использования в аргументах find
и xargs
.
Единственный Unix v2 отмечает это
В некоторых исторических системах фигурные скобки рассматривают как операторы управления. Для помощи в будущих операциях стандартизации портативные приложения должны избегать использования закрывших кавычки фигурных скобок для представления самих символов. Возможно, что будущая версия ISO/IEC 9945-2:1993 стандарт может потребовать этого
{
и}
рассматривайте индивидуально как операторы управления, хотя маркер{}
вероятно, будет освобождение особого случая от этого из-за часто используемогоfind
{}
создать.
Это примечание было отброшено в последующих версиях стандарта; примеры для find
закрыли кавычки использование {}
также как и примеры для xargs
. Возможно, были исторические Оболочки Bourne где {}
должен был быть заключен в кавычки, но они будут действительно старыми унаследованными системами к настоящему времени.
csh реализации, которые я имею под рукой (OpenBSD 4.7, BSD csh на Debian, tcsh) все расширяются {foo}
кому: foo
но отпуск {}
один.
Одним словом, csh
. bash
и другие современные оболочки распознают, что пользователь, вероятно, не просит пустое расширение фигурной скобки. (Современный csh
на самом деле tcsh
и может также обработать {}
нормально к настоящему времени.)
csh
. Не все выполняют утилиты GNU на Linux; на самом деле довольно распространено установить их в более старых коммерческих системах Unix, связанные команды которых ограничены. (Замена csh
в тех системах менее вероятно, потому что системные сценарии могут полагаться на особенности оригинала csh
, и даже если пользователи были все настроены для использования более нового csh
, root
должен был бы почти наверняка остаться комплектной версией.)
– geekosaur
05.03.2011, 17:55
pdksh
делает правильную вещь..., хотя корректный ответ на это, вероятно, "реален ksh
FOSS в эти дни".
– geekosaur
05.03.2011, 21:26
..
для ksh93, удара и zsh). Только (t) csh расширяется {foo}
кому: foo
, и даже это уезжает {}
один (по крайней мере, на недавнем BSD's).
– Gilles 'SO- stop being evil'
05.03.2011, 22:42
В версиях оболочки {}
до версии 3.0.0 fish
требовалось заключать в кавычки.
$ fish -c 'echo find -exec {} \;'
find -exec ;
И в оболочке rc (также akanga
, основанной на rc
, но не es
):
$ rc -c "echo find -exec {} ';'"
line 1: syntax error near '{'
Вероятно, это не те оболочки, которые имели в виду авторы документации GNU find, когда писали этот текст, поскольку fish
была впервые выпущена в 2005 году (тогда как этот или похожий текст уже существовал в 1994 году), а rc
изначально не была оболочкой Unix.
Ходят слухи, что некоторые версии csh
(оболочка, в которой появилось расширение скобок) требовали этого. Но трудно отдать должное этим версиям, поскольку первый выпуск csh
в 2BSD этого не делал. Вот как это проверялось в эмуляторе PDP11:
# echo find -exec {} \;
find -exec {} ;
А на странице man из 2BSD csh
ясно сказано:
Как особый случай `{', `}' и `{}' передаются без помех.
Поэтому мне было бы очень странно, если бы последующая версия csh или tcsh позже нарушила это.
Это могло быть сделано для того, чтобы обойти некоторые ошибки в некоторых версиях. Все еще с этим 2BSD csh (то же самое в 2.79BSD, 2.8BSD, 2.11BSD):
# csh -x
# echo foo {} bar
echo foo {} bar
foo {} bar
# echo `echo foo {} bar`
echo `echo foo {} bar`
echo foo {} bar
foo bar
Цитирование не помогает:
# echo `echo foo '{}' bar`
echo `echo foo '{}' bar`
echo foo {} bar
foo bar
Вы могли бы процитировать всю подстановку команды:
# echo "`echo foo {} bar`"
echo `echo foo {} bar`
echo foo {} bar
foo {} bar
Но это передача одного аргумента внешнему echo.
В csh
или tcsh
вам нужно будет заключить в кавычки {}
, если он не является самостоятельным, как в:
find . -name '*.txt' -type f -exec cp {} '{}.back' \;
(хотя такое использование find
не является переносимым, так как некоторые find
ы расширяют {}
только когда они сами по себе).
bash
(см.$BASH_VERSION
). Расширение фигурной скобки очень живо и здорово. – geekosaur 05.03.2011, 22:18{}
синтаксис, порожденный вcsh
, но{}
расширенный до пустой строки. Более новые оболочки распознают, что это бессмысленно, но существуют все еще некоторые старыеcsh
s там. – geekosaur 05.03.2011, 22:47{}foo
расширился бы доfoo
, но{}
расширился бы до{}
(кроме тех случаев, когда в обратных галочках, но заключении в кавычки не помог бы), и был зарегистрирован как таковой. Я проверил его для csh 2BSD (первый выпуск), 2.79BSD, 2.8BSD и 2.11BSD. – Stéphane Chazelas 07.12.2015, 00:05