Цитированные имена файлов с пробелами в выводе ls в OSX

Это решение также действительно для zsh

FLAG="-m VARIABLE"
DESCRIPTION="This is a very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long sentence"
DISTANCE_FLAG=3

WIDTH1=$(echo "$FLAG" | wc -c ) 
WIDTH2=$(($(tput cols)-$DISTANCE_FLAG -$WIDTH1 ))

paste <(echo $FLAG ) <(echo $DESCRIPTION | fold -sw $(( $(tput cols) -     $DISTANCE_FLAG -$WIDTH1     )) )| pr -t -e$(($DISTANCE_FLAG+$WIDTH1))
2
17.03.2016, 00:21
2 ответа

Это новая функция Coreutils ls.

Из документации info:

'-N'
'--literal'
'--quoting-style=literal'

Не заключать имена файлов в кавычки. Однако, при использовании 'ls' неграфические символы все равно печатаются как вопросительные знаки, если вывод является терминалом и вы не указали опцию '--show-control-chars'.

4
27.01.2020, 21:59

Чтобы отключить эту функцию, добавьте export QUOTING_STYLE = literal в свой ~ / .bashrc или, если вы используют последние GNU coreutils с оболочками, которые не поддерживают export var = value , используйте:

QUOTING_STYLE=literal
export QUOTING_STYLE

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

Кстати, Debian вернул поведение в coreutils 8.25-2, поэтому оно лишь ненадолго присутствовало в sid в 8.25-1.

1
27.01.2020, 21:59

Теги

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