タグ付けされた質問 「symlink」

存在しない、または既存のファイルまたはディレクトリを参照する特別なタイプのファイル。シンボリックリンクの内容は、シンボリックリンクが指すファイルへのパスである任意の文字列で構成されます。パス名の解決中にシンボリックリンクが検出されると、ファイルに保存されている文字列を使用してパス名の解決が変更されます。

3
不足しているディレクトリを作成するには、 `ln`を使用します
だから私は小さなパッケージマネージャーを書いていて、私が遭遇した問題はファイルへのシンボリックリンクを作ることです。 パッケージをにインストールし/usr/pkg/name-version、ファイルを読み取って、作成するシンボリックリンクを決定します。lnリンクの作成に使用していますが、Linux APIヘッダーをインストールしようとすると問題が発生します。ヘッダーファイルをリンクする必要があります。ヘッダーファイルを含むフォルダーではなく、リンクする必要があります(したがって、2つのパッケージがインクルードの同じサブディレクトリにファイルを配置する必要がある場合、1つのパッケージをねじ込むことなくそれらを行うことができます)。 その問題は解決しましたがln、パスが不完全な場合は単にエラーが表示されます。これは、パッケージがインストールされるまでこれらのディレクトリが存在してはならないため、厄介です。 ln不足しているディレクトリを作成するフラグがありますか、それとも複雑なbashスクリプトを使用する必要がありますか?

1
シンボリックリンクの作成を強制するには?
日付で整理された(名前付きの)他のディレクトリでいっぱいの特定のディレクトリがあります。参照しやすいcurrentように、最新のものを指すというシンボリックリンクがあります。 新しい日付ディレクトリを作成するスクリプトで、currentシンボリックリンクを作成または修正して、作成された最新のディレクトリを指すようにします。 適切なコマンドは、たとえば、 ln -fs 2017-03-01 current 場合はcurrentシンボリックリンクがまだ存在していない、この作品。 ただし、currentシンボリックリンクがすでに作成されている場合(および、たとえば、ディレクトリを指している場合2017-02-28)、これは機能しません。 代わりにシンボリックリンクを除去するcurrentと、新しいシンボリックリンク作成currentた点にし2017-03-01、その結果、代わりに壊れたシンボリックリンクであろうと呼ば 2017-03-01を指し、それ自体休止内部ディレクトリ2017-02-28(シンボリックリンクがここでcurrent指摘し、まだ点)。 これは私を困惑させたので、の仕様を読みましたln。これは予想される動作です。 あらすじ ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir 説明 ... 2番目の構文形式は、最後のオペランドが既存のディレクトリを指定するときに想定されます。 する全く方法がないこと、そして、思わシンボリックリンクを再指定現在のディレクトリを指していることを新たなターゲットに新しいターゲットは名前の持つ別のシンボリックリンクの名前からは。だからln -fs私が思ったようには動かない。 必要があります I rm current、またはそこには、私が見落としてきた別のアプローチですか?
10 symlink  rm  ln 

1
ls -l --group-directories-first(シンボリックリンクにも作用)
lsオプションを指定する--group-directories-firstと、ディレクトリが一番上に表示され、出力がlsきれいになります。 ls -l --group-directories-first ただし、symlinks実際symlinksにはディレクトリに対するには作用しません。使用する可能性があります ls -l -L --group-directories-first これは両方の種類のディレクトリを上にリストしますが、適切なディレクトリとシンボリックリンクされたディレクトリを区別しないため、やはり混乱を招きます。 ls通常のディレクトリとは区別しながら、シンボリックリンクされたディレクトリを上に表示できますか? 編集: 私はを使用していbashます。
9 bash  zsh  directory  ls  symlink 

1
node-devを使用してnpmの開始が許可されないのはなぜですか?
権限の低いユーザーでnode.jsアプリケーションを起動しようとしています。私が知っているすべてのファイルは正しいユーザーが所有しており、適切に設定されたアクセス許可を持っています。これを行うためにスクリプトファイルを使用しようとしています。このコマンドでスクリプトを呼び出します sudo su - nodejs ./start-apps.sh シェルスクリプトはこのコマンドを実行してアプリを起動します cd "/home/nodejs/my-app" npm start npm startされ、ここで文書化。基本的には、使用するコマンドをpackage.jsonファイルから取得します。このファイルは、アプリでは次のようになります。 // snip "scripts": { "start": "node-dev app" }, そして、それはエラーを吐き出します: > my-app@0.1.0-build.100 start /home/nodejs/my-app > node-dev app sh: 1: node-dev: Permission denied npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app` npm ERR! Exit status 126 それshはシェルコマンドからのエラーを報告していると言っているようです。問題がnpmコマンド自体にアクセスしているのではないと思います。アクセスした場合、npmコマンドからの出力の前に拒否された権限が発生します。ただし、除外するために、npmコマンド自体の権限を以下に示します。 $ sudo find / …

1
移動または名前変更後にファイルへの参照を維持するための戦略?
最近Macを使用していて、フォルダの名前を変更して別の場所に移動した後も、Xcodeがまだ最新のプロジェクトを見つけられることに驚いていました。 現在、これは作業中の重いインフラストラクチャの結果であることを理解していますが、残りのUnixの世界でも同様の機能をどうにかして実現できるかどうか疑問に思いました。

4
現在のユーザーのホームディレクトリへの標準のシンボリックリンクはありますか?
シェルは~ホームディレクトリに展開できます。 $HOME通常は同じ取り決めがありますが、そのような拡張をサポートしていないコンテキストから現在のユーザーのホームディレクトリを参照したい場合がよくあります。 私は$HOME動作する設定ファイルを持っていますが、動作~しませんし、逆も同様です。 私はfuseがこれらの線に沿って何かを提供することができると思います/var/myself->$HOME それで私は設定ファイルに値を入れて次のようなものを指すことができました /var/myself/backdrops/pornography/wtf/yarly.jpg このようなものはもうありますか?そうでない場合、このようなものが存在しないことには十分な理由がありますか?
9 symlink 

1
ディレクトリシンボリックトラバーサルと親ディレクトリについて
ディレクトリが/dir1あり/dir2/linked、後者が前者へのシンボリックリンクであるとしましょう。 ときにあなたがcdするlinkedとpwd、あなたは出力を得ます/dir2/linked。その後cd ..、あなたは着られるでしょう/dir2。この振る舞いは、あなたが/dir2/linked以前にいたという概念と一致しています。ただし、私が理解しているように、..任意のディレクトリの親ディレクトリ()は、ディレクトリiノード(つまり、物理的にディスク)に格納されています。明らかに、/dir2/linkedは本当になので/dir1、iノードの親ディレクトリは/ さらに複雑な問題に、内部ながら/dir2/linked、の出力ls ..とはcd .. ; ls .異なっています!cdシンボリックリンクされたパスを尊重しているように見えますが、ls「物理的な」パスを尊重しています。ただし、この質問で述べたようにcd -P、このユースケースにはあります。 man pwd 「物理」および「論理」作業ディレクトリについて言及していますが、この時点ではまだいくつか質問があります。 でPWD述べたように、この動作は常に環境変数によって提供されman pwdますか? それらが両方ともシェルコマンド(つまり、プログラムではない)である場合、なぜデフォルトcdでls動作が異なるのですか? 一般的なプログラム(シェルコマンドではない)PWDは、物理パスの代わりに使用しますか?実装次第だと思いますが、経験則はありますか?

1
Bash:ファイルにリダイレクトし、常に新規に作成します
bashでは、コマンドリンク echo test > actual.txt 呼び出されたファイルの内容actual.txtを「test」で置き換え、ファイルが存在しない場合は作成します。ただし、ファイルが存在する場合、bashはそれを開き、切り捨てて、新しい内容をファイルに書き込みます。 具体的には、リダイレクトコマンドはこのシナリオで失敗します。 ln -s /some/illegal/path link.txt echo test > link.txt Bash 4.4.12を使用すると、紛らわしいエラーメッセージが表示されますlink.txt: No such file or directory。 これを回避する1つの方法は、リダイレクトされたコマンドを実行する前に、必ずファイルを削除することです。 rm link.txt && echo test > link.txt しかし、この失敗モードを防ぐbashオプションまたはリダイレクト演算子の微調整があるかどうか疑問に思っていました。何か案は?

1
アクセスできないファイルへのシンボリックリンクを作成できますか?
[ 免責事項:この質問には悪意はありません。学校のプロジェクトのln -sコマンドを理解しようとしています] たとえば、ホームフォルダのあるファイルシステムがあるとします/home/anna。/home/bobアクセスできないフォルダ、アクセスできないファイル、foo.txt ln -s /home/bob/foo.txtホームフォルダーで正常に実行できますか?可能であれば、アクセスできないリンクが(と同じ権限でfoo.txt)生成されると想定することは正しいですか? DIDにfoo.txtへのアクセスではなく、に対する読み取り権限がある場合はどうなり/home/bobますか? アクセスできた/home/bobが読めなかった逆の場合はfoo.txtどうですか?

1
/ tmp内のシンボリックリンクの権限
私のマシンには2人のユーザーがいます:linuxliteとotheruser。 otheruser ファイルがあります: otheruser@linuxlite:~$ ls -l a -rw-rw-r-- 1 otheruser otheruser 6 Mar 31 12:47 a otheruser@linuxlite:~$ cat a hello linuxliteでファイルとシンボリックリンクを作成しました/tmp: otheruser@linuxlite:~$ ls -l /tmp/file /tmp/link -rw-rw-r-- 1 linuxlite linuxlite 3 Mar 31 12:49 /tmp/file lrwxrwxrwx 1 linuxlite linuxlite 17 Mar 31 12:49 /tmp/link -> /home/otheruser/a 現在、およびotheruserを読むことはできますが、彼は読むことができません。/tmp/file/home/otheruser/a/tmp/link otheruser@linuxlite:~$ cat /tmp/file …

2
ディレクトリツリー内のすべての絶対リンクを検索する
相対ではなく絶対的にターゲットを識別するディレクトリ内のすべてのシンボリックリンクを(再帰的に)検出するにはどうすればよいですか? これらのリンクは、ディレクトリツリー全体を移動すると壊れる可能性が非常に高いので、それらを識別する方法が必要です。 ディレクトリツリーを移動した場合(たまたまディレクトリツリーのルートの外を指している場合)は、相対リンクでも壊れる可能性がありますが、この問題はこの質問で対処されていると思います。
8 symlink 

3
ln -s:1つのソースから多くの宛先へ
疑似コード ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/ ソースから2つの宛先へのシンボリックリンクを作成する場所。おそらく、moreutilsそしてpee。 1つのソースから多くのシンボリックリンクを作成するにはどうすればよいですか?
8 symlink 

2
systemdサービスのWorkingDirectoryとしてのシンボリックリンク
私はWorkingDirectory=/srv/ctr/currentシンボリックリンクであるサービスを持っています。 サービスは再起動時にシンボリックリンクの変更を取得しないようです。エラーログ/srv/ctr/releases/69は場所としてレポートしますが、を/srv/ctr/current指し/srv/ctr/releases/72ます。systemdに新しいディレクトリの変更をピックアップさせる方法はありますか?

4
シンボリックリンク自体を差分チェックするのは暑いですか?
Linuxでは、コマンドdiffを使用してファイルの違いを確認できます。私はそれを使用して、両方にコピーされた2つのモジュール間の違いをチェックします/tmp。 ただし、モジュールが/tmpディレクトリにコピーされているため、両方のモジュールにシンボリックリンクがあり、正しいファイルを指していない可能性があります。しかし、これは問題ではありません。確認したいのは、シンボリックリンクが同じかどうかです。 たとえば、1つのモジュールでシンボリックリンクは /home/test/file1 もう1つには、シンボリックリンクがあります。 /etc/rc.d/whatever diff-一般に-ファイルを見つけることができないため、エラーがスローされます。ただしdiff、リンクが有効なファイルを指しているかどうかに関係なく、「ねえ、これらのシンボリックリンクは同じではありません」と言いたいです。 質問:diffリンクをたどるのではなく、リンク自体を比較することはどのようにして可能ですか?
8 symlink  diff 

3
パッケージマネージャーによってインストールされなかったファイルを検索する
私のGentoo Linuxシステムで、パッケージマネージャー(Portage)によってインストールされなかったすべてのファイルのリストを取得したいのですが。これは、システムをできるだけクリーンに保ち、周りにある不要なファイルをすべて削除したいためです。 私が今までに試したことをお話ししましょう。まず、Portageが追跡するパッケージに属するすべてのファイルのリストを生成します。 equery files "*" | sort | uniq > portage.txt 次に、システム上のすべてのファイルのリストを生成します。ただし、気にしないものを除きます。 find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \ -o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \ -o -path /var/www/localhost/htdocs -o -path /lib64/modules \ -o -path /usr/src -o -path …
8 find  gentoo  symlink 

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