作者 主題: History 一問 (找了好多資料 或是有其他解法) - 已解決  (閱讀 4093 次)

0 會員 與 1 訪客 正在閱讀本文。

Weran

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
先進們

小弟在 Bash Shell 上
要跑 history > test.txt

#############
#!bin/sh

history > test.txt

#############

資料會是空白的!~ 殘念.....

請問先進是否有其他方向可解 ?

因為我的 history 包含了  HISTTIMEFORMAT="%F %T `hostname` `whoami`
所以 .bash_history 內容是無法符合我的需求,或者有其他方案?

請給小弟一個方向謝謝



« 上次編輯: 2014-01-15 01:40 由 Weran »

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5411
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
只打 history 會有資料嗎?
我試過並不會是空白的啊....

Weran

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
只打 history 會有資料嗎?
我試過並不會是空白的啊....


TWu2 大大

手動 正常!~ 用 script 去跑output 出來的檔案是空白的!~  :-[ :-[ :-[

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
除了你貼的少了斜線跟雙引號 ...

# type history
history is a shell builtin

不知道是不是這原因

所以 ..
# source his_script
應該會跑

可是 .. 寫 script 想放 crond 跑嗎 ?
crond 的環境變數不一樣 , 取得的也不是 login shell ...



Weran

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
Dark 大大

我是用於 /etc/profile 來跑 並不跑crond ... history 仍無法用shell跑  :-\ 在profile 也是 output出空白值...

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
測試了一下
提供一個方法跟一個方向

1. 寫在 ~/.bash_logout (每個帳號都要 , 很麻煩 ... 不建議)
登出時執行 , 且缺點是斷線 .. kill .. 當機 ..... 就沒記錄了

2. 其實小弟很疑惑 , 為何加入 HISTTIMEFORMAT 參數能出現時間
問題是 .bash_history 中沒有記錄時間阿 ... 系統中一定有其他記錄
其中 .. 發現時間都是一大段指令同一時間
所以恐怕跟 logout , last , lastlog , /var/log/wtmp 有關

不知能不能幫小弟解惑 ... 所以 .. 所以建議第二種啦



ps .. 過程中心得 ..
順序 ~/.bashrc -> /etc/bashrc -> ~/.bash_profile

~/.bash_profile 最後一行 "export PATH"
所以在 /etc/bashrc 最後加入
alias export='history>>$HOME/hisbk;unalias export;export PATH'

所以 ~/.bashrc ~/.bash_profile 不能

HH106

  • 可愛的小學生
  • *
  • 文章數: 6
    • 檢視個人資料
因为默认情况下只有interactive shell 的  history 选项打开了
要想在脚本中使用
需要加上set -o history

try:
#!bin/bash
set -o history
history > test.txt


netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17480
    • 檢視個人資料
    • http://www.study-area.org
因为默认情况下只有interactive shell 的  history 选项打开了
要想在脚本中使用
需要加上set -o history

try:
#!bin/bash
set -o history
history > test.txt

cool!
給你一個讚!

Weran

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
因为默认情况下只有interactive shell 的  history 选项打开了
要想在脚本中使用
需要加上set -o history

try:
#!bin/bash
set -o history
history > test.txt



這個方法 只能說水啦!

Weran

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
測試了一下
提供一個方法跟一個方向

1. 寫在 ~/.bash_logout (每個帳號都要 , 很麻煩 ... 不建議)
登出時執行 , 且缺點是斷線 .. kill .. 當機 ..... 就沒記錄了

2. 其實小弟很疑惑 , 為何加入 HISTTIMEFORMAT 參數能出現時間
問題是 .bash_history 中沒有記錄時間阿 ... 系統中一定有其他記錄
其中 .. 發現時間都是一大段指令同一時間
所以恐怕跟 logout , last , lastlog , /var/log/wtmp 有關

不知能不能幫小弟解惑 ... 所以 .. 所以建議第二種啦



ps .. 過程中心得 ..
順序 ~/.bashrc -> /etc/bashrc -> ~/.bash_profile

~/.bash_profile 最後一行 "export PATH"
所以在 /etc/bashrc 最後加入
alias export='history>>$HOME/hisbk;unalias export;export PATH'

所以 ~/.bashrc ~/.bash_profile 不能


dark 大大 您的方法再我提問前 我也試過 所以在腦人呀 @@

帶出日期後 我的 .bash_history

#1389641356
ll
#1389641400
sh test.sh
#1389641402
ll
#1389641413
history
#1389641419
sh test.sh
#1389641420
ll
#1389641438
./test.sh


需將 #1389641438 變成日期時間

date -d @1389641438

所以求助是否有更好的方式來表示, 也謝謝  dark 大大一起協助解惑了。

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
太棒了 ...

看了半天還是看不懂
一直到看見 noexec , pipefail ...

原來可以從這裡關閉喔 ... 才突然明白 -o 的意思



1389641400 是從 1970-01-01 00:00:00 算起的秒數
date --date="1970-01-01 00:08:00 +1389641400 sec" +%F_%T