問題タブ [symlink]
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 - シェルスクリプトでシンボリックリンクを解決する方法
(Unix ライクなシステムで) 絶対パスまたは相対パスを指定すると、中間のシンボリック リンクを解決した後に、ターゲットのフル パスを特定したいと考えています。~username 表記も同時に解決できるボーナスポイント。
ターゲットがディレクトリの場合、そのディレクトリに chdir() してから getcwd() を呼び出すこともできるかもしれませんが、C ヘルパーを作成するのではなく、シェル スクリプトからこれを実行したいと考えています。残念ながら、シェルはユーザーからシンボリックリンクの存在を隠そうとする傾向があります (これは OS X の bash です):
私が欲しいのは、上記の例の tmp ディレクトリから実行すると、resolve("foo") == "/Users/greg/tmp/bar" となるような関数 resolve() です。
python - Python で壊れたシンボリック リンクを見つける
os.stat()
壊れたを呼び出すとsymlink
、python がOSError
例外をスローします。これは、それらを見つけるのに役立ちます。os.stat()
ただし、同様の例外をスローする可能性のある他の理由がいくつかあります。symlinks
Linux で Python の破損を検出するより正確な方法はありますか?
file - 削除できません。その名前のファイルがすでに存在している可能性があります
これは私を悩ませ始めています。私は最近FTPをクリアすることに決め、持っていたのを忘れていた古いWordpressインストールに出くわしました(そうです、非常にセキュリティを意識しています)。とにかく、何らかの理由でディレクトリの削除に失敗したので、何がブロックの原因であるかを調査し、wp-content内のファイルに絞り込みました。
このファイルを削除しようとすると、2つのエラーが発生する可能性があります。Windowx Explorer( FTP)とWebコントロールパネルのファイルマネージャーで試しました。ここにいくつかのエラーショットがあります:
ご覧のとおり、私のファイルマネージャはファイルがシンボリックリンクであると考えています。私のWebサーバーが明らかに信頼できるアーティファクトをホストしていることは私を怖がらせますが、私も状況にひどく混乱しています。
- ファイルの名前を変更してみました。
- FTPビューを更新しました。
- ファイルを別のディレクトリに移動しようとしました(これは機能しましたが、削除しても成功しませんでした)。
- ファイルを編集してから削除してみました。
そして、私は途方に暮れています。シンボリックリンクを削除する特別な方法はありますか?今まで聞いたことがありません。
編集
OhoWindowsあなたは本当に一種の魔術師です。コマンドプロンプトでFTPを見て、何を推測することにしましたか?ファイルが存在しません。シンボリックリンクを無視するかどうかftp
はわかりませんが、あきらめようとしています:P
git - Gitにシンボリックリンクをフォローさせるにはどうすればよいですか?
シンボリックリンクをコピーに置き換えるシェルスクリプトを使用するのが最善ですか、それともGitにシンボリックリンクをたどるように指示する別の方法がありますか?
PS:あまり安全ではないことは知っていますが、特定の場合にのみ実行したいと思います。
linux - ディレクトリを指すシンボリック リンクがあるかどうかを確認する方法はありますか?
サーバー上に、多数のシンボリック リンクを指すフォルダーがあります。それ以来、新しいフォルダーを作成したので、これらすべてのシンボリック リンクを新しいフォルダーを指すように変更したいと考えています。元のフォルダーを新しいフォルダーへのシンボリックリンクに置き換えることを検討しましたが、その慣行を続けると、すぐに非常に面倒になる可能性があるようです.
私がやっていることは、新しいフォルダーを指すようにシンボリックリンクを手動で変更することですが、いくつか見逃している可能性があります。
特定のフォルダを指すシンボリック リンクがあるかどうかを確認する方法はありますか?
python - Pythonで論理ディレクトリパスを取得/設定する方法
Python では、絶対ディレクトリではなく、論理ディレクトリを取得または設定できます。
たとえば、私が持っている場合:
そして、私が持っています
同じディレクトリにリンクされています。
os.getcwd と os.chdir を使用すると、常に絶対パスが使用されます
これを回避する唯一の方法は、別のプロセスで「pwd」を起動して出力を読み取ることです。ただし、これは os.chdir を初めて呼び出すまでしか機能しません。
unix - シンボリックリンクとハードリンクの違いは何ですか?
最近、就職の面接でこれを聞かれました。私は正直に言って、シンボリックリンクがどのように動作し、どのように作成するかは知っていると言いましたが、ハードリンクの使用法とシンボリックリンクとの違いについては理解していません。
c++ - Windows Vista でシンボリック リンクを作成するにはどうすればよいですか?
Windows Vista/2008 マシンで Java からシンボリック リンク (ソフト リンク) を作成しようとしています。これを行うには JNI を呼び出す必要があるという考えに満足しています。私は実際のCコードについて助けを求めています。リンクを作成するための適切なシステム コールは何ですか? この件に関するいくつかの優れたドキュメントへのポインターは非常に高く評価されます。
linux - ディレクトリへのシンボリックリンクを削除する
重要なディレクトリへのシンボリック リンクがあります。ディレクトリをその背後に置いたまま、そのシンボリックリンクを取り除きたい。
私は試しrm
てみましたrm: cannot remove 'foo'
。
私は試してrmdir
戻ってきましrmdir: failed to remove 'foo': Directory not empty
たrm -f
。rm -rf
sudo rm -rf
それから私は自分のバックアップを探しに行きました。
お風呂の水で赤ちゃんを捨てずにシンボリックリンクを取り除く方法はありますか?
windows - Windows シンボリック リンクのターゲット パスにプログラムでアクセスするにはどうすればよいですか?
Windows 6 (Vista および Server 2008) は、 CreateSymbolicLink関数を使用して作成できる適切なシンボリック リンクをサポートしています。しかし、シンボリック リンクを調べてリンクのターゲットのパスを取得するための対応する関数はないようです。
シンボリック リンクは再解析ポイントの実装であるため、再解析ポイント関数を使用してターゲット パスを取得できることがわかりました。しかし、再解析ポイントを使用するために必要なヘッダー ファイルは、Windows Driver Kitに付属しているようです。このキットを VS2008 でセットアップするのは簡単ではないようです。
リンクのターゲットを取得するために見逃した素敵な単純な関数はありますか、それとも、この情報にアクセスするためのコードを記述するためだけに Windows ドライバー開発環境をセットアップする必要があるのでしょうか?
編集: Adam Mitz が GetFinalPathNameByHandle の提案を思いつきました。この関数は、ローカルのシンボリック リンクにはうまく機能しますが、(UNC パス経由の) リモート リンクの解決には機能しないようです。
EDIT 2:Adamのリクエストで、私が試したことの詳細を以下に示します:
最初はFSCTL_GET_REPARSE_POINT
/DeviceIoControl
ルートをたどりましたが、REPARSE_DATA_BUFFER
構造が得られます。この構造を定義するヘッダーは、Windows Driver Kit 内にのみ存在するようです。
GetFinalPathNameByHandle()
リンクがローカル ディスク (C:\...\link
など) に存在する場合は正常に動作します。不思議なことに、ターゲット ファイルが存在するかどうかに関係なく、フラグが指定されてCreateFileW()
いるかどうかに関係なく、リンクへのハンドルを取得してターゲットを取得できることがわかりました。FILE_FLAG_OPEN_REPARSE_POINT
とが ( ) を介してリモート リンクを調査するために使用されるとCreateFileW()
、事態は解明され始めます。が指定されている場合、ターゲット パスではなく、常にリンク パスを返します。が指定されていない場合、ターゲット パスが返されますが、ターゲットが存在し、リンクと同じマシン上にある場合のみです。リンクが別のマシンを指している場合、ネットワーク権限エラーが発生します。リンクが存在しないローカル ファイルを指している場合、ファイルが見つからないというエラーが発生します。GetFinalPathNameByHandle()
\\?\UNC\....
FILE_FLAG_OPEN_REPARSE_POINT
GetFinalPathNameByHandle()
FILE_FLAG_OPEN_REPARSE_POINT