Этот вопрос не о команде cp .

У меня нет мыши и графического интерфейса на сервере Ubuntu, но я хотел бы сохранить некоторые команды в файле, чтобы потом их можно было использовать позже.

Мой единственный выбор - перепечатать их в файле (используя Vi/Nano/ что угодно), или есть способ скопировать их?

3 ответа3

1

Конечно, есть и механизм истории bash. Если включено, bash будет хранить файл ~/.bash_history который содержит все введенные вами командные строки, вплоть до максимального количества записей.

Также есть команда fc для просмотра истории, не просматривая файл, например fc -l 1 | fgrep echo для вывода списка всех строк истории, содержащих echo где угодно.

Все это, конечно, можно настроить:

  • HISTFILE устанавливает имя файла истории вместо ~/bash_history
  • HISTSIZE устанавливает максимальное количество записей, которые хранятся в истории (по умолчанию 500).
  • HISTCONTROL позволяет немного настроить то, что хранится в истории, а что нет. Установив HISTCONTROL=ignoreboth повторяющиеся записи сохраняются только один раз, и вы можете предотвратить отображение отдельных командных строк в истории, добавив пробел (например,  ls вместо ls).

Мне нравится держать HISTSIZE настолько большим, насколько я могу, не замедляя свою машину, это обычно около 50000 или около того, прежде чем она становится заметной. Таким образом, я могу вернуться на месяцы, если я не запомнил этот сложный трубопровод или что-то еще, и мне это нужно снова.

(Я сам не использую bash, только zsh, но из того, что я понял из man-страницы, механизм похож. Кто-нибудь, пожалуйста, поправьте меня, если я ошибся в деталях. )

0

Нашел это!

Допустим, у вас есть какая-то большая команда, добавьте echo перед командой и перенаправьте stdout в файл.

Пример для команды

someapp -wich have a lot of arguments and -is boring -to type

Тип

echo someapp -wich have a lot of arguments and -is boring -to type > file.sh

Это создаст файл .sh, который содержит команду

0

То, что вы хотите, должно / могло быть сделано с помощью псевдонима команды.

Вы можете создать отдельные файлы для каждой сложной команды, но это как раз то, для чего alias .

Ты сделаешь

alias sa='someapp -wich have a lot of arguments and -is boring -to type'

и когда вы введете sa + enter в командной строке, она запустит вашу программу с аргументами.

Чтобы пережить перезапуск bash вам нужно добавить их в ~/.bashrc (или ~/.kshrc или любую другую оболочку, которую вы используете).

Моя выглядит так:

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

Таким образом, вы можете добавить свой alias там.

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