इसलिए मेरे पास निम्नलिखित बैश स्क्रिप्ट है जिसे "किस्मत" के रूप में जाना जाता है:
#!/bin/bash -i
REPLY=;
history -w /tmp/fortunes_history_backup; # save history ...
history -c; # and clear it.
while [ ! \( "$REPLY" = "q" -o "$REPLY" = "quit" -o "$REPLY" = "exit" \) ];
do
clear;
if [ -n "$REPLY" ]; then
history -s $REPLY; # store command in history
fi
(fortune -c $REPLY;) || (clear; fortune -c;) # try to use the command as fortune file;
# if that file can't be found, use a random one
# echo `history -p !-1`;
read -e;
done
history -r /tmp/fortunes_history_backup # restore history
प्रासंगिक हिस्सा है:
- मैं इतिहास का बैकअप लेता हूं
- तब मैंने इसे साफ कर दिया
- फिर, हर बार जब उपयोगकर्ता किसी चीज में प्रवेश करता है, तो मैं इसे इतिहास में जोड़ता हूं
- जब मैं समाप्त कर लेता हूं, तो मैं पुराने इतिहास को पुनर्स्थापित करता हूं।
अब मैं जो कुछ करना चाहता हूं वह यह है कि उपयोगकर्ता इस स्क्रिप्ट के अंदर तीर कुंजियों के साथ अपने इतिहास के माध्यम से सामान्य बैश की तरह नेविगेट कर सकता है।
history -p !-1
(नवीनतम प्रविष्टि प्राप्त करें) history -w
, history -c
और history -r
सभी उम्मीद के मुताबिक काम करते हैं; हालाँकि, जब स्क्रिप्ट चल रही है तो एरो कीज़ को दबाने से कुछ नहीं होता है।
(इससे पहले कि मेरे पास इतिहास का आदेश था, यह स्क्रिप्ट चलाने से पहले मेरे बैश इतिहास के माध्यम से चक्र होगा।)
क्या यह काम करने का कोई तरीका है?
(मुझे जो संदेह हो रहा है वह यह है कि बैश इतिहास को तब तक अपडेट नहीं करता है जब तक कि स्क्रिप्ट खत्म न हो जाए, जिसका अर्थ है कि कोई समाधान नहीं है ...)