web-dev-qa-db-ja.com

フォルダーが実際にシンボリックリンクであるかどうかを確認する方法と、フォルダーが壊れている場合に修正する方法を教えてください。

Linuxにシンボリックリンク、ある種のショートカット、またはフォルダーがあるかどうかを確認するにはどうすればよいですか?次のスクリーンショットをご覧ください。

symbolic link in linux Shell

ご覧のように、lsコマンドは、一部が濃い青色に着色されているオブジェクトと、薄い青色(シアン)に着色されているオブジェクトを一覧表示します。これらのシアン色のオブジェクトは何ですか?これらは実際のシンボリックリンクですか?

ご覧のとおり、hddと呼ばれるものにはcdできません。

_root@dm500hd:/# cd hdd
-sh: cd: can't cd to hdd
_

_/media/hdd_にリダイレクトする必要があると思いますが、hddフォルダーがないことに気づきました。

これを修正する方法はありますか?

pdate: _ls -al_コマンドの結果は次のとおりです。

symbolic link in linux Shell 2

ご覧のとおり、_hdd -> /media/hdd_と表示され、色が赤になっています。これは、破損している、または自動マウントされている、つまり物理的なHDDが接続されている場合に発生しますか?

pdate:これは_grep media /etc/auto*_コマンドの結果です。

symbolic link in linux Shell 3

これらの_/etc/auto.master:/media/net_および_/etc/auto.network_エントリは何をしますか?

_ls -Fal /media_コマンドの結果は次のとおりです。

symbolic link in linux Shell 4

これは助けになりますか?...

statおよびfileコマンドの結果と、/ usrおよび/ binのリストを次に示します。

symbolic link in linux Shell 5

これは何らかの形で私を助けますか?...それはあなたが私を助けるのですか?...

一方で、知っておくべきことは、これはBusyBoxを備えたLinuxベースのSTBであり、組み込みシステムであることです。したがって、すべてのコマンドがサポートされるわけではありません。

pdate:/sbinおよび/ usr/sbin内のファイルとサポートされているコマンドを示す最後のスクリーンショット。

symbolic link in linux Shell 6

pdate:新しい共有が追加されました...

この古い共有を削除し、以前と同じ名前の共有を再作成し、2番目の共有を追加しました。だから今私はそれらの2つを持っています。

_SHARES
remote share   local share
mydream        dream1
mydream2       dream2

LOCATIONS
remote        local
C:\mydream    /media/net/dream1
C:\mydream2   /media/net/dream2
_

録音は/ media/net/dream1/movieに配置されます。

また、共有の夢2については、マウントマネージャーでHDDの代替としてマウントしないことを選択しました。これは、複数のHDDとして機能させることはできないと思われるためです。どこに記録しますか?両方の場所へ?データレートが2倍になっていますか?...それは不可能だと思います。

このため、dream2共有用のmovieという名前のサブフォルダーはありません。作成時にHDD交換として指定されたものだけが、ムービーサブフォルダーを取得します。

ルートからhddにcdすると、_/media/net/dream1_になります。 cdを_.._(親)にすると、root (/)に戻ります。

ルートで_ls -al_は_hdd -> media/hdd_を返します。 _ls -al hdd_は_hdd -> media/hdd_を返します。 _ls -al media_は_/media/net/dream1_を返します。

また、cdから_/media_への場合、別のhddシンボリックリンクがあります。今まで気づかなかった。これは共有がマウントされたときに自動的に作成されると思います。そして、私がこのhddにcdした場合、それは_/media/net/dream1_に行きます。

別のhddシンボリックリンク(/ media/hdd)を指すシンボリックリンクhdd(/ hdd)は、共有フォルダー(/ media/net/dream1)を指しますか?... ..めまいがする...

Enigma2イメージのバージョン3.2.3または少なくとも3.2.0より前は、このようなものではありませんでした。

編集:HDDの代替として機能する2番目の共有を設定することにより、それが記録用のアクティブな共有になります。同時に、HDD交換として機能するように設定されていた共有は、「はい」(HDD交換として機能)に設定されていても、アクティブではなくなります。

Dream1が最初にHDD交換として使用された場合(「yes」が交換として機能する)、次にdream2がHDD交換として機能するように設定されている場合、それは記録用の新しい共有になります。 dream1に保存されているビデオファイルを表示および表示することはできますが、記録することはできません。録音にdream1を使用したい場合は、最初にdream2を「no」に設定し(HDDの代替としての機能を停止)、次にdream1を「yes」にリセットする必要があります。

したがって、いいえ、同時に2つの共有に記録することはできません。それらの1つは行かなければなりません。つまり、dream1またはdream2のいずれかであり、両方ではありません。両方が同じトランスポンダー上にある場合、複数のサービス(テレビチャンネル)を記録することは可能ですが、そうでない場合は、「無料チューナーなし」というメッセージが表示されることに言及する必要があります。これは、チューナーが1つしかないSTBです。

30
Samir

File、stat、またはlsを使用できます。

ファイル:

Fileコマンドを使用して、ファイルのタイプ(シンボリックリンク、ディレクトリ、デバイス)またはコンテンツ(拡張子に関係なく、テキスト、gzip、イメージ、tarなど)に基づいてファイルを分類します。

 $ファイル/dev/stdout
/dev/stdout: `/ proc/self/fd/1 'へのシンボリックリンク
 $ファイル/ proc/self/fd/1 
/proc/self/fd/1: `/ dev/pts/0 'へのシンボリックリンク
 $ファイル/dev/pts/0
/dev/pts/0:文字特殊(136/0)
 $ファイル/etc/passwd
/etc/passwd:ASCII text 

ls:

 $ ls -al /dev/stdout
lrwxrwxrwx 1 root root 15 Jan 27 07:55/dev/stdout-> /proc/self/fd/1

stat:

statコマンドは、権限、サイズ、ブロック数などのファイルメタデータを出力します...

$ stat /dev/stdout
ファイル: '/ dev/stdout'-> '/proc/self/fd/1'
サイズ:15ブロック:0 IOブロック:4096シンボリックリンク
デバイス:5h/5d Inode:1212リンク:1 
アクセス:(0777/lrwxrwxrwx)Uid:(0/root)Gid:(0/root)
アクセス:2014-01-27 11:22:47.971187828 -0200 
変更:2014-01-27 07:55:13.996981285 -0200 
変更:2014-01-27 07:55: 13.996981285 -0200 
出生:-
30
filipenf

bash:

if [[ -h dirname ]]; then
    echo "it's a symbolic link"
    if ! stat $(readlink dirname) &>/dev/null; then
        echo "link target does not exist"
    fi
fi
8
glenn jackman

特定のファイルがどのような種類のエンティティであるかを確認する最も簡単な方法は、fileコマンドを使用することです。 ls分類子マークを覚えておく必要がなく、ユーザーごと、マシンごとに異なる色の出力に依存することなく、明確で健全な出力が得られます。例えば:

mail ~ # file /test
/test: broken symbolic link to `/nonexist'
mail ~ # file /dev
/dev: directory
mail ~ # file /dev/fd
/dev/fd: symbolic link to `/proc/self/fd'

fileのないシステムを使用している場合は、statコマンドを使用して、それがどの種類のファイルエントリであり、どこを指しているのかを知ることができます。リンクが壊れているかどうかを確認するには、stat -Lを実行してリンクを逆参照する必要があります。リンクが壊れているとエラーが発生します。

質問の2番目の部分については、mediaディレクトリは、ある種のオートマウンタによって管理されることがよくあります。 /media/hddエントリは、システムでUSB大容量ストレージデバイスに使用されている場合や、適切な種類のハードドライブ(ATA vs SCSI vs Xenブロックデバイス)を待機している場合もあります。壊れたリンクは、プログラムがリンクを使用しない限り何も害を及ぼすことはありません。メディアリンクは、本当にあなたの便宜のためです。安全に/hddリンクを離れたり、好きなように削除したりできます。

3
joruffin
  1. はいシアンはシンボリックリンクです
  2. 彼らが指している場所を確認するには:ls -Fal
  3. 出力ls -Fal /media

これはおそらくある種の自動マウントポイントです。

grep media /etc/auto*ヒットする可能性があります。

1
Nils