問題タブ [dev-null]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - /dev/null からのリダイレクトによって供給される ffmpeg を含む while ループを終了するためにトラップを使用する方法は?
ここで、完了までに長い時間がかかるループ呼び出しプロセスを発見しました。どうすればそれから抜け出すことができますか?find から ffmpeg cli [HandBrakeCLI] を呼び出す while ループへのパイピングは、複数の入力ファイルを処理しません。これは、ffmpeg にはすべての入力リストを一度に「食べて」ループを「飢えさせる」という癖があるためです。
解決策は、 http://mywiki.wooledge.org/BashFAQ/089に従って /dev/nullからリダイレクトすることでした。これは正常に機能します。ただし、元の問題と解決しようとしている質問に戻ります。
/dev/null には、HandBrakeCLI にフィードするすべてのファイルの完全なリストが含まれているため、ctrl-c だけではループを終了するのに十分ではありません。
トラップのさまざまな順列を試しましたが、HandBrakeCLI が現在の入力を処理してから次の入力に移るのを停止する以外に何もすることができません。ループをすぐに終了する代わりに、HandBrakeCLI 行の直後に mv も処理します。
1. ctrl-c または kill コマンドですべてを終了するにはどうすればよいですか? 2. (1.) で処理されない場合、ループ内の mv が実行されないようにするにはどうすればよいですか?
質問に対処するために、これはコードの簡略化されたバージョンです。
git - VS2015/Git を使用してコミットされていない変更があるため、プルできません
次のシナリオを想像してください。
マネージャーはチーム プロジェクトを作成し、プロジェクトの VCS として (最新の) git を使用することにしました。開発者チームは、(最新の) VS2015 (エンタープライズ) IDE を使用して作業します。マネージャーは、「マスター」と呼ばれる新しい (オリジン) ブランチを作成し、そのブランチに 2 つのファイルをコミットしてプッシュしました。
プロジェクト ファイルの階層:
"Jym" と "Bennie" で構成される開発者チームは、オリジン/マスター ブランチをプルしました (両方ともローカル/マスター ブランチで作業しています)。Jym は、最初の変更を「notes.txt」ファイルにコミットしてプッシュしました (マスター ブランチに直接)。Bennie は「todos.txt」という新しいファイルを作成し、「notes.txt」ファイルにもいくつか変更を加えていました。Bennie が (Jym によって以前に行われた) 変更を同期/プルしようとすると、同期ウィンドウに次のメッセージが表示されます。
コミットされていない変更があるため、プルできません。再度プルする前に、変更をコミットまたは元に戻してください。詳細については、出力ウィンドウを参照してください。
チームにとってさらに悪いことに、Bennie は昨年 12 月下旬に発生したまったく同じ問題を経験しています。これは、Bennie が事実上 git コマンドを実行できないことを意味します (ただし、"元に戻す" 以外のすべての機能は、Visual Studio Git/TFS プロバイダーで正常に動作するようです。彼はこれを非常に奇妙に感じています)。
また、そのため、この質問は別の質問の (可能性のある) 重複ではありません。
Bennie が経験している問題 (上記のシナリオから) を解決する方法 (もちろん Visual Studio のみを使用)?
私が提供できる詳細があれば、コメントを投稿してください。
EDIT 1 ( 「null」デバイスを解決するための推奨される回答からの出力):最初のステップ
の結果:その回答のタイプミスではありませんか?「nul」は「nil」ではありませんか?
2 番目のステップ(デバイス マネージャー)の結果: [表示] -> [非表示のデバイスを表示] オプションがオンになっている場合、小さな「警告」アイコン (不明/認識されていないデバイス) またはデバイス名に「null」が付いているデバイスはありません。
また、明らかに「非プラグ アンド プレイ ドライバ」タイプもリストされていません (もちろん、[表示] -> [タイプ別デバイス] が選択されている場合)。
3 番目のステップの結果:%SystemRoot%\system32\drivers\null.sys
ファイルが存在し、ディスクから削除されました (Windows 10 から null.sys ファイルにコピーして貼り付けました)。
詳細: これらの sys ファイルのいずれかを右クリックすると、コンテキスト メニューに [インストール] オプションも [アンインストール] オプションも表示されません。
4 番目のステップの結果: null.regのマージに失敗しました。レジストリ キーの所有者を再割り当てHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root
し、適切なアクセス許可も設定します。レジストリ キーのアクセス許可を更新した後、
null.regファイルがレジストリに正常にマージされました。
コンピュータの再起動。
最終的な回答を待っています...エラーはまだ表示されています!
編集 2 (PATH 環境変数のテスト):
同じエラーが引き続き発生します (管理者として git-cmd.exe または git-bash.exe を開いた後でも)。
EDIT 3(電源オプション、「コンピューターが退席中モードに入るのを許可する」設定を使用しない):
参照スレッド。
EDIT 4 :
Bennie が自分のマシンを Windows 8.1 から 10 にアップグレードした後、問題は解決しました。これで、オペレーティング システムが破損したと簡単に結論付けることができます。
matlab - Matlab に null デバイスはありますか?
ここで Python で見られる例のように、テキスト ファイルへのログ記録をオンまたはオフにする簡単な方法を見つけようとしています。彼らの解決策は、ロギングが必要な場合は有効なファイル名を使用し、それ以外の場合はnull デバイス 'dev/null'
を使用することでした。彼らはリダイレクトを使用していますが、私はfopen
.
次のようなことを行う方法はありますか。それが重要な場合、UnixまたはWindowsシステムでどの単語が機能しますか
私が変更しているスクリプトは、いくつかのファイルの細かいレベルの詳細を取得したいが、スクリプトが通常対象とするバッチ処理には大きくなりすぎるという、特定の重大なシナリオで詳細なログを作成することで大きなメリットが得られます。
bash - /dev/null のコピーは、場所によって動作が異なります
/dev/null の動作を別の場所で真似してみましたが、奇妙なエラーが発生します。-bash: /dev/null: Permission deniedで /dev/null のような特別なファイルを生成する方法を学びました。
ホームなどのフォルダでは、次のことが起こります。
一方、/dev では、エラーは発生しません。
別の xubuntu マシンでエラーを再現できますが、3 番目のマシンではエラーは発生しません。そこで何が起こっているのか手がかりはありますか?
奇妙なことに、これらのマシンのいずれでも、パーミッションとメジャー/マイナーは同じです。
/dev/null をコピーする場合も同様
python - Python はシェル出力を抑制します
私のPythonスクリプトは、次のようにos.systemを介してシェルコマンドを呼び出しています:
Python を使用せずにこのコマンドを実行すると、出力は抑制されますが、Python では出力が表示されます。
私は何を間違っていますか?