Это не прямой ответ на вопрос, но я влюбился в окно истории каталога в 4DOS. Так так, чтобы я записал свою собственную версию для Linux (и Cygwin). Я никогда не находил время для создания его легкая к установке утилита, но если Вы знаете свой путь вокруг подсказки Bash, не должно случаться так что трудно получить выполнение. Ваш вопрос вдохновил меня помещать его в Мерзавца repo и загружать его на GitHub: dirhistory.
В основном это - демон, который собирает изменения каталога из всех Ваших оболочек и программу Cdk, которая отображает историю и позволяет Вам выбрать любой каталог для переключения на (таким образом, Вы не ограничены стеком). Я нахожу это действительно полезным, и имею связанный с Ctrl-PageUp, точно так же, как 4DOS сделал. (Я даже исправил PuTTY, таким образом, он отправит Ctrl-PageUp в Bash.)
gzip -l foo.gz | awk 'NR==2 {print $2}'
печатает размер несжатых данных.
if LC_ALL=C gzip -l foo.gz | awk 'NR==2 {exit($2!=0)}'; then
echo foo is empty
else
echo foo is not empty
fi
Кроме того, можно начать распаковывать данные.
if [ -n "$(gunzip <foo.gz | head -c 1 | tr '\0\n' __)" ]; then
echo "foo is not empty"
else
echo "foo is empty"
fi
(Если Ваша система не имеет head -c
для извлечения первого байта использовать head -n 1
извлечь первую строку вместо этого.)
Если 'пустым' Вы подразумеваете, что несжатый файл составляет 0 байтов, Вы могли использовать gzip --list foo.gz
для определения размера несжатого файла это потребовало бы, чтобы некоторый парсинг автоматизировал его. Это выглядит примерно так:
$ gzip --list foo.gz
compressed uncompressed ratio uncompressed_name
24 0 0.0% foo
test -z $(gzip -cd foo.gz | head -c1) && echo "empty"
Или с if
:
if [ -z $(gzip -cd foo.gz | head -c1) ]; then
echo "empty"
fi
zcat
иногда связывается с gunzip -c
или gzip -cd
, если Вы хотите использовать его в качестве более короткой "формы".
Обратите внимание на то, что gzip формат файла только позволяет 32 бита для хранения исходного размера файла, таким образом, число, там размер по модулю 2^32. Следовательно размер, данный "gzip-l", не является категорическим тестом для пустоты.
Если размер файла gzip равен 51, он пуст. Всякий раз, когда я добавляю символ в файл и сжимаю файл, размер заархивированного файла начинает увеличиваться с 51.
Однако вы можете гарантировать это с помощью zcat. в gzip человек:
The uncompressed size is given as -1 for files not in gzip format, such as compressed.Z files. To get the uncompressed size for such a file, you can use:
zcat file.Z | wc -c
LC_ALL=C
там должен гарантировать, что gzip не вставляет тысячу разделителей в числах, таким образом, поле может сравниться с нулем? – camh 01.02.2011, 22:36LC_ALL=C
не может причинить боль. – Gilles 'SO- stop being evil' 02.02.2011, 01:44read
вызывается в подоболочке (и$line
не распространен к родителю). объяснение – Chris Down 08.09.2012, 03:15tr
фиксирует это. – Gilles 'SO- stop being evil' 08.09.2012, 14:44