bash、 "history"コマンドにパラメータを渡す

bash、 "history"コマンドにパラメータを渡す

私は記録をより合理的にするために次のことを行います(つまり、トラブルシューティング時にコマンドが実行された時期を確認することは非常に重要です)。

shopt -s histappend;   # Append commands to the bash history (~/.bash_history) instead of overwriting it   # https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"   # -a append immediately, then  -c clear history, then -r read history every time a prompt is shown instead of after closing the session.
export HISTTIMEFORMAT="%F %T  " HISTCONTROL=ignorespace:ignoreboth:erasedups HISTSIZE=1000000 HISTFILESIZE=1000000000   # make history very big and show date-time
alias h='history';   # Note: 'h 7' will show last 7 lines

大丈夫です。しかし、必要なときに生の記録出力を得ることができたらと思います。 (「歴史的オリジナル」)には機能しますhoが、「ho 7」は使用できなくなりました。

alias ho="history | awk '{\$2=\$3=\"\"; print \$0}'" # 'history original'

だから私は次を試しましたが、エラーのため失敗しました。

function ho() { history $1 | awk '{\$2=\$3=\"\"; print \$0}'; } # 'history original'

ho 7これを実行して最後の7行しか表示されないエイリアスまたは関数をどのように作成できますか?

答え1

ほぼすべて来ました。関数を定義していますが、aliasキーワードを使用しています。ただ削除すれaliasば大丈夫でしょう。次に、awk変数をエスケープしますが二重引用符を使用しないため、エスケープされた値がに渡されますawk

ho() { history "$@" | awk '{$2=$3=""; print}'; }

答え2

「historical raw」という言葉は、タイムスタンプなしで出力したいという意味であると仮定します。その場合はHISTTIMEFORMAT空白に設定してくださいhistory

HISTTIMEFORMAT= history

エイリアスでは

alias ho='HISTTIMEFORMAT= history'

関連情報