問題タブ [dirname]
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 - バッシュ。再帰的なディレクトリ作成許可チェック
ユーザーが権限を持っているかどうかを最初にチェックするディレクトリを再帰的に作成するようにBashにします。すべてのサブディレクトリが作成されることはわかっていmkdir -p
ますが、ポイントは、ユーザーが実行できるかどうかを確認してから実行することです。
私のプログラムでは、ディレクトリを作成するためにユーザーがパスを指定します。givenpath
value を持つvar を考えてみましょう/root/newdir/anothernewone
。ユーザー root は作成できますが、他の通常のユーザーは作成できません。ユーザーがそれを実行できるかどうかを確認したい。私の非動作アプローチ:
これは完全に機能していません。givenpath
/root/newdir
basedir が/root/
あり、両方のユーザーに対して正しくチェックされているため、これは機能しますが、より多くのサブディレクトリが指定されている場合/root/newdir/anothernewone
、basedir は/root/newdir/
basedir がまだ存在しないため失敗し、両方のユーザーに対して失敗します。
ポイントは、可能であれば最初にディレクトリチェックを作成できるようにすることです。たぶん、1つの解決策は、指定された最初のレベルから始まるすべてのディレクトリの再帰的なチェックを実行して、存在しないディレクトリに到達するまで、最後に存在するディレクトリに書き込み権限があるかどうかを確認することです...
私が考えているもう1つの非常に汚いアプローチは、mkdir -p
コマンドを起動して終了コードを確認することです。0 以外の場合、すべてが明確で、権限がありません... 0 の場合、権限はありますが、ディレクトリを作成せずに確認したいので、作成したディレクトリを削除する必要があります。
しかし、私はそれを行う方法がわかりません。何か助けはありますか?ありがとう。
logging - Winston ロガー: 実際の呼び出しファイル名をログ情報ラベルとして設定
winston ロガーがあり、ロガーが実行されているファイルのファイル名をロガー情報オブジェクトのラベル オブジェクトとして設定したいと考えています。例えば:
[info]:[callingFileName.js] - 19.06.2019 14:09:19: [message]:...
これが私のコードです:
ラベル部分は次のとおりです。
しかし、プログラムを起動すると を実行するという問題があるnpm run index.js
ため、呼び出し元のファイルは常に index.js label: としてログに記録されます[info]:[index.js] - 19.06.2019 14:09:19: [message]: ...
。logger.log()
関数を実行しているファイル名としてラベルを動的に設定することは何とか可能ですか? または、 index.js 以外の新しいファイルにいるたびに、新しいクラス/インスタンスを作成する必要がありますか?
編集: npm logat モジュールに切り替えました。これにより、3 行のコードで問題がすぐに解決されました。しかし、ウィンストンで簡単な解決策はありますか? logat を使用すると winston はもう必要ないことがわかりました。