[英]Script Bash and History Unix
我只是開始在UNIX上使用Script bash,但沒有找到在歷史記錄(例如以ls開頭)中編寫第一個命令的解決方案。 如果我在外殼中寫
history
!ls
它可以工作,但是當我要創建腳本時,它將無法工作。
這是我的示例代碼
#!/bin/bash
set -o | grep history
set -o history
#echo "HISTFILE is $HISTFILE"
#history "!ls";
#history
#!ls
history #it works
另一個問題:為什么echo "HISTFILE is $HISTFILE"
僅顯示HISTFILE ? 謝謝
外殼程序歷史記錄工具僅在交互式外殼程序中可用,因此您不能(*)將!ls
放入腳本中。
(*),除非您使用外殼程序的-i
選項啟動腳本。 但是,如果要使用文本編輯器編寫腳本,則要重用命令,請剪切並粘貼或創建函數。
要獲得歷史上的第一項,以下的技巧不可行嗎?
echo !1
至於第二條命令,它應該可以工作... HISTFILE變量可能尚未正確定義。
嘗試在腳本的第一行中使用“ bash -li”而不是“ bash”,以初始化更多變量。
您尚未將任何內容存儲到HISTFILE。 所以它是空的。 嘗試這個:
#!/bin/bash
set -o history
ls -l
echo "hi"
echo "hello"
HISTFILE=`history`
echo -ne "HISTFILE is: $HISTFILE"
這行:
HISTFILE=`history`
將運行命令並將輸出存儲在HISTFILE中。
Shell的歷史記錄文件存儲在主目錄中,該主目錄的路徑在腳本中不可見。 所以要檢索它: cat ~/.bash_history
history命令僅存儲最后1000條命令。 所以!1給出一個錯誤,則表示它不再可用。 因此,只需執行歷史記錄和第一列即可獲得編號。 您只能使用!NUMBER
執行這些命令
喜歡:
$ !50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.