タグ付けされた質問 「command-history」

以前にシェルまたはその他のユーティリティで入力したコマンドを呼び出す

2
bashで感嘆符を適切にエスケープする方法は?
今日、Twitterのパスワードジェネレーターをゴルフでコーディングしようとしたときに、私は手ぶれで捕まった。 import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90文字。それは多くの予備スペースなので、私は基準を引き上げ、それも実行可能にすることにしました。 echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139文字。感嘆符で明らかにbashチョークを除いて、いいですね。 badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found 厄介な感嘆符。「逃げよう」と思った!結局のところ、私には予備のキャラクターが1人います。 echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 明らかに... badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print …


4
作業ディレクトリごとに履歴を保持する(シェルセッションごとに参照)
最新のシェルの履歴機能をパスにスコープする方法はありますか? 私の作業コンテキストは、ファイルシステム上のパスとして分割され、繰り返し発行されるコマンドなどのシェルアクティビティのパターンは、各「プロジェクト」で異なる傾向があります。履歴機能を現在のパス(またはサブパス)から発行されたコマンドにスコープできると便利です。

2
バッシュ:「履歴番号」と「コマンド番号」
PS1変数を使用してシェルプロンプトをカスタマイズする方法をグーグルで調べているときに、使用できる特殊文字の表が表示されます。特に: \! the history number of this command \# the command number of this command 「履歴番号」はより一般的に使用されているようで、コマンドを使用!523して履歴からコマンドをやり直す方法を知っています。しかし、「コマンド番号」に同様の機能があるかどうかはわかりません。私は\#PS1変数を入れてみましたが、特定のセッションで入力されたコマンドの数を出力しているようです(とは異なり\!、ログアウト/終了後も存続します)。 誰もが「コマンド番号」を便利または意味のある方法で使用する方法を知っていますか?

1
history-正常に実行されたコマンドのみをリストします
historyコマンドを使用する方法はあるのでしょうか。ただし、正常に実行されたコマンドのみをリストします。同様に、エラーを生成したものをリストする方法はありますか? 各コマンドの終了ステータスは次のとおりです。 0-コマンドの正常な実行 1-拡張またはリダイレクト中のエラーのためにコマンドが失敗し、終了ステータスがゼロより大きい。 2-コマンドの使用法が正しくあり 12ません-コマンドは見つかりましたが実行可能ではありません 127-コマンドが見つかりません そして、次のコマンドでコマンドを実行echo $? して 確認できます:http : //www.linuxnix.com/2011/03/find-exit-status-script-command-linux.html 例: これらの4つのコマンドを実行した後: ls help lss ls nonexistentfile 成功したコマンド(終了ステータス0)のみを出力するようにテストしてみましたが、これは「ls」と「help」だけであるはずです。 for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; then :; …

1
Zsh:上向き矢印で同じコマンドをスキップする
ほとんどのUnixシェルでは、上矢印↑キーは、履歴内の前のコマンドによって編集されているコマンドを置き換えます。履歴は、コマンドを使用して表示できますhistory。 ↑ 歴史の中で登るには、複数回押すことができます。 私の質問は: ↑現在のコマンドと同じコマンドをすべてスキップするようにシェルを構成するにはどうすればよいですか? 確かに、私は多くの場合make、続けて多くを入力します。古いコマンドをもう一度入力する(または少し変更する)場合、↑すべてのmakeコマンドをスキップするだけで何度もヒットする必要があります。 ↑シェルの生産性を向上させる唯一のヒントではないことは知っています。 ボーナス: Bashシェルで機能する構成を指定します。 履歴を保存します(連続して何度もコマンドを入力したことを知っていると便利です)

3
zshのディレクトリごとの履歴
私はここzshしばらくの間楽しく使用しており、次の履歴設定に非常に満足しています。 # Write to history immediately setopt inc_append_history # History shared among terminals setopt share_history # Save extended info in history setopt extended_history # Ignore duplicates setopt hist_ignoredups しかし、特定のディレクトリ内で特定のコマンドを使用する必要があることがよくあります。たとえば、~/my_project私make target1 && ./run1がいるときは通常呼び出しますが、私がいるとき~/second_projectは通常必要make target2 && cat foobar | ./run2です。 つまり、ディレクトリは異なりますが、コマンドは似ています。 したがって、私は通常cd ~/my_project、入力してmakeから、必要なものが見つかるまで履歴を逆方向に検索します。しかし、私がで作業していたsecond_project場合、履歴を検索すると、不要なコマンドがいくつか見つかります。 だから、私の質問:履歴で検索すると、現在のディレクトリで呼び出されたコマンドが最初に表示されるように、zshのプラグイン/設定/何かが存在しますか? 理想的には、他のすべての一致する履歴コマンドがそれらの後に表示され、オプションで優先要素の最大数を指定します。 私は自分でこのようなものを書こうとしますが、カスタムzshプラグインの作成方法、履歴の処理方法などはまだわかりません。

2
bash履歴の変更を元に戻す方法はありますか?
上に押すと、以前に入力したコマンドを確認できます。ただし、そのうちの1つを変更すると、履歴が変更されることに気づきました。たとえば、次のように入力すると、 echo a echo b echo c [up][up][backspace]d[ctrl+c] 履歴は、2番目のコマンドがであったことを示してecho dいecho bます。どうすればecho b歴史の最初の人を維持できますか? たとえば、多くのオプションを指定して、非常に長いコマンドを実行するとします。その後、マイナーな変更を加えてもう一度実行したいので、履歴を調べて変更を加えますが、実際には再実行する必要はなく、別のオプションを考えているだけです。代わりに行います。その後、戻って、自分が実行したコマンドを思い出させたいのですが、ちょっと待ってください。履歴が間違ったものを表示しています。 これはめったに発生しませんが、発生したときは本当にイライラします。元の履歴を自動的に保存する方法はありますか?

2
「履歴」はbashスクリプト内で実行すると機能しなくなります
特定の文字列を見つけるためにbashの履歴をgrepする簡単なスクリプトを書いています。コマンドラインで、次のように実行できます。これは正常に機能します。 history | grep git しかし、上記と同じコマンドでbashスクリプトを作成すると、突然history何も返されません。 #!/bin/bash history | grep git 最初の行を削除する#!/bin/bashと、スクリプトが再び動作します。ここで何が起きてるの?historybashスクリプト内でどのように使用できますか?

2
複数のKonsoleからのbash履歴の保存が正しく機能しない
複数のKonsole端末を使用しています。そして、すべての端末に入力したすべてのコマンドをコマンド履歴に保存して、次に開いたkonsoleにすべてのコマンドが表示されるようにします。各端末が他の端末のコマンド履歴を上書きしないようにするために、私は次の設定を自分の.bashrc # avoid duplicates and commands starting with space export HISTCONTROL=ignoredups:erasedups:ignorespace # append history entries.. shopt -s histappend #My machine reboots without warning sometimes.Hence to save commands instantaneously. export PROMPT_COMMAND="history -a" export HISTSIZE=1000 PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1 プロンプトにコマンド番号を表示するために最後の行を指定しました。コマンド番号。600を超えたことはありませんが、それでも私の古いコマンドの一部は履歴から消えています。繰り返し指定されるコマンドは多数ありますが、から予想されるようにignoredups、プロンプト内のコマンドを増やすことはありません。それでも古いコマンドは消えており、履歴にあるコマンドの数は常に500をわずかに超えています。 .bash_historyファイルにはまだignoredupsにもかかわらず、重複が多く含まれています。 PS:エコーの出力$HISTSIZEと$HISTFILESIZE両方=1000 更新:上記ののエントリに問題が見つかりました.bashrc。ただ、呼び出しhistory -aにPROMPT_COMMAND単にの.bash_historyに最後の新しいコマンドを追加します。だから、ignoredupsとerasedups効果がありません。 方法はありますか?すべての端末から重複することなく.bash_historyに書き込むことができますか?各コマンドプロンプトで履歴全体をロードしてhistory -rで書き直したくないのhistory -wは、ある端末で発行したコマンドが別の並列実行中の端末にも表示されるためです。結合したコマンドを新しいターミナルでのみ表示したい。 パズル、なぜ私の歴史が500にトリミングされたのかが解決されました。このマシンにsshするたびにそれが起こっていることに気づきました。.bash_profile次のエントリでを作成すると、この問題は解決しました。 if [ -f ~/.bashrc ]; then …

1
Bashの追加履歴を停止する方法
Bashのターミナル履歴を思い通りに設定するのに多くの問題を抱えています。重複するエントリを残したくないので、コマンドを入力した場合、それを保存して、上記の重複を削除します。 問題は、historyコマンドが希望どおりに機能していることをコマンドが示していることですが、ログアウトすると、重複が再び表示されます。それは単に既存のものに履歴を追加しているだけだと思います。私の.bashrcファイルには次の行があります: HISTCONTROL=ignoreboth:erasedups shopt -u histappend コメントを外してみましたshoptが、ログアウト時に履歴が追加されます。ログアウトする前の履歴を正確に保持するにはどうすればよいですか?

1
スクリプトの履歴拡張は無効になっていますか?
次のエラーは!履歴の拡張に使用されたことが原因であると理解しています。 $ echo "Hello!Tim" bash: !Tim: event not found ただし、コマンドをスクリプトに入れてスクリプトを実行しても問題はありません。 $ cat myscript echo "Hello!Tim" $ bash myscript Hello!Tim 何故ですか?bashマニュアルに理由が記載されていますか?

3
タイムスタンプ付きのコマンド履歴を継続的に端末に出力するにはどうすればよいですか?
シンプルなエイリアスを使用して、1つまたは複数のターミナルウィンドウでコマンドの「追跡」を有効にします。 alias trackmi='export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"' 次に、ワークスペースの別のターミナルにある.bash_historyファイルだけを使用しtail -fて、即座にフィードバックを得ます。無制限の履歴 を有効にし、.bashrcの履歴形式​​()を更新しました。もちろん、コマンドはタイムスタンプを表示します。しかし、履歴ファイル自体の形式は次のとおりです。export HISTTIMEFORMAT="[%F %T] "history #1401234303 alias #1401234486 cat ../.bashrc コマンドと同じように、Unix時間を変換してコマンド全体を1行に表示するにはどうすればよいですかhistory。 578 [2014-05-27 19:45:03] alias 579 [2014-05-27 19:48:06] cat ../.bashrc ...そしてそれに従ってください。または、historyコマンドの出力を端末に継続的に出力する方法を見つけますか?

2
コマンド履歴の検索
を押して端末のコマンド履歴を検索しますが、次のCtrlr場合はどうなりますか。 This is an old command This is an | less -S older command を押してCtrlrから「this is an」と入力すると、古いコマンドは表示されますが、古いコマンドは表示されません。「this is an」コマンドをすべて検索するにはどうすればよいですか?同様のコマンドをすべてgrepなどにパイプすることは可能ですか? もし私がset -o viそれを元に戻すにはどうすればいいですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.