Intereting Posts
Найти совпадения для 5-го столбца в файлах с разделителями каналов Сеансы X11: когда сеанс начинается и заканчивается, выполняется ли `gdm` сеанс? Получить права для конкретного пользователя в файле / каталоге Загрузить файл, связанный в MySQL DB, извлечь текст и вставить в db с помощью скрипта bash? ag выводится в терминале иначе, чем при подключении к файлу Синтаксическая ошибка «elif» неожиданное ожидание Confused with symlinks – ссылка, созданная в нужном каталоге Выровнять раздел жесткого диска с помощью fdisk? Как можно регистрировать активность в папке Dropbox? SQLPLUS с циклами сценариев оболочки как я могу запланировать запуск специального скрипта при каждом перезапуске службы Возможно ли запустить клиент-плагин webdav без доступа root? Использование NeuG TRNG с / dev / random? Использование grep для получения UUID Установка записывающего устройства IDE в Fedora Linux

Команда для текстового редактора по умолчанию в терминале

Я часто вижу инструкции, которые включают vim или nano , что означает открыть файл на этом шаге в выбранном текстовом редакторе. Есть ли агностическая команда, которую я могу использовать вместо конкретной программы, которая будет открывать входные данные в текстовом редакторе по умолчанию для пользователя, будь то vim , nano или что-то еще?

Я вижу, что editor упомянутый на боковой панели похожих вопросов, все еще ограничен дистрибутивами на основе Debian? И есть ли альтернатива?

Вы можете использовать $EDITOR , если это определено:

 $EDITOR filename.txt 

Но я думаю, что большинство docs используют nano потому что если кто-то слепо следит за ним, это безопасная ставка для использования. Если пользователь решил, что они предпочитают один редактор над другим, они будут знать достаточно, чтобы заменить его самими vim , emacs и т. Д.

edit может хорошо работать в системах на базе Debian, но на других он вызывает ex , что не рекомендуется.

Если вы используете Bash, который является языком терминалов по умолчанию для всех дистрибутивов linux (насколько мне известно), есть что-то, называемое переменными окружения. Многие из этих переменных настраиваются вашим дистрибутивом, где некоторые должны быть установлены или «экспортированы» вручную. $ EDITOR – это, в частности, (колпачки и знак доллара). Знак доллара означает, что вызывается переменная, а колпачки означают ее переменную окружения. $ HOME – обычное env. переменная, которая сокращается на ~.

Поэтому, чтобы ответить на ваши вопросы лаконично, команда, которую вы запускаете, чтобы использовать редактор по умолчанию для пользователей, отредактируйте файл .txt

 $EDITOR file.txt 

Чтобы установить или экспортировать редактор по умолчанию в vim, поместите это в файл $ HOME / .bashrc пользователя:

 export EDITOR=/bin/vim 

затем выполните:

 source $HOME/.bashrc 

Если переменная $ EDITOR не задана, тогда действительно нет редактора по умолчанию.

Что касается альтернатив, то в псевдонимах бесконечно много:

 Alias E="$EDITOR" 

После поиска файла .bashrc это позволит мне запустить первую команду выше:

 E text.vim 

Однако, не слишком увлекайтесь псевдонимами, так как они могут стать основным препятствием для более продвинутого использования bash.


Другой полезной и подобной переменной окружения является $ PAGER, которая может быть использована для открытия программы по умолчанию для просмотра документов.

 $PAGER file.txt 

Обычным значением по умолчанию для этой переменной env является «less».

Если установлена ​​переменная среды VISUAL , используйте ее.

В противном случае, если задана переменная среды EDITOR , используйте ее.

В противном случае традиция Unix по умолчанию имеет значение vi . Это не совсем удобно – люди, которые используют vi, знают, как настроить свою систему для ее вызова, ваше приложение должно быть дружественным к тем пользователям, которые этого не делают. К сожалению, нет хорошего портативного способа найти достойного редактора. Вы можете попробовать xdg-mime query default , но даже там, где доступна утилита, это не всегда работает. В Debian и Debian-подобных системах вызывается sensible-editor , который делает все это для вас – но я не знаю ничего подобного в других вариантах Unix.

Это дает код типа

 #!/bin/sh if [ -n "$VISUAL" ]; then exec $VISUAL "$@" elif [ -n "$EDITOR" ]; then exec $EDITOR "$@" elif type sensible-editor >/dev/null 2>/dev/null; then exec sensible-editor "$@" elif cmd=$(xdg-mime query default ) 2>/dev/null; [ -n "$cmd" ]; then exec "$cmd" "$@" else editors='nano joe vi' if [ -n "$DISPLAY" ]; then editors="gedit kate $editors" fi for x in $editors; do if type "$x" >/dev/null 2>/dev/null; then exec "$x" "$@" fi done fi 

Большинство программ разделяют пробелы на $VISUAL и $EDITOR , но не все.