Vim нужен его стандартный вход, чтобы быть терминалом, где Вы введете команды, но это добирается также /dev/null
или канал от grep
в зависимости от Вашего xargs
реализация.
Можно восстановить стандартный вход через промежуточную оболочку.
grep -rl test . | xargs sh -c 'vim -- "$@" <$0' /dev/tty
Если имена файлов не содержат пробельного символа или какого-либо из \[?*
, можно использовать замену команды вместо этого:
vim $(grep -rl test .)
Один способ справиться со специальными символами (кроме новой строки) состоит в том, чтобы ограничить разделение слова новыми строками и выключить globbing.
(IFS='
'; set -f; exec vim $(grep -rl test .))
Если вы хотите экспериментировать с разными ядрами, вам придется либо перезагрузить или запустить их на виртуальной машине. Виртуальные машины удобнее, но затем вы не можете проверить ядро на своем реальном оборудовании.
Если вы хотите иметь разные настройки с различными наборами установленных программ, вы также можете использовать виртуальную машину. Если вы хотите избежать накладных расходов виртуальной машины, вы можете установить распределение в Chroot . Я часто делаю это, чтобы иметь легкий доступ к 32-разрядным программам на 64-разрядной установке или иметь новейшие вещи (например, Debian нестабильный) в дополнение к стабильной решате (например, устойчивое). Я написал руководство для настройки Chroot для альтернативных выпусков Debian / Ubuntu . Смотрите также Легкие изолированные изолированные среда Linux
Я не думаю, что это возможно.
Теоретически Вы захотите сделать следующее:
init 1
, где теоретически у Вас есть только init и bash прогон. init 5
(или 2 или любой другой подходящий раздел). Проблема в том, что swot_root изменяет только корневой раздел для текущего процесса, что означает, что это не повлияет на init, и когда вы скажете init запустить систему, он запустит ваш старый раздел. Вам понадобится какой-нибудь способ указать init'у, чтобы он выполнил команду pivot_root, что я не думаю, что это возможно.
О, и давайте не будем вдаваться в то, что происходит, когда другая ваша операционная система использует другой init сервис (например, Fedora использует systemd, в то время как Ubuntu имеет upstart). Вам нужно будет заменить init-процесс (pid 1) под ядром, а это на самом деле никуда не годится.
Если вы не хотите / нужно менять ядра, но просто хочу использовать другие файловые системы, как вы, кажется, указываете здесь:
Очевидно, ядро не изменится, но это нормально, я надеюсь просто изменить рабочие разделы.
Тогда, возможно, вам просто понадобится (смонтировать и) chroot, что, если использовать ваши слова,
Вы можете думать об этом как о простой смене корневого раздела на лету
Я все время использую chroot из систем восстановления (например, clonezilla) для взаимодействия с файловой системой, которая обычно используется в другом ядре. Я не ожидаю, что у меня появится возможность загружать новые модули ядра, но это нормально для чтения и записи файлов (исправление fstab, настройка grub.conf и т. Д.).
Вы можете использовать привязку монтирования, чтобы сделать среду chroot более полезной. Я постоянно использую это для репликации смонтированных файловых систем внутри целевого объекта chroot:
mount /dev/sda1 /mnt
for d in dev sys proc; do mount -obind /$d /mnt/$d; done
chroot /mnt