Все знают команду tree для вывода дерева директорий и файлов рекурсивно и в красивом формате.
В красивом для зрячих, но неудобном для нас. Неудобном в плане чтения отступов.
А сегодня я узнал, что можно вот так:
tree | sed 's/[├─│└]/ /g'Все украшательства заменяются на обычные пробелы, что позволяет скринридеру корректно обработать отступы и проговорить либо пропищать их сигналом.
А разве tree не умеет так сам?
Я проверил: у tree есть ключ -i, который отключает линии отступов, и есть опции для другого стиля символов, например -A, -S и --charset.
Но это не совсем то же самое.
tree -i убирает линии отступов. А мне хочется сохранить саму идею дерева, только заменить псевдографику на обычные пробелы, чтобы скринридеру было легче читать структуру.
Поэтому вариант с sed пока выглядит самым простым и рабочим.
Обёртка stree
Можно создать скрипт вот с таким содержимым:
#!/bin/sh
tree "$@" | sed 's/[├─│└]/ /g'И положить его, например, в:
/usr/local/bin/streeПосле этого сделать исполняемым:
sudo chmod +x /usr/local/bin/streeИ вызывать вместо tree команду stree с любыми желаемыми параметрами от tree.
Например:
stree -L 2или:
stree -a --dirsfirstВсё будет работать, ведь мы передаём утилите весь набор параметров, делая наш скрипт просто обёрткой над оригинальной программой.
Важная мелочь
В скрипте лучше писать именно так:
tree "$@"А не так:
tree $@Первый вариант корректнее обрабатывает аргументы с пробелами и другими весёлыми символами в именах файлов и каталогов.
Вместо заключения
Если вы незрячий, пользуйтесь и радуйтесь.
Не великое инженерное решение, конечно, но свою задачу выполняет идеально.