fish
подчеркивание действительного пути по умолчанию:
$ set | grep fish_color_valid_path
fish_color_valid_path --underline
Вам нужно только сбросить его:
$ set fish_color_valid_path
$ ls /etc/fstab
Эта подпрограмма должна решить вашу задачу разделения строки -. Адаптируйтесь к вашим потребностям:
$ cat go.sh
#!/usr/bin/env bash
str="This will be divided"
ptr=0
interval=3
while [[ $ptr -le ${#str} ]]; do
printf "'%-3s'\n" "${str:$((ptr)):$((interval))}"
ptr=$((ptr+interval))
done
Используется:
$./go.sh
'Thi'
's w'
'ill'
' be'
' di'
'vid'
'ed '
При этом используется встроенный bash
инструмент расширения параметров для извлечения подстроки. Учитывая переменнуюfoo
:
$foo
заменяется содержимымfoo
${#foo}
заменяется количеством элементов в foo
. Для массива это количество присвоенных значений; для массива, отличного от -, это длина строки, представленной $foo
(foo=10; echo ${#foo}
, дает2
). ${foo:4:4}
заменяется содержимым foo
, начиная с пятого символа (ноль является первым индексом ), для четырех символов. Последнее из них является ключевым здесь. :Мы используем нашу строку, указатель на то, сколько символов мы уже напечатали, и определенный интервал.
Мы объединим это с отформатированными строками.:%-3s
выведет выровненную по левому краю -строку, дополненную пробелом -. Поэтому, если мы указываем только один или два символа, справа для нас добавляется пробел.
Для записи в файлы можно просто изменить
printf "'%-3s'\n" "${str:$((ptr)):$((interval))}"
-
fname="$dir/$(shuf -n 1 "$1")"
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 > "$fname"
printf "'%-3s'\n" "${str:$((ptr)):$((interval))}" >> "$fname"