Я пытаюсь использовать history
команда в сценарии удара, но это не работало.
Код файла удара:
#!/bin/bash
# Copy history to file history
#cd /media/saleel_almajd/Study/linux/my_scripts/
echo "start Copy history to /media/saleel_almajd/Study/linux/my_scripts/history.txt"
export HISTTIMEFORMAT='%F %T ' #to make history and date apear
history >> /media/saleel_almajd/Study/linux/my_scripts/history.txt
#cd
echo "... copy done ..."
#history -c
echo "..... history cleared ..... "
echo "___ Done Successfully ___"
Когда вы запускаете скрипт, он запускается в другой оболочке в фоновом режиме, а не в текущей. Таким образом, эффект от этого сценария будет в том, что другая оболочка. Если вы хотите применить эффект к текущей оболочке, вы должны поставить точку перед сценарием. Измените каталог на ваш текущий скрипт, затем выполните: . имя сценария i> вместо ./ имя сценария i>
history
отключен по умолчанию в неинтерактивных оболочках bash
. Необходимо включить его.
сценарий должен быть похожим на это:
#!/bin/bash
HISTFILE=~/.bash_history # Set the history file.
HISTTIMEFORMAT='%F %T ' # Set the hitory time format.
set -o history # Enable the history.
file="/media/saleel_almajd/Study/linux/my_scripts/history.txt"
history >> $file # Save the history.
history -cw # Clears the history of the current session.
Ссылка:
удараhistory command is disabled by default on bash script that's why even
history command won't work in .sh file. for its redirection, kindly
redirect bash_history file inside the .sh file.
or history mechanism can be enabled also by mentioning history file and
change run-time parameters as mentioned below
#!/bin/bash
HISTFILE=~/.bash_history
set -o history
примечание: упомянутый выше двух строк на вершине файла сценария. теперь команда истории будет работать в истории.