4

Что я обычно печатаю для редактирования файла:

sudo vim Example.php

Я хотел бы напечатать

sim Example.php

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

6 ответов6

8

Позвольте мне ответить на ваш вопрос в нескольких частях.

Настройка псевдонима в Bash

В вашем .bashrc поместите строку следующего содержания:

alias sim="sudo vim"

В некоторых системах (например, Ubuntu) эта строка должна идти в ваш файл .bash_aliases , который будет автоматически загружен по умолчанию .bashrc .

Обратите внимание, что нет необходимости иметь дело с аргументами команды; они будут автоматически добавлены в конец команды sudo vim .

Редактирование как суперпользователь

Возьми все, что я только что сказал, и выбрось.

Обычно лучше вместо этого использовать sudoedit . sudoedit автоматически создаст временную копию файла, который вы можете редактировать без прав суперпользователя. Это означает, что vim будет работать как вы (а не как пользователь root), и после того, как вы закончите редактирование файла, потребуется лишь краткий момент суперпользователя.

Убедиться, что sudoedit работает vim

В системах Debian, используйте sudo update-alternatives --config editor чтобы выбрать предпочитаемый редактор. В противном случае, убедитесь, что $EDITOR установлен в vim в вашем .bashrc .

7

Вместо этого вы используете sudoedit Example.php или sudo -e Example.php . Если это вызывает редактор, отличный от Vim, просто добавьте export EDITOR=vim в ваши файлы запуска bash.

Что касается псевдонима, jschmier верен. Псевдонимы просто раскрываются, а затем любые аргументы обрабатываются нормально. Если вам действительно нужно обработать аргументы (вместо того, чтобы оставлять их на месте после раскрытия псевдонима), вы захотите использовать функцию. Смотрите псевдонимы и функции bash в документации.

1

alias sim='sudo vim $1'

1

alias sim='sudo vim' и вызов как sim Example.php

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

См. Запись псевдонимов в Справочном руководстве Bash для получения более подробной информации.

1

Вместо этого используйте функцию bash. У меня есть функция, которую я использую, чтобы показать дату последнего изменения файла / папки:

function lm()
{
    ls -l "$*" | awk '{print $6, $7, $8}'
}

Попробуй это:

function sim()
{
    sudo vim "$*"
}

$* In bash представляет все аргументы командной строки, то есть все после имени функции.

Затем используйте его так: $ sim -p Example.php Example2.php

0

не совсем точно отвечаю на вопрос, но есть хороший прием, который нужно использовать, когда вы начали редактировать файл и только потом вспомнили, что забыли sudo. Вы можете использовать :w !sudo tee % чтобы сохранить файл со всеми вашими правками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .