- history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Re: history не работает в скрипте
- Настраиваем ведение истории команд в Linux
- Советы по настройке history команд в Bash
- 1. Добавляем Отображение Даты и Времени в Bash History
- 2. Увеличиваем Размер Хранимой Истории
- 3. Добавляем Команды Bash в Файл с Историей
- 4. Мгновенно Сохранять Историю Команд
- 5. Контролируйте Bash History
- 6. Игнорировать Определенные Команды
- 7. Исправление случайных ошибок
- 8. Одна Команда — Одна Запись в Истории
- 9. Изменить Имя Файла с Историй Команд
- Полезные советы при работе с bash
- Не сохраняется история команд в консоли
- 2 комментария
- История команд Linux
- История команд Linux
- Настройка истории Linux
- Выводы
history не работает в скрипте
Ничего не выводит. Я так и не понял, почему.
P.S. История не пустая!
Re: history не работает в скрипте
Re: history не работает в скрипте
#!/bin/sh
HISTFILE=/home/bugmaker/.bash_history
history -n
history
Re: history не работает в скрипте
Ага, понял. Либо так:
#!/bin/sh
HISTFILE=/home/seiken/.bash_history
history -n
history
либо эдак:
#!/bin/sh -i
history -n
history
Благодарю за подсказки.
Re: history не работает в скрипте
ну нельзя писать #!/bin/sh 🙂
если ты явно используешь фичи баша нужно писать #!/bin/bash
Re: history не работает в скрипте
А в sh нет истории? И потом /bin/sh — ссылка на /bin/bash
Re: history не работает в скрипте
в sh нет истории. Потому что он для скриптов, которым история не нужна.
на машинах на которых я работаю sh это не ссылка на bash
Re: history не работает в скрипте
У меня на mdk10 это ссылка. Вроде писать #!/bin/bash считается дурным тоном, по крайней мере тут так считают.
Re: history не работает в скрипте
Это писать #!/bin/sh и использовать башизмы — плохой тон, потому-что в других системах /bin/sh может указывать совсем не на /bin/bash, как минимум.
Re: history не работает в скрипте
Таким образом, в моём случае лучше явно указать bash
Источник
Настраиваем ведение истории команд в Linux
Всем известно, что Bash ведет историю всех команд, введенных в консоли, но по умолчанию некоторые настройки хранения этой истории заданы не сильно рациональными.
Давайте сделаем ведение и чтение истории более удобным, а так же рассмотрим вопрос очистки истории команд.
Исходные данные: Debian 9
Как известно, история команд в Linux хранится в файле
Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла.
500 команд — это довольно мало, Вы легко можете потерять полезную команду которую выполнили скажем неделю назад.
Чтобы увеличить размер хранимой истории необходимо в файл
/.bashrc добавить строки:
HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);
HISTFILESIZE — максимальное количество строк, содержащееся в файле истории
/.bash_history (по умолчанию — 500);
Теперь у нас будет храниться история последних 10 тыс. команд.
Для применения настроек нужно выполнить:
или перезайти в терминал.
Идем дальше, если Вы выполните команду history, то заметите, что выполненные подряд одни и те же команды повторяются в истории. Это жутко неудобно, давайте отключим такое поведение. Для этого в файл
/.bashrc добавим строку:
Опция HISTCONTROL контролирует каким образом список команд сохраняется в истории.
ignorespace — не сохранять строки начинающиеся с символа
ignoredups — не сохранять строки, совпадающие с последней выполненной командой
ignoreboth — использовать обе опции ‘ignorespace’ и ‘ignoredups’
erasedups — удалять ВСЕ дубликаты команд с истории
Не забываем выполнить source
/.bashrc для применения настроек на лету.
Следующая полезная настройка отвечает за игнорирование определенных команд при добавлении в историю, это HISTIGNORE.
Давайте не будем сохранять в истории команды ls, ps и history с доп. опциями. Для этого в файл
/.bashrc добавим строку:
Не забываем выполнить source
/.bashrc для применения настроек на лету.
По умолчанию, Bash записывает историю команд в
/.bash_history только при завершении сессии. Если Ваша сессия будет отключена некорректно, то как правило история команд в текущем сеансе не сохраниться — это неудобно. Чтобы это исправить нужно добавить в
/.bashrc следующую строку:
Как Вы уже заметили, вывод истории команд не учитывает дату и время выполнения этой команды, а иногда бывает очень нужно понимать, когда же Вы выполнили эту команду. Но все можно поправить, чтобы добавить дату к списку команд нужно изменить формат вывода истории, для этого в
/.bashrc нужно добавить строку:
Не забываем выполнить source
/.bashrc для применения настроек на лету.
И в конце, все вышеописанные опции можно добавить в
/.bashrc с помощью одной команды:
Иногда случаются ситуации, когда необходимо очистить историю команд Linux. Например, Вы случайно ввели в консоле команду, содержащую пароль в открытом виде. В этом случае Вам потребуется либо удалить всю историю, либо только определенную ее часть.
Если нужно удалить конкретную строку в истории, то выполните:
Для удаления всей истории команд выполните:
Если нужно очистить историю команд только для текущей сессии, то выполните:
Следует обратить внимание, что если Вы сохраняете историю сразу по факту выполнения команды (настройка PROMPT_COMMAND=’history -a’), а не по выходу из сессии как это предусмотрено по умолчанию, то полную очистку истории указанными выше способами (опции -c и -r) Вы не сделаете, история в файле
/.bash_history сохраниться. Тогда для полной очистки истории команд нужно очистить файл
/.bash_history, для этого выполните:
и закройте текущую сессию, тогда история будет очищена полностью.
По умолчанию, история команд включена всегда и все введенные команды можно использовать повторно не затрачивая времени на их набор. Но при желании функцию ведения истории можно временно отключить. В Bash история команд в текущей сессии отключается с помощью команды:
Для включения ведения истории команд в текущей сессии выполните:
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Источник
Советы по настройке history команд в Bash
Каждая вводимая в терминале команда сохраняется в файле
/.bash_history. Чтобы посмотреть историю команд – введите history.
Настройка истории команд в Bash осуществляется путем добавления переменных окружения в файл
Чтобы изменения в
/.bashrc вступили в силу, выполните:
1. Добавляем Отображение Даты и Времени в Bash History
Иногда очень полезно узнать время, когда какая-либо команда была выполнена.
Установите HISTTIMEFORMAT , чтобы сохранять время выполнения каждой команды.
Для этого добавьте следующую строку в файл
Теперь, набрав history, Вы получите следующий вывод:
2. Увеличиваем Размер Хранимой Истории
Увеличьте HISTSIZE — количество команд, которые необходимо запоминать в списке истории (стандартное значение — 500).
Увеличьте HISTFILESIZE — максимальное количество строк, содержащееся в файле истории (стандартное значение — 500).
3. Добавляем Команды Bash в Файл с Историей
Bash перезаписывает файл .bash_history ?
Чтобы добавлять новые команды в файл с историей, а не переписывать его каждый раз, добавьте следующую строку в
4. Мгновенно Сохранять Историю Команд
По умолчанию, Bash записывает историю команд в .bash_history , при завершении сессии.
Если сессия внезапно оборвется Вы потеряете текущую историю команд.
Используйте переменную $PROMPT_COMMAND , чтобы сохранять команды сразу после выполнения:
Добавьте следующую строку в файл
/.bashrc , если переменная $PROMPT_COMMAND не была задана ранее:
Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана:
5. Контролируйте Bash History
HISTCONTROL — представляет из себя список опций, разделенных двоеточиями.
Они контролируют каким образом список команд сохраняется в истории.
Опция | Описание |
---|---|
ignorespace | не сохранять строки начинающиеся с символа |
ignoredups | не сохранять строки, совпадающие с последней выполненной командой |
ignoreboth | использовать обе опции ‘ignorespace’ и ‘ignoredups’ |
erasedups | удалять ВСЕ дубликаты команд с истории |
6. Игнорировать Определенные Команды
HISTIGNORE — список шаблонов через двоеточие, используемых для принятия решения о сохранении строк с командами в списке истории.
Не сохранять команды ls , ps и history :
Не сохранять команды начинающиеся с s :
7. Исправление случайных ошибок
Таким образом ошибки в написании (например, ehco вместо echo) исправятся.
8. Одна Команда — Одна Запись в Истории
Сохранять все строки многострочной команды в одной записи списка истории:
9. Изменить Имя Файла с Историй Команд
Используйте HISTFILE для изменения имени файла, в котором сохраняется история команд. Стандартное значение
Полезные советы при работе с bash
1. Нажать Ctrl-R в bash, и начать набирать команду. При этом будут сразу предлагаться команды из истории, которые Вы уже вводили раннее. Намного удобнее, чем много раз нажимать клавишу “вверх”, что бы найти нужную команду.
2. Или классический поиск команды с помощью grep
3. Команда “ cd —» осуществляет возврат к последней посещенной директории — бывает полезно, когда нужно перейти куда-то чтобы что-то изменить, а затем быстро вернуться назад.
4. Нажать «Esc»+”.” вызывает последний упомянутый объект.
Например, если набрать cat /root/.bashrc , а потом mcedit и нажать «Esc»+”.”, то команда будет автоматически завершена: mcedit /root/.bashrc
Источник
Не сохраняется история команд в консоли
Не знаю почему, но на моей новой домашней системе в консоли командной строки на системе «Ubuntu 12.04 Desktop amd64» набранные команды почему-то не сохраняются . А это очень и очень не удобно. Т.к. Я по большей части люблю управлять своей системой из консоли, а не заниматься кликательностью по «GUI» интерфейсу. Понимание на таком уровне систему для меня блаженство. Но набирать каждый раз одни и те же команды уж извольте . Я уже описывал как работать с настройками «bash» вот здесь, поэтому эта заметка есть продолжение. «Bash» по умолчанию ведет историю набранных за сеанс команд, но при закрытии консоли не сохраняются. Поэтому сейчас я покажу, как восстановить сохранение истории команд в консоли:
Открываем пользовательский конфиг
и добавляем в него эти две строчки:
shopt -s histappend
Сохраняем внесенные изменения, а после не забываем проверить какие права установлены на файл «
-rw——- 1 root root 48 авг. 31 21:35 /home/ekzorchik/.bash_history
нужно изменить их на пользователя :
$ sudo chown ekzorchik:ekzorchik
Далее перезапускаем консоль командной строки для принятия изменений. Этим мы исправляем ситуацию по сохранении истории набранный команд в консоли. Чтобы отобразить набранные команды вводим «history» и видим порядковые номера когда либо набранных команды, а чтобы запустить какую либо из них, делаем ![номер_команды]. Вот собственно и всё по данной заметке. С уважением, ekzorchik.
2 комментария
Столкнулся с той же проблемой в Ubuntu 14.04. Ваша статья очень помогла, удалось сэкономить много времени! Спасибо огромное!
На Mac Os high sierra 10.13.5 тоже эта инструкция сработала! Спасибо огромной))
Comments are closed.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще 🙂
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Источник
История команд Linux
В терминале Linux, кроме всего прочего, есть одна замечательная вещь. Это история команд Linux. Все команды, которые вы вводите во время работы сохраняются и вы можете найти и посмотреть их в любой момент. Также можете вернуться на несколько команд чтобы не набирать недавно выполненную команду заново.
В этой небольшой статье мы рассмотрим как пользоваться историей команд Linux, как ее настроить, а также рассмотрим полезные приемы, которые могут помочь вам в работе.
История команд Linux
Большинство задач, связанных с историей команд, мы будем выполнять либо с помощью команды history, либо с помощью оболочки. В истории хранится последняя 1000 команд, которые вы выполняли. Чтобы посмотреть всю историю для этого терминала просто запустите команду history без параметров:
Для дополнительных действий с историей вам могут понадобиться опции. Команда history linux имеет очень простой синтаксис:
$ history опции файл
В качестве файла можно указать файл истории. По умолчанию история для текущего пользователя хранится в файле
/.history, но вы можете задать, например, файл другого пользователя. А теперь рассмотрим опции:
- -c — очистить историю;
- -d — удалить определенную строку из истории;
- -a — добавить новую команду в историю;
- -n — скопировать команды из файла истории в текущий список;
- -w — перезаписать содержимое одного файла истории в другой, заменяя повторяющиеся вхождения.
Наиболее полезной для нас из всего этого будет опция -c, которая позволяет очистить историю команд linux:
Так вы можете посмотреть только последние 10 команд:
А с помощью опции -d удалить ненужное, например, удалить команду под номером 1007:
Если вы хотите выполнить поиск по истории bash, можно использовать фильтр grep. Например, найдем все команды zypper:
history | grep zypper
На самом деле работать с историей еще более просто с помощью оболочки, возможно, вы уже используете многие ее функции, но о некоторых точно не знаете. Рассмотрим их:
Чтобы показать предыдущую команду просто нажмите стрелку вверх, так можно просмотреть список раньше выполненных команд.
Вы можете выполнить последнюю команду просто набрав «!!». Также можно выполнить одну из предыдущих команд указав ее номер «!-2»
Чтобы выполнить поиск по истории прямо во время ввода нажмите Ctrl+R и начните вводить начало команды.
Если вы знаете, что нужная команда была последней, которая начиналась на определенные символы, например, l, то вы можете ее выполнить, дописав «!l»:
Если нужная команда последняя содержала определенное слово, например, tmp, то вы можете ее найти, использовав «!?tmp»:
Если вы не хотите, чтобы выполняемая команда сохранилась в истории просто поставьте перед ней пробел.
Таким образом, вы можете очень быстро отыскать нужную команду, если помните как она была написана. История команд bash хранит очень много команд и этого вполне достаточно для комфортной работы.
Настройка истории Linux
Linux — очень настраиваемая и гибкая система, поэтому настроить здесь можно все, в том числе и историю. По умолчанию выводится только номер команды, но вы можете выводить и ее дату. Для этого нужно экспортировать переменную HISTORYFORMAT вместе нужным форматом:
export HISTTIMEFORMAT=’%F %T ‘
$ history
Для форматирования можно использовать такие модификаторы:
- %d – день;
- %m – месяц;
- %y – год;
- %T – штамп времени;
- %F — штамп даты.
Вы можете указать какие команды не стоит отображать, например, не будем выводить ls -l, pwd и date:
export HISTIGNORE=’ls -l:pwd:date:’
Также можно отключить вывод одинаковых команд:
Существует два флага, ignoredups и ignorespace. Второй указывает, что нужно игнорировать команды, начинающиеся с пробела. Если вы хотите установить оба значения, используйте флаг ignoreboth. Используйте переменную HISTSIZE, чтобы установить размер истории:
По умолчанию история сохраняется для каждого терминала отдельно. Но если вы хотите чтобы все ваши команды немедленно синхронизировались между всеми терминалами, то это очень просто настроить. Добавьте такую переменную:
export PROMPT_COMMAND=»$
Для тестирования работы вы можете набирать эти команды прямо в терминале и сразу видеть результат, но для сохранения добавьте нужные строки в ваш
export PROMPT_COMMAND=»$
$ export HISTCONTROL=ignoredups
$ export HISTTIMEFORMAT=’%F %T ‘
Готово, теперь осталось сохранить изменения и перезапустить ваши терминалы. Теперь ваша история будет выводить дату, игнорировать дубли и синхронизироваться между терминалами.
Выводы
В этой статье мы рассмотрели что такое история команд linux, как с ней работать, как применяется команда history linux и какие настройки можно использовать для более комфортной работы. Если у вас остались вопросы, спрашивайте в комментариях!
Источник