Как четкая команда работает?

Ответ циновки должен работать на Вас. Я хотел бы указать на другую возможность: используйте initramfs/initrd.

Можно поставить initrd (я - вполне уверенный initramfs, пост2.4, но 2.4 должен иметь initrd), который содержит некоторый код для нахождения rootfs. Преимущество initrd состоит в том, что Вы запускаете Linux в той точке. Можно записать, например, сценарий оболочки, чтобы сделать находит корневую фс. После того как Вы находите его, Вы монтируете его, pivot_root к нему, и должностное лицо/sbin/init.

Вы получаете другие хорошие вещи — например, если различным платам (теперь или в будущем) нужно было загрузить различные модули для наблюдения жесткого диска или других критических по отношению к начальной загрузке устройств, можно сделать это.

Вы могли также поставить различные вещи восстановления там, которые могут оказаться полезными.

(На современном дистрибутиве Linux корень = опция на самом деле обрабатывается initramfs.)

33
14.04.2014, 22:17
6 ответов
[115771] Вывод команды [116141] clear [116142] - это консольные экранирующие коды. Необходимые точные коды зависят от используемого терминала, однако в большинстве случаев используются последовательности управления ANSI. Вот хорошая ссылка, объясняющая различные коды - [116143]http://www.termsys.demon.co.uk/vtansi.htm[116144]. Соответствующими фрагментами являются:

И:

  • Где [116145][116146] - это шестнадцатеричный [116147]1B[116148] или восьмеричный [116149]033[116150]. Другой способ просмотра символов:
26
27.01.2020, 19:37
[115777] Вывод, посылаемый clear(1), зависит от типа вашего терминала, определяемого $TERM в окружении оболочки. Он делает то же самое, что и команда "tput clear", которая ищет экранирующий код текущего типа терминала и посылает эту строку на стандартный вывод.
  • Терминал, получающий экранирующий код от clear/tput, интерпретирует его и выполняет посылаемую команду, например, очищает локальный дисплей. "Терминал" означает локальную консоль или терминальную сессию (putty, xterm и т.д.), возможно через ssh или telnet.[115780].
  • 9
    27.01.2020, 19:37
    [118972]Удивительно, что в других ответах не упоминается TERMINFO (или TERMCAP)[12195]Используйте man-страницы Люк[12196]man clear[119429] говорит ...[12197]TERM[12198]Команда [119430]clear[119431] использует ANSI-эвакуационные последовательности только в том случае, если ваш [119432]$TERM[119433] установлен в ANSI или какой-то ANSI-тип терминала, например, XTERM. [12199]INFOCMP[12200]Можно использовать [119434]infocmp[119435] для исследования [12201]TPUT[12202]Или можно использовать [119436]tput[119437] для просмотра возможности [12203]
    7
    27.01.2020, 19:37
    [115781] В дополнение ко всему хорошему ответу выше, мы можем сделать некоторые шаги, чтобы посмотреть, что произойдет:

    Вы можете видеть, две команды обеспечивают одинаковые [116151] последовательности выхода ANSI[116152].

    6
    27.01.2020, 19:37
    [115763] Он работает путем выдачи определенных [116125] ANSI-эвакуационных последовательностей [116126]. В частности, эти два:

    Esc[линия;колонкаH Позиция курсора:[116301] Esc[Line;Columnf Перемещает курсор на указанную позицию (координаты). Если нет [116302]                                          укажите позицию, курсор переместится в исходную позицию в левом верхнем углу [116303].                                          угол экрана (строка 0, колонка 0).

    SD card with built-in USB interface

    Esc[2J Стереть дисплей: [116304]                                          Очищает экран и перемещает курсор в исходную позицию [116305] (строка 0, столбец 0).

    Hacked SD card, exposing USB interface

    Возможно, это легче понять на выходе [116131]od -c[116132]:

    033[116134] это [116135]Esc[116136], поэтому на выходе выше просто [116137]Esc[H[116138], а затем [116139]Esc[2J[116140].[115770].

    18
    27.01.2020, 19:37

    Во-первых, /bin/echo -e "\x1b\x5b\x48\x1b\x5b\x32\x4a\c" на самом деле не очищает экран. Вы можете прокрутить вверх, чтобы увидеть предыдущее содержимое.

    Во-вторых, я открыл IRB (, интерактивную оболочку Ruby ), и набрал:

    p `clear`
    

    Или

    p %x(clear)

    Или:

    require 'open3'
    p Open3.capture2('clear')[0]
    

    Все коды должны вернуться"\e[3J\e[H\e[2J"

    Теперь откройте терминал, введитеecho -e "\e[3J\e[H\e[2J"

    Экран должен очиститься. Они называются управляющими последовательностями ANSI :

    .

    https://en.wikipedia.org/wiki/ANSI_escape_code

    Вы можете использовать эти коды, чтобы мигать текст (\e[5m), раскрашивать текст:(for i in {0..255} ; do printf "\e[38;5;${i}m${i} " ; done ; echo)и многое другое!

    0
    27.01.2020, 19:37

    Теги

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