разделы теперь появляются в / mnt, not / media / $ user

Вы можете прочитать одну строку ввода с помощью sed и преобразовать разделитель в символы новой строки, например:

% sed 'y/,/\n/;q' /dev/tty
> this,is,a,single,line
##OUTPUT
this
is
a
single
line

Потому что sed записывает результат в стандартный вывод в виде текстового файла, после чего up с e x plicit grep прост и выполняется в одном потоке. Фактически, вы можете использовать sed как умный tee , если воспользуетесь его функцией w rite to file; и, если вы w обращаетесь к устройствам файловых дескрипторов, вы можете разделить его вывод на основе определенных вами правил.

Функция, которая запрашивает ввод и выводит только разделенный новой строкой список допустимых аргументов для stdout и ошибочный вывод в stderr, может выглядеть так:

_accept_prompt() (
   . /dev/fd/0
   IFS=${delim-,}
   _prompt "$@" >&2
   { _read_split "$@" |
        err=all _grep_ok "$@" |
        sed '1{$d}' >&2
   } 3>&1 | _grep_ok "$@"
) <<\HELPERS

_prompt() {
    cat ; printf ' : '
} <<-PROMPT
    Choose from : $(printf "'%s' " "$@")
    Enter a '$IFS'-delimited selection below...
PROMPT

_read_split() {
    y="y/${IFS}/\n/"
    sed -ne "H;x;s/^/Invalid input IGNORED:/;${y};p;x" \
        -ne "/all/s/.*/$*/;${y};w /dev/fd/3" -ne q
} </dev/tty

_grep_ok() {
    grep -${err+v}xF "$(printf '%s\n' "$@" $err)"
}
HELPERS

Я разделил это на , надеюсь, вспомогательные функции с более описательным названием в вместо комментариев и прикрепил их к основной функции. Таким образом, весь поток происходит в первых нескольких строках. Я надеялся прояснить это.

_read_split выводит два потока - > & 1 и > & 3 . _grep_ok берет первый с определенным $ err и записывает в > & 2 все строки, содержащиеся во входных данных, которые не входят в _accept_prompt ' s позиционные параметры.

_grep_ok одновременно захватывает второй поток - > & 3 и записывает в его > & 1 stdout все строки на входе, которые являются среди позиционных параметров _accept_prompt .

Запуск:

% _accept_prompt this is the list of acceptable parameters
###PROMPT
    Choose from : 'this' 'is' 'the' 'list' 'of' 'acceptable' 'parameters'
    Enter a ','-delimited selection below...
###INPUT
 : all,invalid
###STDOUT
this
is
the
list
of
acceptable
parameters
###STDERR
Invalid input IGNORED:
invalid

Вы можете изменить разделитель запятой по умолчанию , при вызове, например:

delim=? _accept_prompt $args
0
19.12.2018, 18:42
1 ответ

Отредактируйте соответствующую строку в /etc/fstab. Это будет вторая колонка, отвечающая за «цель монтирования». Подробности смотрите в man fstab. Это просто.

0
28.01.2020, 04:06

Теги

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