Как я могу сохранить последнюю команду в файл?

Отмена выбора не имеет ни одного замечательного разрешения зависимости, но можно отчасти думать об отмене выбора как проклятия, базирующиеся "синаптический". Однако Вы только хотите сделать выборы с отменой выбора; на самом деле не делайте установки.

После того, чтобы заставлять выборы выполнить это:

apt-get dselect-upgrade

Лучший из обоих миров.

30
07.05.2012, 17:40
4 ответа

Если Вы используете bash, можно использовать fc управляйте для отображения истории в способе, которым Вы хотите:

fc -ln -1

Это распечатает Вашу последнюю команду. -l список средств, -n средства не к строкам префикса с числами команды и -1 говорит для показа просто последней команды. Если пробел в начале строки (только первая строка на многострочных командах) является надоедливым, можно избавиться от этого достаточно легко с sed. Превратите это в функцию оболочки, и у Вас есть решение согласно просьбе (getlast >> LOGBOOK):

getlast() {
    fc -ln "$1" "$1" | sed '1s/^[[:space:]]*//'
}

Это должно функционировать, как Вы попросили в своем вопросе.

Я добавил небольшое изменение путем добавления "$1" "$1" к fc команда. Это позволит Вам говорить, например, getlast mycommand распечатать последний вызов командной строки mycommand, таким образом, если Вы забыли сохранять прежде, чем выполнить другую команду, можно все еще легко сохранить последний экземпляр команды. Если Вы не передаете аргумент getlast (т.е. вызвать fc как fc -ln "" "", это распечатывает просто только последнюю команду).

[Примечание: Ответ, отредактированный для составления комментария @Bram и проблемы, упомянутой в ответе @glenn jackman.]

39
27.01.2020, 19:38
  • 1
    Первая форма fc -lnr | head -n 1 может быть сокращен до fc -lnr -1. –  Bram 07.05.2012, 14:45
  • 2
    @Bram: Хороший материал. Я использовал help fc для моей документации. Страница справочника удара имеет больше деталей, включая это использование отрицательных индексов. Устранение head хорошо, потому что одна оставленная команда встроена поэтому теперь нет никакого ветвления/должностного лица. –  camh 07.05.2012, 14:59
  • 3
    Интересно, почему команду называют fc... –  imz -- Ivan Zakharyaschev 08.05.2012, 00:46
  • 4
    Это обозначает, "фиксируют команду". gnu.org/software/bash/manual/bashref.html#Bash-History-Builtins –  Mikel 08.05.2012, 04:15

Одна проблема с ответом @camh состоит в том, если у Вас есть команда, которая охватывает несколько строк, это только показывает первую строку:

$ echo "one
> two
> three"
one
two
three

$ fc -lnr | head -1
         echo "one

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

$ alias getlast='fc -nl $((HISTCMD - 1))'

$ echo "one
> two
> three"
one
two
three

$ getlast
         echo "one
two
three"
9
27.01.2020, 19:38
  • 1
    cmdhist зафиксирует это: "Если установлено, удар пытается сохранить все строки многолинейной команды в той же записи истории. Это позволяет легкое переиздание многострочных команд". –  Mark McKinstry 08.05.2012, 00:17

Вместо того, чтобы использовать стрелку вверх, можно использовать "!!" относиться к предыдущей команде.

например.

$ some -long --command --difficulty="very hard to remember"
$ echo "!!" >> LOGBOOK

примечание: это не заключает буквенный текст в кавычки

2
27.01.2020, 19:38
  • 1
    Это не получит литеральную команду. Если будут какие-либо метасимволы оболочки, то их оценят и заменят. Конвейеры также повредятся: ls | less -> echo !! >> LOGBOOK -> echo ls | less >> LOGBOOK. –  camh 08.05.2012, 04:04

Можно сделать это со следующей командой при использовании оболочки удара:

$> history -a LOGBOOK

Это добавит все Ваши команды от текущей сессии до того файла, можно также добавить псевдоним на ~/.bashrc файл, чтобы сделать это с единственной командой:

$> alias getlast="history -a LOGBOOK"
0
27.01.2020, 19:38
  • 1
    , Но Вы пропускаете более важное требование, чтобы я только сохранил команды, которые работали и получили результаты, которые я имею. Я не хочу сохранять все недавние команды, которые я сделал, просто избранные после того, как я использовал их. Спасибо так или иначе. –  MattLBeck 07.05.2012, 13:27

Теги

Похожие вопросы