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
() автор топика
Ответ на: комментарий от 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 ★★★★★
()

> Ваши мнения?

mc

ansky ★★★★★
()

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

По теме:

~$ 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.