LINUX.ORG.RU

Состоялся релиз утилиты tree 1.8.0

 


2

3

Через ~4,5 года после выхода утилиты для показа иерархического списка директорий tree 1.7.0 вышла версия 1.8.0.

Изменения в этой версии:

  • добавлена экспериментальная опция --fromfile; с этой опцией у tree приоритет чтения листинга директорий из файла, а не из файловой системы; '.' указывает на то, что листинг директорий будет читаться из stdin; планируется в итоге дополнить опцию --fromfile опцией --fromjson или вообще заменить первую на последнюю;
  • в BSD добавлена поддержка переменных окружения CLICOLOR и CLICOLOR_FORCE;
  • теперь strftime() используется исключительно для форматирования даты и времени в соответствии с локалью;
  • некоторые man-страницы исправлены и почищены Кириллом Колышкиным;
  • обновлена переменная BINDIR в Makefile для macOS, поскольку в macOS теперь запрещено устанавливать программы в /usr/bin из за System Integrity Protection (SIP);
  • улучшены сообщения об ошибках в указанных опциях;
  • исправлена ошибка с неотображением символических ссылок при активных паттернах (-P);
  • исправлены сообщения об ошибках в аргументах с длинными форматами;
  • исправлена ошибка с запятыми при выводе в формате JSON;
  • теперь при выводе размера файлов/директорий в формате JSON не игнорируются опции -h/--si;
  • исправлена некорректная обработка строк Unicode;
  • исправлена ошибка с использованием mbstowcs(), где из за некорректных для UTF-8 последовательностей байтов в строках не получалось закрыть строку и выводился мусор;
  • исправлена ошибка, приводящая к выводу неверной информации об inode и устройстве для символических ссылок.

>>> Подробности

★★★★★

Проверено: jollheef ()

А где ссылка на первоисточник?

Odalist ★★★★★ ()
Ответ на: комментарий от saahriktu

Первая ссылка у меня открылась, вторая тоже.

Odalist ★★★★★ ()
Ответ на: комментарий от Odalist

А у меня нет.

$ ping -c 10 mama.indstate.edu
PING mama.indstate.edu (139.102.70.201) 56(84) bytes of data.

--- mama.indstate.edu ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9239ms
$ traceroute mama.indstate.edu
traceroute to mama.indstate.edu (139.102.70.201), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  0.537 ms  0.873 ms  1.176 ms
 2  l0.asr10k6.edge.soskol.ru (91.204.176.25)  5.776 ms  5.785 ms  5.780 ms
 3  192.168.3.222 (192.168.3.222)  5.775 ms  5.868 ms  5.863 ms
 4  192.168.3.221 (192.168.3.221)  5.961 ms  6.037 ms  6.100 ms
 5  193.106.112.5 (193.106.112.5)  14.678 ms  14.686 ms  18.156 ms
 6  mskix.he.net (195.208.210.40)  38.752 ms  34.336 ms  33.951 ms
 7  100ge9-2.core1.sto1.he.net (184.104.192.81)  34.821 ms  34.997 ms  35.584 ms
 8  100ge12-1.core1.fra1.he.net (184.105.64.105)  48.593 ms 100ge8-2.core1.ams1.he.net (184.105.65.125)  69.806 ms 100ge12-1.core1.fra1.he.net (184.105.64.105)  48.955 ms
 9  100ge16-1.core1.lon2.he.net (72.52.92.213)  59.775 ms  60.017 ms 100ge1-1.core1.par2.he.net (72.52.92.13)  64.634 ms
10  100ge14-1.core1.nyc4.he.net (184.105.81.77)  129.915 ms  130.082 ms 100ge13-2.core1.nyc4.he.net (72.52.92.166)  128.125 ms
11  100ge9-1.core2.chi1.he.net (184.105.223.161)  142.985 ms  143.041 ms  143.267 ms
12  100ge15-2.core1.chi1.he.net (184.104.192.117)  141.869 ms  143.976 ms  141.819 ms
13  100ge6-1.core1.ind1.he.net (184.105.65.182)  147.218 ms  149.360 ms  147.421 ms
14  indiana-university-co-indiana-gigapop.10gigabitethernet12-5.core1.ind1.he.net (184.105.35.194)  148.093 ms  149.239 ms  148.079 ms
15  ae-0.2009.rtr.ipiu.ilight.net (199.8.220.74)  146.219 ms  146.934 ms  145.381 ms
16  et-9-0-0.129.rtr.iphe.ilight.net (199.8.216.33)  147.644 ms  147.719 ms  148.058 ms
17  199.8.202.10 (199.8.202.10)  149.238 ms  149.484 ms  147.447 ms
18  * * *
19  * * *
20  * * *
21  * * *
До Индианаполиса пакеты доходят, а уже там где-то пропадают.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

А у меня нет.

У тебя что то не то. У меня все нормально. Вот результат:

ping -c 10 mama.indstate.edu

PING mama.indstate.edu (139.102.70.201) 56(84) bytes of data.
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=1 ttl=48 time=141 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=2 ttl=48 time=140 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=3 ttl=48 time=140 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=4 ttl=48 time=141 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=5 ttl=48 time=140 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=6 ttl=48 time=141 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=7 ttl=48 time=141 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=8 ttl=48 time=140 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=9 ttl=48 time=141 ms
64 bytes from mama.indstate.edu (139.102.70.201): icmp_seq=10 ttl=48 time=141 ms
--- mama.indstate.edu ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 140.799/141.183/141.857/0.366 ms
Odalist ★★★★★ ()

Годно! Пользуюсь с выводом сразу в файл. Молодцы, что допилили JSON.

Deleted ()

планируется в итоге дополнить опцию --fromfile опцией --fromjson или вообще заменить первую на последнюю

Можно пояснить смысл такого ключа? Это ведь должен быть JSON определённого формата, который формирует какая-то другая программа? Или предполагается, что самой же tree сохраняем в нём структуру каталогов, а потом где-то в другом месте либо после изменения ФС её читаем?

P.S. Сайт у меня тоже не открылся.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)

из за

Проверено: jollheef

anonymous ()
Ответ на: комментарий от Odalist

У тебя что то не то.

У меня тоже дальше 199.8.202.10 в traceroute не заходит.

gentoo_root ★★★★★ ()

'.' указывает на то, что листинг директорий будет читаться из stdin

почему не '-'?

MyTrooName ★★★★★ ()

А ASCII-режим туда что, не завезли?

EXL ★★★★★ ()
Ответ на: комментарий от saahriktu

На лэптопе не открывается, на телефоне открывается, но как-то задумчиво. Через один роутер. Гугль-днсвпн помогает?

greenman ★★★★★ ()
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Очень странно, у меня тоже открывается исключительно через VPN.

Хотя в ту сторону у прова точно ограничений нет. Видимо, проблемы у них.

Неплохо было бы сообщить.

Twissel ★★★★★ ()
Ответ на: комментарий от EXL

Завезли. Через указание кодировки вывода.

$ tree rpmbuild/
rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS
│   ├── noarch
│   └── x86_64
├── SOURCES
├── SPECS
└── SRPMS

8 directories, 0 files
$ tree --charset ascii rpmbuild/
rpmbuild/
|-- BUILD
|-- BUILDROOT
|-- RPMS
|   |-- noarch
|   `-- x86_64
|-- SOURCES
|-- SPECS
`-- SRPMS

8 directories, 0 files
$

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

О и правда, XML/JSON есть — это прикольно.

Хороший годный релиз.

Exmor_RS ★★ ()

Думал релиз tee анаонсировали, а тут всего лишь tree вышел(

gfederix ()

Через ~4,5 года после выхода утилиты для иерархического листинга директорий tree 1.7.0 вышла версия 1.8.0.

Это вам не всякие там дополненные реальности, искусственные интеллекты и прочая чушь, это ПРОГРЕСС!

Alve ★★★★★ ()
Ответ на: комментарий от Alve

это ПРОГРЕСС!

Как ни странно - это фундамент нашего прогресса ;)

Deleted ()

Только в новостях относящихся к линукс первая страница комментариев про то, что у кого-то что-то отвалилось и не работает.

buggycoder ()

Ну что же, раз состоялся, значит можно и накатить, а то я вот до обеда всё искал повод.

Bruce_Lee ★★ ()
Ответ на: комментарий от buggycoder

не работает

Самое интересное то что «не работает» к сабжу не имеет отношения.

Nao ★★★★★ ()

некоторые man-страницы исправлены и почищены Кириллом Колышкиным
Кириллом Колышкиным

Только Кирилл не остался без внимания. Остальные так мало работали, сравнительно с Кириллом, что их имена канули в лету.

Торвальдс, Поттеринг, Столлман и Колышкин. Вот они - славные титаны линукса

anonymous ()

Неплохо, осталось вычистить баги, падения, утечки ОЗУ, бреши безопасности, и, наконец, обеспечить вывод в панельку и можно будет пользоваться.

AVL2 ★★★★★ ()
Ответ на: комментарий от env

И совершенно верно заблокирован. В этой версии появился вывод дерева из файлов. Обмениваясь файлами со спецсодержимым наркоманы с помощью оной программы видят на экране психоделические трипы. А порноманы обнажонку.

AVL2 ★★★★★ ()

Где скриншот?

anonymous ()

JSON, JSON, JSON

Ждем поддержку JSON в Ядре и интерфейс ls на Электроне.

urxvt ★★★★★ ()

Скриншотов бы.

anonymous ()

добавлена экспериментальная опция --fromfile; с этой опцией у tree приоритет чтения листинга директорий из файла, а не из файловой системы

Зачем читать список из файла? Как я понимаю, суть именно в том, чтобы читать с диска и красиво нарисовать на экране или в файле. Но читать из файла?

beck ()
Ответ на: комментарий от beck

Могут быть разные юзкейсы. Например, если данные из ФС уже прочитаны и на диске ничего не менялось, то зачем обращаться к ФС ещё раз? А если уже нет доступа к ФС на каком-либо носителе? Можно, пока есть доступ к носителю, сохранить данные в файл, а потом уже смотреть на вывод tree без этого носителя (при этом применяя разные опции). И т.д.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 2)

а оно умеет в xslt-compatible?

etwrq ★★★★ ()

Эт та, которая есть в досе еще со времен вин 3.11 и ранее?

Zhbert ★★★★★ ()
Ответ на: комментарий от saahriktu

Это хорошо. Так как есть системы, в которых «├──» тупо не отображаются.

EXL ★★★★★ ()
Ответ на: комментарий от AVL2

Обмениваясь файлами со спецсодержимым наркоманы с помощью оной программы видят на экране психоделические трипы. А порноманы обнажонку.

А любители поней?

buggycoder ()
Ответ на: комментарий от saahriktu

Например, если данные из ФС уже прочитаны и на диске ничего не менялось, то зачем обращаться к ФС ещё раз?

Как узнать, что ничего не поменялось?

А если уже нет доступа к ФС на каком-либо носителе? Можно, пока есть доступ к носителю, сохранить данные в файл, а потом уже смотреть на вывод tree без этого носителя

Можно смотреть в файл без этого вашего tree.

beck ()
Ответ на: комментарий от beck

Как узнать, что ничего не поменялось?

Если юзер ничего не менял и нет процессов, которые могли поменять, то ничего не поменялось.

Можно смотреть в файл без этого вашего tree.

А можно и при помощи tree.

saahriktu ★★★★★ ()
Ответ на: комментарий от buggycoder

Эти вообще уже целые сериалы сконвертили в *.tree и выложили в торренты с хардсабами на ангельском наречии

AVL2 ★★★★★ ()

Хорошая досовская утилита. Когда уже звуковые и видеодрова почините чтобы сыграть в дум в родном окружении?

Napilnik ★★★★★ ()
Ответ на: комментарий от saahriktu

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

beck ()

Сто лет не пользовался tree. Хотя стоит, конечно.

Deleted ()

Чё-то он не может нормально обрабатывать взаимоисключающие флаги. Если включить XML и JSON вывод одновременно, то программа не завершается с ошибкой, а выводит невалидный XML:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory name=".">
    <directory name="dir1">
      <directory name="subdir1">
        <file name="file1"></file>
        <file name="file2"></file>
      </directory>
      <directory name="subdir2">
        <file name="file1"></file>
        <file name="file2"></file>
      </directory>
    </directory>
    <directory name="dir2">
      <directory name="subdir1">
        <file name="file1"></file>
        <file name="file2"></file>
      </directory>
      <directory name="subdir2">
        <file name="file1"></file>
        <file name="file2"></file>
      </directory>
    </directory>
  </directory>
  ]}  <report>
    <directories>6</directories>
    <files>8</files>
  </report>
</tree>

А если включить JSON и HTML, то report выводится не текстом, а в JSON:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="Author" content="Made by 'tree'">
 <meta name="GENERATOR" content="$Version: $ tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $">
 <title>Directory Tree</title>
 <style type="text/css">
  <!--
  BODY { font-family : ariel, monospace, sans-serif; }
  P { font-weight: normal; font-family : ariel, monospace, sans-serif; color: black; background-color: transparent;}
  B { font-weight: normal; color: black; background-color: transparent;}
  A:visited { font-weight : normal; text-decoration : none; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
  A:link    { font-weight : normal; text-decoration : none; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
  A:hover   { color : #000000; font-weight : normal; text-decoration : underline; background-color : yellow; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
  A:active  { color : #000000; font-weight: normal; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
  .VERSION { font-size: small; font-family : arial, sans-serif; }
  .NORM  { color: black;  background-color: transparent;}
  .FIFO  { color: purple; background-color: transparent;}
  .CHAR  { color: yellow; background-color: transparent;}
  .DIR   { color: blue;   background-color: transparent;}
  .BLOCK { color: yellow; background-color: transparent;}
  .LINK  { color: aqua;   background-color: transparent;}
  .SOCK  { color: fuchsia;background-color: transparent;}
  .EXEC  { color: green;  background-color: transparent;}
  -->
 </style>
</head>
<body>
	<h1>Directory Tree</h1><p>
	<a href="base">base</a>{"type":"directory","name": ".","contents":[<br>
	├── <a href="base/dir1/">dir1</a><br>
	│   ├── <a href="base/dir1/subdir1/">subdir1</a><br>
	│   │   ├── <a href="base/dir1/subdir1/file1">file1</a><br>
	│   │   └── <a href="base/dir1/subdir1/file2">file2</a><br>
	│   └── <a href="base/dir1/subdir2/">subdir2</a><br>
	│       ├── <a href="base/dir1/subdir2/file1">file1</a><br>
	│       └── <a href="base/dir1/subdir2/file2">file2</a><br>
	└── <a href="base/dir2/">dir2</a><br>
	    ├── <a href="base/dir2/subdir1/">subdir1</a><br>
	    │   ├── <a href="base/dir2/subdir1/file1">file1</a><br>
	    │   └── <a href="base/dir2/subdir1/file2">file2</a><br>
	    └── <a href="base/dir2/subdir2/">subdir2</a><br>
	        ├── <a href="base/dir2/subdir2/file1">file1</a><br>
	        └── <a href="base/dir2/subdir2/file2">file2</a><br>
  ]}	<br><br>
	</p>
	<p>
,
  {"type":"report","directories":6,"files":8}	<br><br>
	</p>
	<hr>
	<p class="VERSION">
		 tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore <br>
		 HTML output hacked and copyleft © 1998 by Francesc Rocher <br>
		 JSON output hacked and copyleft © 2014 by Florian Sesser <br>
		 Charsets / OS/2 support © 2001 by Kyosuke Tokoro
	</p>
</body>
</html>

Отписал мейнтейнеру.

theNamelessOne ★★★★★ ()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от beck

Не знаю, работает ли это так, но, могу предположить, что на случай, когда список файлов есть, а доступа к первоисточнику - нет.

undefiened ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.