Как стать автором
Обновить

Простой bash-скрипт для запуска редактора

Время на прочтение2 мин
Количество просмотров3.7K
Я совсем начинающий убунтовод. Хочу поделиться своим первым простым bash-скриптом:

#!/bin/bash
if [ -z "$1" ]; then
gedit
exit 0
fi
test ! -e "$1" && gedit "$1" || $(test -w "$1" && gedit "$1" || gksu gedit "$1")

Краткое пояснение (для тех, кому и так понятно и влом читать мою словесную пургу):

Перед запуском редактора проверяет, есть ли у пользователя права на изменение файла. Если прав нет, то запускает редактор от имени суперпользователя.
(Если входной файл не указан, то открывает редактор от имени простого пользователя)

Длинное пояснение (для тех, кому читать не влом):

Как вы обычно редактируете текстовые файлы? Если вы запускаете из терминала gedit, vi, nano и т.д., то скрипт, наверное, не для вас.
Я по старой привычке в gnome-commander (или в другом файл-менеджере) жму F4.
А теперь – ситуация, с которой я уже неоднократно сталкивался. Нужно мне отредактировать какой-то файл, который, как выясняется, имеет ограниченные права доступа. Например, хочу добавить новый репозиторий. Нахожу файл sources.list, жму F4, редактирую, пытаюсь сохранить и… получаю сообщение о нехватке прав. Ну да, конечно, мне же надо было запустить редактор от имени суперпользователя, да знаю я, знаю… Только вот что теперь-то делать? Была бы прямо тут кнопка типа «change current user…», так ведь нету. Поэтому приходится копировать весь текст, закрывать редактор, открывать терминал, опять искать нужный каталог, запускать руками gksu gedit sources.list, вводить пароль, вставлять сохраненный текст и, наконец, сохранить изменения. Не слишком ли неэргономично?
Если всегда запускать gnome-commander или gedit от имени суперпользователя, то это, конечно, решит проблему, но такой подход, очевидно, плох.

Поэтому я придумал такое решение:
  1. Создем текстовый файл с названием edit
  2. Вставляем в него приведенный выше код
  3. Сохраняем
  4. Даем этому файлу права на выполнение
  5. Кладем его в /usr/local/bin
  6. В настройках gnome-commander (или вашего любимого файл-менеджера) для редактирования назначаем команду edit %s
Из командной строки тоже можно вызывать edit [file name].

PS: gedit можно поменять на ваш любимый редактор. Если он консольный, то gksu можно поменять на sudo.

UPD: Неправильно обрабатывались файлы с пробелом в имени. Спасибо bappoy, исправил.
Теги:
Хабы:
Всего голосов 32: ↑16 и ↓160
Комментарии9

Публикации

Ближайшие события