Почему Bash автоматически вставляет `--color=auto` в команду `ls`, используемую в функции

Ваш GRUB не имеет тайм-аута. Самое простое решение — настроить его и надеяться, что в дальнейшем система распознает вашу клавиатуру. Вы можете сделать одно из следующих действий:

  1. смонтировать раздел, содержащий Live OS; вы можете добиться этого, подключив флешку к машине с другим Linux (, например, Debian или Ubuntu ), или загрузив другой Linux с другого флеш-накопителя; после того, как вы успешно смонтируете раздел, содержащий Live OS, измените настройки grub вручную;
  2. возможно настроить GRUB Live USB с графическим интерфейсом, таким как grub -настройщик (после chroot в него ), но этот вариант кажется менее вероятным, чем первый.

объявление. 1. Страница GRUB на вики Arch безумно хороша (серьезно ). Вы можете установить время ожидания вручную, отредактировав /etc/default/grub, а затем сгенерировав новый grub.cfgс помощью :grub-mkconfig -o /boot/grub/grub.cfg. Обратитесь к этому разделу Mighty Arch Wiki;)(может потребоваться chroot на диск ).

Вы используете клавиатуру USB или PS2? Если вы используете Arch на ПК, вы можете попробовать старый добрый PS. Однажды у меня была проблема с клавиатурой с GRUB, установленным на Arch (с использованием USB-клавиатуры Windows Natural 4000 при первом подключении ). Но после перезагрузки все пошло гладко и grub реагировал на нажатия клавиш.

Я не эксперт по версиям Live OS, но обычно она должна работать так же, как автономная установка (, если у меня есть некоторый опыт ).

Кстати, Arch — отличный выбор, и я полностью уважаю ваш энтузиазм по поводу его настройки в течение 3 месяцев. Хотя для некоторых аспектов вам может потребоваться еще больше времени, чтобы установить правильную функциональность. Делайте это с удовольствием:)

0
06.08.2019, 16:00
3 ответа

Вы наблюдали задокументированное поведение; в разделе Псевдоним руководства bash:

Aliases are expanded when a function definition is read, not when the function is executed, because a function definition is itself a command.

6
28.04.2021, 23:30

Джефф прав выше. Чтобы увидеть псевдонимы, определенные в вашей оболочке, введите «alias» в командной строке.

Пример:

[USERID ~] $ alias
alias l.='ls -d.* --color=auto'
alias ll='ls -ahlF'
alias ls='ls --color=auto'
alias vi='vim'
[USERID ~] $

Чтобы избежать использования псевдонима в скрипте, вам нужно либо удалить псевдоним команды «ls», либо вызвать ее напрямую. Чтобы найти расположение «ls», используйте встроенную оболочку типа:

[USERID ~] $ type -P ls
/usr/bin/ls

Вы можете поместить это в переменную и вызвать "ls", используя переменную:

[USERID ~] $ lsCmd=$(type -P ls)
[USERID ~] $ echo $lsCmd
/usr/bin/ls
[USERID ~] $ ls
MyAppData  MyDocuments  MyDownloads  Scripts  tmp.VOOlcGffwf  tmp.Y6IE7S2ps4
[USERID ~] $ $lsCmd
MyAppData  MyDocuments  MyDownloads  Scripts  tmp.VOOlcGffwf  tmp.Y6IE7S2ps4

В первом случае вызов только «ls» дает вывод в цвете, потому что «ls» имеет псевдоним «ls --color=auto», но во втором случае вывод выдается без цвета, поскольку псевдоним игнорируется.

0
28.04.2021, 23:30

Оба старых ответа верны, они объясняют, почему и когда Bash расширяет псевдонимы. Но если вы хотите избавиться от (надоедливого )псевдонима ls -, делающего некоторые списки каталогов нечитаемыми со слишком -одинаковыми цветами на экране, определение удаляемого псевдонима находится в файле /etc/skel. /.bashrc

-2
28.04.2021, 23:30

Теги

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