LINUX.ORG.RU

Ищется лайфхак для bash

 , , ,


0

2

Здравствуйте

Многие, наверное, сталкивались с такой оказией: вводишь команду в терминал, а тебе оттуда «у вас нет прав». Вводишь su, пароль и затем снова надо ввести команду, но вот незадача bash_history у пользователя и рута разные и приходится копировать или перепечатывать заново.

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

★★★★★

Последнее исправление: makoven (всего исправлений: 1)

su $SHELL -c "$@" _ !!
anonymous
()
Ответ на: комментарий от Deleted

На самом деле это не те решения которые ты нажимаешь на клавиши и не болит голова.

anonymous
()

Правильный ответ это одно баш_хистори для рута и пользователя путём ln -s (с предоставлением пользователю прав на запись).

anonymous
()
Ответ на: комментарий от anonymous

Нет, правильный ответ - надо работать под рутом

zolden ★★★★★
()
Ответ на: комментарий от Zmicier

Я так и написал «Вводишь su, пароль и затем снова надо ввести команду». Я же совсем тупой, чтобы про -с не знать )

makoven ★★★★★
() автор топика
Ответ на: комментарий от makoven

Я так и написал...

Давайте вы все-таки согласитесь, что мне со стороны виднее, что́ вы написали. :-)

Тем не менее, то, что общепринятого способа нет, не означает, что его нельзя накостылять (последняя строчка введенная руками — s !!):

$ type s
s is a function
s () 
{ 
    local cmd;
    printf -v cmd '%q ' "$@";
    sudo "$SHELL" -i  <<EOF
$cmd
exec < /dev/tty
EOF

}
$ wc /etc/shadow
wc: /etc/shadow: Permission denied
$ s !!
s wc /etc/shadow
# wc /etc/shadow
  69   69 2591 /etc/shadow
# exec < /dev/tty
# 

Адаптировать под su -c мне лень — там должно получиться существенно больше экранов.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

там должно получиться существенно больше экранов

Ну да. Пароль запрашивать, отключив echo через stty

А что делает заклинание exec < /dev/tty ?

makoven ★★★★★
() автор топика
Ответ на: комментарий от makoven

Переключает стандартный ввод со здешнего документа на телетайп.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.