LINUX.ORG.RU
ФорумAdmin

Сохранение консольных команд


2

3

Кто как решает проблему запоминания команд и действий? Какие методы и программы используете?

Понадобилось мне, например, переконвертировать видео из одного формата в другой, или просмотреть подробную информацию о состоянии батареи. Каждый день я вряд ли буду выполнять подобные команды. Но раз в месяц/год они могут понадобиться. Однако, за такое время эти команды улетучиваются как из моей памяти, так и из истории команд. Хотелось бы иметь возможность легко и быстро записать такие команды, с последующей возможностью также легко и быстро найти их и воспроизвести.

Еще бывает требуется выполнить серию команд и правок. Можно записывать все действия в текстовый файл, но это мутарно. Поскольку, во-первых, не сразу находишь нужную последовательность действий и выполняешь много лишнего и может даже неправильного, и во-вторых, после того, как все сделал, собрать воедино все свои действия является тоже трудоемкой задачей. В большинстве случаев я просто не стану тратить на это свое время. Но все-таки при необходимости повторить действия не хотелось бы снова лезть в гугл.

Недавно осознав, какое огромное количество труда было затрачено на чтение интернета и мануалов, мне стало очень жаль, что это время фактически утеряно. Большую часть всего, что я узнал, я уже давным давно забыл. Стал искать на эту тему, но ничего кроме bash history найти не смог. Под Mac видел программку для админов: что-то вроде каталога полезных команд, с возможностью запустить команду, а также добавлять свои. Под Linux ничего подобного найти не могу. Хотя, ИМХО, та программа не очень удобна, т.к. центральным должен быть не список, а рабочая консоль. Но хоть что-то есть - и то приятно.

Как мне видится решение этих задач.

Для запоминания команд эмулятор терминала должен иметь расширение в виде боковой панели со списком команд. Комбинация клавиш сохраняет текущую строку в список, при этом указываются метки. Панель имеет строку поиска по содержимому команд и по меткам. Выбранную команду можно перенести обратно в консоль. Это ВСЕ. Необходимости в каких-либо усложнениях я не вижу, данный функционал совершенно разрешил бы мою проблему самым удобным способом. Есть мысль реализовать такое, если ничего подобного не найду.

С запоминанием действий сложнее. Было бы удобно, если бы эмулятор имел режим записи, в котором он записывает все запущенные команды, а также отслеживает запуск текстового редактора и сохраняет разницу в измененном файле. Каждой записи присваивается имя, возможно описание и метки. Представление записи может быть как в виде действий в хронологическом порядке, так и с группировкой по командам или по редактируемым файлам. Даже без функции воспроизведения всей записи или отдельных команд подобная вещь была бы крайне полезной для меня. А возможность повторного воспроизведения, возможно, была бы полезна для администраторов, в чьем подчинении большое количество машин.

Ваши мнения?


>Поскольку, во-первых, не сразу находишь нужную последовательность действий и выполняешь много лишнего и может даже неправильного, и во-вторых, после того, как все сделал, собрать воедино все свои действия является тоже трудоемкой задачей.

Звучит как приговор.

aedeph ()

1) Для запоминания я увеличил количество запоминания в history до нужного мне количества команд

2) По поводу запоминания действий лучше всего имхо понять зачем эти действия нужны ваще и для чего их делают.. Лучше всего запоминается то что ты чётко представляешь зачем оно надо и как работает ИМХО

Tok ★★ ()

1. историю команд рассматриваешь и сохраняешь «шедевры» в отдельный файл с комментариями

2. rcs (с комментариями) для работы с конфигами покажет тебе историю всех изменений

sdio ★★★★★ ()

Не надо запоминать команды. Запомните что вы делали и в следующий раз читать надо будет меньше или вообще не придется.

TGZ ★★★★ ()

1. Большая хистори
2. Команду вводите в виде

command #command comment
Когда понадобится - делаете Ctrl+R и ищете по описанию из комментария
3. Сверхшедевры постите на лоре и commandlinefu.com

zolden ★★★★★ ()

> Поскольку, во-первых, не сразу находишь нужную последовательность действий и выполняешь много лишнего и может даже неправильного, и во-вторых, после того, как все сделал, собрать воедино все свои действия является тоже трудоемкой задачей.

Лол, это называется - программирование. Программисты, чтобы каждый раз перед запуском не писать программу заново, сохраняют ее в файлик. True story.

Недавно осознав, какое огромное количество труда было затрачено на чтение интернета и мануалов, мне стало очень жаль, что это время фактически утеряно.

Особенно когда Вася из 7-го класса делает тоже самое за пять секунд без напрягов. Поставь себе уже нормальный дистрибутив с полноценной DE и обилием GUI программ.

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

Возможно, моя память работает не так эффективно как ваша :)

Я не делаю того, чего не понимаю. Прежде чем вносить изменения, я разбираюсь с тем, что это такое и на что влияет. Но это все равно не помогает мне запомнить названия файлов, параметров команд и так далее.

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

> Лол, это называется - программирование. Программисты, чтобы каждый раз перед запуском не писать программу заново, сохраняют ее в файлик. True story.

Сказал программист программисту.

Это не эффективно. Это еще сложнее, чем просто записать все в текстовый файл, потому что придется заодно еще и отладить, интерфейс продумать, набор параметров, взаимодействие с пользователем (т.е. со мной) кто будет заниматься этой ерундой ради того, чтобы запустить такую программу пару раз? И да, Вы, как программист, наверное должны были слышать термин «автоматизация».

Особенно когда Вася из 7-го класса делает тоже самое за пять секунд без напрягов. Поставь себе уже нормальный дистрибутив с полноценной DE и обилием GUI программ.

Бред, простите. У меня нормальное (K)DE. Оно ни при каких обстоятельствах не сможет решить все задачи.

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

> 1. Большая хистори 2. Команду вводите в виде command #command comment Когда понадобится - делаете Ctrl+R и ищете по описанию из комментария

Вариант. Спасибо. Не супер, но уже куда удобнее предложение записать все в txt.

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

> 2. rcs (с комментариями) для работы с конфигами покажет тебе историю всех изменений

Это VCS? Тоже вариант. Как-то не подумал :) Должно существенно упростить работу с конфигами. Только вопрос остается с переносимостью этой «базы знаний». Но локально поможет точно.

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

> придется заодно еще и отладить

Так ты этим и занимаешь, когда «ищешь нужную последовательность действий».

интерфейс продумать, набор параметров, взаимодействие с пользователем (т.е. со мной)

./my-super-orgram.sh вот и весь интерфейс.

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

> >Поскольку, во-первых, не сразу находишь нужную последовательность действий и выполняешь много лишнего и может даже неправильного, и во-вторых, после того, как все сделал, собрать воедино все свои действия является тоже трудоемкой задачей.

Звучит как приговор.

Нет, это упрощение и чрезмерное обобщение.

raa ()

Каждый раз, когда я заканчиваю какое-либо дело, потребовавшее использования консоли, я сливаю башхистори в файлик и чищу его в текстовом редакторе от посторонних и неудачных команд. Остальное сохраняю в ~/bin/. Если полученный скрипт ещё требует доработки напильником, а мне лень, то я просто не делаю chmod +x.

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

raa> Только вопрос остается с переносимостью этой «базы знаний».

Там один текстовый файл с изменениями для каждого рабочего файла.

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

> ./my-super-orgram.sh вот и весь интерфейс.

Нет, это совсем не то. В большинстве случаев мне не нужно заново выполнять те же действия. Мне нужно вспомнить что и как я делал, и сделать что-то похожее, но другое. Возможно, некоторые действия нужно будет повторить в точности. Но большинство действий просто схожи, и порядок действий может понадобиться совсем другой.

raa ()

notecase - scripts-multimedia (system) etc Поскольку notecase всегда в трее висит никаких проблем нет :-)

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

> notecase

О да, менеджер заметок у нас только один единственный. И принципиально отличается от записи в текстовый редактор.

anonymous ()

> Кто как решает проблему запоминания команд и действий? Какие методы и программы используете?

Используют GUI.

K.O.


Недавно осознав, какое огромное количество труда было затрачено на чтение интернета и мануалов, мне стало очень жаль, что это время фактически утеряно.


1. Проезжая мимо станции, у меня слетела шляпа.
2. Молодец. Ты созрел до M$ ШINDOШS.

Для запоминания команд эмулятор терминала должен иметь расширение в виде боковой панели со списком команд.


man alias

С запоминанием действий сложнее. Было бы удобно, если бы эмулятор имел режим записи


man function

Ваши мнения?


Ты тугодум.

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

> Но большинство действий просто схожи, и порядок действий может понадобиться совсем другой.

Ну так копируем в new-super-program.sh и изменяем.

А что, только один профит. И набирать удобнее в полноценном текстовом редакторе с подсветкой, автодополнением и прочими плюшками, и наглядно, все в одном месте, и сохраняется.

anonymous ()

>Для запоминания команд эмулятор терминала должен иметь расширение в виде боковой панели со списком команд.

И как терминал будет поддерживать over 9000 шеллов, и при этом он ещё должен определять, когда в нём запущен шелл, а когда какой-нибудь mc или vim? И кто будет патчить все over 9000 шеллов, чтобы они поддерживали этот супермегатерминал?

Выбранную команду можно перенести обратно в консоль.

А если при этом в консоли запущен не шелл, а vim, ещё и в командном режиме? Одно неаккуратное движение - и документ испорчен, особенно если в команде ненароком встретилось ':wq', тогда и 'u' не поможет.

Ваши мнения?

No way!

gentoo_root ★★★★★ ()

Мой мнений будет такой: надо завести себе бложек.

В бложеке сделать тег 'shell'.

Решил какую-нибудь нетривиальную задачу - написал в бложек, что, как и почему делал.

Понадобилось вспомнить - посмотрел запись в бложеке.

В качестве бонуса можно получить более удобное решение в каментах. Плюс ваше решение может помочь кому-нибудь ещё.

Hoodoo ★★★★★ ()

>Было бы удобно, если бы эмулятор имел режим записи, в котором он записывает все запущенные команды
Есть, но не в эмуляторе терминала (нафиг там это?).

а также отслеживает запуск текстового редактора и сохраняет разницу в измененном файле.

Как ты себе это представляешь?
По поводу alias, внешних скриптов и функций тут уже отписались.

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

Отличается, поскольку файлик еще надо искать а в notecase из трея нужный скриптик находится в полтыка

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

> 1. Проезжая мимо станции, у меня слетела шляпа.

Ну получилось так. Мысль формировалась по ходу написания текста. Мне застрелиться?

man alias

man function

Ага, безумно удобно. Как я сразу не догадался.

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

>Ага, безумно удобно. Как я сразу не догадался.
Ничто не мешает сделать скрипт, автоматически делающий алиасы/функции из выделения. А в zsh можно и print -z заюзать.

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

> Каждый раз, когда я заканчиваю какое-либо дело, потребовавшее использования консоли, я сливаю башхистори в файлик и чищу его в текстовом редакторе от посторонних и неудачных команд. Остальное сохраняю в ~/bin/. Если полученный скрипт ещё требует доработки напильником, а мне лень, то я просто не делаю chmod +x.

По сути это то же предложение писать скрипты и функции, но вот сам подход существенно меняет дело. И чистку можно проводить ровно настолько, на сколько хватит времени и желания. Просто, масштабируемо :) Мне нравится, спасибо. Нужно будет попробовать.

raa ()

wiki

Сам давным давно убедился что без документирования своих же действий основная масса приобретаемых навыков становится одноразовой. Поэтому завел себе локальный wiki-портальчик на рабочем ноуте, и теперь при решении большинства задач тут-же параллельно пишу сразу же по ним статьи - те-же самые history команд, но со своими комментами. Своеобразные HOW-TO. В том-же портальчике потихоньку скопилась всякая контактная информация, библиотека ссылок, скопированных статей, и т.п. Т.е. мишура, которая сопровождает всю работу.

Почему именно wiki? Простота наполнения, автоматическое ведение версий, возможность накидать слабоструктурированную информацию с перекрестными ссылками и позже быстро и безболезненно перестроить ее под выявляющуюся структуру, удобный поиск по информации, возможность генерации из статьи HTML или PDF документа - готовый результат для выдачи заказчику.

Начинал с Twiki (http://twiki.org/), да так на нем и остался - не требует никакой СУБД, прост в установке, легко переносится и обновляется.

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

> Ничто не мешает сделать скрипт, автоматически делающий алиасы/функции из выделения. А в zsh можно и print -z заюзать.

Хорошая мысль. Это можно применить как к алиасам, так и к скриптам в ~/bin. И если к этому еще добавить скрипты для поиска и других манипуляций с записями, то это в принципе может полностью решить проблему. У меня даже дежавю, будто я когда-то давно видел такую поделку, но не оценил необходимость каких-то скриптов и команд для таких элементарных действий :)

В общем, на данный момент мне больше всего понравились предложения:

1. Писать комментарии к командам для упрощения поиска.

2. Копировать историю команд в новый скрипт и вырезать все лишнее.

3. Написать скрипты, автоматизирующие работу со скриптами и/или алиасами.

raa ()
Ответ на: wiki от VitalkaDrug

> wiki

Тогда уже закинуть в интернет, как предлагал товарищ с блогом :)

Пробовал когда-то работать с wiki. Это занятие мне показалось очень трудоемким. Трудно поддерживать порядок. Может вики плохая (использовал ту, которая в Trac), а может я просто не умею с ней работать.

raa ()

Оформляй скрипты и складывай в укромное место.

kernelpanic ★★★★★ ()

Как кто-то уже выше сказал: главное понимать что ты делаешь. Часто помогает просмотр манов хоть как-то относящихся к предметной области, особенно если смотреть на раздел SEE ALSO.

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

>>Было бы удобно, если бы эмулятор имел режим записи, в котором он записывает все запущенные команды

Есть, но не в эмуляторе терминала (нафиг там это?).

Да в общем-то все равно, кто это делает. Главное - удобный доступ и управление. Можно и с bash_history работать.

а также отслеживает запуск текстового редактора и сохраняет разницу в измененном файле.

Как ты себе это представляешь?

Если честно, никак не представлял. Можно пофантазировать. Например, следим за все тем же bash_history, или за списком дочерних процессов. При появлении редактора делаем снимок файла, после его завершения записываем разницу в составляемый сценарий. Может еще в bash можно ловушку на выполнение команды делать - тогда вообще здорово.

По поводу alias, внешних скриптов и функций тут уже отписались.

Да, да... Вопрос не столько в том, где хранить, как в том, каким способом с этим работать.

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

>делаем снимок файла, после его завершения записываем разницу в составляемый сценарий.
Это нетривиально.

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

>>делаем снимок файла, после его завершения записываем разницу в составляемый сценарий.

Это нетривиально.

Что конкретно? cp и diff?

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

diff достаточно тупой, он поможет разве что с однотипным редактированием практически одинаковых файлов. Записывать регэкспы для sed интереснее.
Ещё можно сделать dmenu-гуй для автогрепалки по истории.

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

> diff достаточно тупой, он поможет разве что с однотипным редактированием практически одинаковых файлов. Записывать регэкспы для sed интереснее.

А, так Вы, наверное, о воспроизведении. А я говорю о том, чтобы для начала просто быстро сохранить изменения. В идеале - нажать кнопку «начало записи» и «конец», и забыть о том что делалось до следующих времен. Воспроизвести их можно и вручную, главное - вспомнить, что собственно делалось. Тем более опять же не факт, что воспроизводить нужно будет точно в таком же виде. Повторное внесение изменений - действительно нетривиально, но это уже из серии «нет - ну и фиг с ним» :)

Как вариант, кнопка «начало» может выглядеть как консольная команда, копирующая bash_history во временный файл, а кнопка «конец» - как команда, делающая коммит папки /etc и записывающая разницу /etc и bash_history в файл. Как-то так.

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

> Ещё можно сделать dmenu-гуй для автогрепалки по истории.

Интересная вещица, спасибо :) Правда, говорят, в кедах иксы скоро уберут.

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

>Правда, говорят, в кедах иксы скоро уберут.

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

legolegs ★★★★★ ()

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

По теме:

~$ cat .bash_history | wc -l
5000
~$ cat useful_commands | wc -l
11
~$ ls -l bin | wc -l
43

baverman ★★★ ()

Ваши мнения

Не нужно. 90% - к тому времени, как оно понадобится, либо ты забудешь поискать, либо этот архив будет недоступен по куче причин, либо тебе нужно будет что-то чуть другое, либо параметры в новой версии поменяются. В результате ты будешь таскать за собой «чемодан» шпаргалок и тратить лишнее время на их упорядочивание или угадывание, какая из них подойдёт. Лучше прокачай умение «гуглить».

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

>>Правда, говорят, в кедах иксы скоро уберут.

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

Вот та новость, как я понял, оповещает о первом шаге на пути полного отказа от иксов. Но в общем это не важно в данной теме :)

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

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

А я не вижу ничего удивительного в том, что есть такие люди как Вы :)

По теме: Количество сохраненных вами команд мне ни о чем не говорит. Меня интересует, как пользоваться этим эффективно, а не размер вашего, простите, каталога bin. :)

raa ()
Ответ на: Ваши мнения от DonkeyHot

> Не нужно. 90% - к тому времени, как оно понадобится, либо ты забудешь поискать, либо этот архив будет недоступен по куче причин, либо тебе нужно будет что-то чуть другое, либо параметры в новой версии поменяются. В результате ты будешь таскать за собой «чемодан» шпаргалок и тратить лишнее время на их упорядочивание или угадывание, какая из них подойдёт. Лучше прокачай умение «гуглить».

Я бы сказал, что оптимальной будет некоторая золотая середина между умением гуглить, способностью запоминать, и умением записывать. Крайности не универсальны.

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

> man 1 script

Спасибо, почитал, попробовал. Как там и написано, это очень удобно для использования студентами в лабораторных работах. А вот если я решу сделать что-то, что потребует компиляции, и script запишет весь вывод? Мне это не представляется удобным.

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

Меня интересует, как пользоваться этим эффективно

Придумай, как тебе будет удобнее. То что ты спрашиваешь, аналог, как быстрее умножить 25 на 35. Фантазии и знаний здесь много не требуется.

baverman ★★★ ()

Пиши скрипты, делай заметки, создай wiki/бложек.

drull ★☆☆☆ ()

Руки прочь от эмулятора терминала. РУКИ ПРОЧЬ!

По сабжу - я юзаю такой подход - все реально полезное и переиспользуемое тут же оформляется в помойку ~/scripts в наиболее общем виде. Минусы - по десятку компов обратно это собирать приходится :(

Тебе же надо текстовый редактор, графический или консольный. Копируй туда, копируй обратно, не пиши на ЛОРе бреда про интеграцию гипотетического убогого построчного текстового редактора с эмулятором терминала.

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