LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

алиас на sudo $EDITOR для файлов владельца root:root

Не всякий файл, принадлежащий сверхпользователю, не может быть записан вами. Не всякий файл, что не может быть записан вами, принадлежит сверхпользователю.

Сейчас извлеку из подшивки старый скриптик. Вот, по-моему, она даже когда-то работал:

#!/bin/bash

USAGE=$"Usage: trysudo { view | edit } <file>

View or edit a <file> resorting to sudo if necessary."

# if the script is started from GUI
if [[ ! -t 1 && -v DISPLAY ]]; then
    msg() { kdialog --title "$SCRIPTNAME" --error "$*"; }
    sudo='kdesudo'
    editor='gvim'
    viewer='gview'
# if from terminal
elif [[ -t 1 ]]; then
    msg() { printf >&2 "$SCRIPTNAME: $*\n"; }
    sudo='sudo'
    editor='vim'
    viewer='view'
else
    exit 1
fi

err() {
    msg "$*"
    exit 1
}

ftype() {
    stat --dereference -c '%F' "$1"
}

(($# == 2)) || err "$USAGE"
ACTION="$1"
FILE="$2"

[[ -e $FILE ]] || err $"$FILE does not exist"
FTYPE="$(ftype "$FILE")"
[[ $FTYPE == 'regular file' ]] || err $"$FILE is $FTYPE, not a regular file"

case "$ACTION" in
    'edit')
	if [[ -w $FILE ]]; then
	    exec $editor "$FILE"
	else
	    exec $sudo $editor "$FILE"
	fi
	;;
    'view')
	if [[ -r $FILE ]]; then
	    exec $viewer "$FILE"
	else
	    exec $sudo $viewer "$FILE"
	fi
	;;
    *)
	err "$USAGE"
esac

Вим и ка-дэ-ешные приблуды заменить по вкусу, разумеется.

Исходная версия Zmicier, :

алиас на sudo $EDITOR для файлов владельца root:root

Не всякий файл, принадлежащий сверхпользователю, не может быть записан вами. Не всякий файл, что не может быть записан вами, принадлежит сверхпользователю.

Сейчас извлеку из подшивки старый скриптик. Вот, по-моему, она даже когда-то работал:

#!/bin/bash

USAGE=$"Usage: trysudo { view | edit } <file>

View or edit a <file> resorting to sudo if necessary."

iscmd() {
    command -v >&- "$@"
}

# if the script is started from GUI
if [[ ! -t 1 && -v DISPLAY ]]; then
    msg() { kdialog --title "$SCRIPTNAME" --error "$*"; }
    sudo='kdesudo'
    editor='gvim'
    viewer='gview'
# if from terminal
elif [[ -t 1 ]]; then
    msg() { printf >&2 "$SCRIPTNAME: $*\n"; }
    sudo='sudo'
    editor='vim'
    viewer='view'
else
    exit 1
fi

err() {
    msg "$*"
    exit 1
}

ftype() {
    stat --dereference -c '%F' "$1"
}

(($# == 2)) || err "$USAGE"
ACTION="$1"
FILE="$2"

[[ -e $FILE ]] || err $"$FILE does not exist"
FTYPE="$(ftype "$FILE")"
[[ $FTYPE == 'regular file' ]] || err $"$FILE is $FTYPE, not a regular file"

case "$ACTION" in
    'edit')
	if [[ -w $FILE ]]; then
	    exec $editor "$FILE"
	else
	    exec $sudo $editor "$FILE"
	fi
	;;
    'view')
	if [[ -r $FILE ]]; then
	    exec $viewer "$FILE"
	else
	    exec $sudo $viewer "$FILE"
	fi
	;;
    *)
	err "$USAGE"
esac

Вим и ка-дэ-ешные приблуды заменить по вкусу, разумеется.