web-dev-qa-db-ja.com

Windowsコンソールがしばらくするとコマンドライン履歴(上矢印)を失うのはなぜですか?

ランダムに見えます。WindowsVistaで使用しているコンソールをしばらく使用した後、コマンドライン履歴(または必要に応じてコマンドバッファー)を使用できなくなり、上下に移動します。矢印はもう何もしません。つまり、履歴には基本的に0個のアイテムがあります。

Cygwin、CMD、およびPowerShellでこの動作を確認しました。

この動作は、コンソール内で実行されているプロセス(Python、MySQLクライアントなど)に適用される場合があります。

これはWindowsに固有の問題ですか?どこかの設定?この問題がない他のコンソールはありますか?

ps-これがプログラミングに関連していないと思われる場合は、プログラミングツールに関する他の質問を参照してください。たとえば、プログラミングではなくIDE)の使用方法を扱う「Eclipse」とタグ付けされたほぼすべてのものです。それ。

23
wsorenson

2つの方法だと思います。

1) Far Managerはシェルに適しています。すべての機能(ファイル/アーカイブ管理、エディター、膨大な数のプラグイン、マクロ)が必要ない場合でも、cmd、tcc、sh、その他のプログラム、シェル、コマンドプロセッサーのラッパー/エグゼキューターとして使用できます。 。

例えば

  • distrib(Far2またはFar3)から3つのファイルを取得します:far.exe、fareng.lng、および(オプションで)fareng.hlp
  • 「far.exe/w」を実行し、を押します Ctrl+BCtrl+O
  • コマンドラインに任意のコマンドを入力します:dir、set、notepad、PuTTYなど...

履歴はセッション間で保存されます。次の方法でアクセスできます。 Alt+F8 (押す Ctrl+Alt+F 履歴をフィルターモードに切り替えます)。

Far 2.0は、履歴(および設定)をレジストリに保存します。

Far 3.0は履歴をSQLiteデータベースに保存し、移植可能である可能性があります。

また、Farは、履歴からのコマンドまたはディスクからのファイル/パスをオートコンプリートできます。そして、エイリアスなどからオートコンプリートできるプラグイン(YAC)があります...

2)最近興味深いプロジェクトを見つけました:Clink-Bashの強力なコマンドライン編集をMicrosoftWindowsのcmd.exeにもたらします

  • GNUのReadlineライブラリからの強力なBashのような行編集。 Readlineのキーボードショートカットの詳細をご覧ください。
  • 優れたパス完了(TAB)。
  • クリップボードから貼り付けます(Ctrl-V)。
  • 実行可能ファイル/コマンド、および環境変数の完了のサポート。
  • 元に戻す/やり直し(Ctrl-_ または Ctrl-X、 Ctrl-U
  • コマンドライン履歴の改善。
    • セッション間で持続します。
    • 検索可能(Ctrl-R そして Ctrl-S)。
    • 履歴の拡張(例:!!、!、!$)。
  • Luaを使用したスクリプトによる完了。

若いけれど新進のプロジェクトのようですので、 コンソールエミュレーター で使用するためのオプションを作成しました。

17
Maximus

Windowsの「DOSボックス」には履歴バッファの最大サイズがあります-左上のアイコンを右クリックしてプロパティを選択すると、コマンド履歴のバッファサイズがデフォルトで50になっていることがわかります。

5
Steve Gilham

Scroll Lockキーを確認してください。 DOH!偶然にぶつかったので、上下の矢印がウィンドウをスクロールしました。

5
maccullt

PowerShellでは、MaximumHistoryCount自動変数(デフォルトは64)を使用して履歴の最大サイズを制御できます。

PS> $ MaximumHistoryCount

4
Shay Levy

私は何年もの間この問題に遭遇しました。主にpython bashシェルのコマンドラインから使用されます。これが1000回(多かれ少なかれ)再発した今日のいくつかの実験の後、私はを設定することで問題を修正することができましたシェルのコマンド履歴のバッファーサイズを999、バッファー数を999にします(それぞれに可能な最大の設定を選択しました。以前の50/50以外の設定が機能した可能性があります)。コマンド履歴で、シェルウィンドウの左上隅を右クリックし、[プロパティ]、[オプション]タブの順に選択します。これらの設定がシェルのパフォーマンスに与える影響はわかりませんが、これまでのところ、影響を受けてコマンドが実行されているようには見えません。ライン履歴は、以前は機能していなかったのと同じシェルで再び機能しています。この回答は、steve-gilhamによる回答と似ていますが、おそらくもう少し背景があります。

確かに、私の答えには、うまくいった1つの実験が含まれています。

3
user1769064

コンソールのすべての履歴は Doskey によって提供されます。また、すべての文字ベースの対話型プログラム(プログラムデバッガーやファイル転送プログラムなど)で常に使用可能であり、起動する各プログラムのコマンド履歴バッファーとマクロを維持します。

DOSの時代には、実行後に履歴をクリアしたソフトウェアを思い出すことができます。それらがバグ、予想される動作、または2つの組み合わせであるかどうかはわかりません。しかし、 このリンク の最後にあるように、いくつかのDoskeyのバグがわかっていました。

この問題が発生した場合は、Doskeyコマンドオプションを試して、修正できるかどうかを確認することをお勧めします。

1
EMBarbosa

これは一度も経験したことがありませんが、ALT+F7に従ってコマンド履歴をクリアするキーの組み合わせDOSKEY /?を押すことが原因ではないかと思います。

0
jah

「突然」すべての履歴がなくなった場合は、新しいcmd-Shellが起動する可能性がありますか?テスト:

C:\Users\Guest\>doskey /history
 …long history…
C:\Users\Guest\>cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:\Users\Guest\>doskey /history
 …no history…
C:\Users\Guest\>exit
C:\Users\Guest\>doskey /history
 …old long history…

この例では、新しいcmd-Startが表示されますが、これを試してみると、次のようになります。

doskey /history
  …history list…
cmd echo /k
doskey /history
  …no list !

見えない

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

しかし、新しいCMDシェルが開始されました。したがって、この場合は「終了」が役立つ可能性があります。

0
Mae