WordPressにリンクする/var/www/
ディレクトリにシンボリックリンクがあります。 ls -la
ディレクトリから/var/www/
コマンドを実行すると、WordPressへのリンクが表示されません。ディレクトリにあるすべてのシンボリックリンクをリストする方法はありますか?
grep
コマンドとls
コマンドを使用して、現在のディレクトリに存在するすべてのシンボリックリンクを一覧表示できます。
これにより、現在のディレクトリに存在するすべてのリンクがリストされます。
ls -la /var/www/ | grep "\->"
解析ls
は Bad Idea® です。その場合、単純なfind
を優先します。
find . -type l -ls
現在のディレクトリのみを処理するには:
find . -maxdepth 1 -type l -ls
クレジット: 「ls -A」コマンドによって返されたファイル名を認識するシェルを作成するにはどうすればよいですか?これらの名前にスペースが含まれていますか?
ls -la
コマンドは、すべてのファイルとフォルダー、およびシンボリックリンクディレクトリを表示します。このコマンドがシンボリックディレクトリを表示しない場合は、WordPressへのシンボリックリンクがないことを意味します。
ls -la
の実行結果を参照してください:
kasiya@kasiya-pc:~$ cd /sys/devices/platform/sony-laptop
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la
total 0
drwxr-xr-x 3 root root 0 Sep 9 19:57 .
drwxr-xr-x 14 root root 0 Sep 10 2014 ..
-r--r--r-- 1 root root 4096 Sep 9 22:32 battery_care_health
-rw-r--r-- 1 root root 4096 Sep 9 22:32 battery_care_limiter
lrwxrwxrwx 1 root root 0 Sep 9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
-r--r--r-- 1 root root 4096 Sep 9 22:32 modalias
drwxr-xr-x 2 root root 0 Sep 9 22:32 power
lrwxrwxrwx 1 root root 0 Sep 9 22:32 subsystem -> ../../../bus/platform
-rw-r--r-- 1 root root 4096 Sep 9 22:32 touchpad
-rw-r--r-- 1 root root 4096 Sep 9 19:57 uevent
すべてのシンボリックディレクトリにl
パーミッションフラグを要求するパーミッションがあることがわかります。また、^l
でgrepを実行すると、シンボリックファイルまたはディレクトリのみをリストできます。
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la |grep ^l
lrwxrwxrwx 1 root root 0 Sep 9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
lrwxrwxrwx 1 root root 0 Sep 9 22:32 subsystem -> ../../../bus/platform
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$
driverおよびsubsystemディレクトリは、ここにある他のディレクトリへのシンボリックリンクです。
grep
はあなたの友達です:
ls -lhaF | grep ^l # list links
ls -lhaF | grep ^d # list directories
ls -lhaF | grep ^- # list files
これは、l
の代わりにperms列のリンクを表す「l」で始まる行をリストします。ディレクトリにはd
を使用し、ファイルには-
を使用します
POSIXly:
find ! -name . -Prune -type l
これは、ディレクトリ内のすべてのシンボリックリンクされたアイテム(dirsとfnsの両方)を返します。
find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"
ただし、実際にシンボリックリンクされたアイテムタイプを区別するために:
ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1
シンボリックリンクされたファイル名アイテムのみを返します。そして、
ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1
シンボリックリンクされたdirnameアイテムのみを返します。
ディレクトリ内のシンボリックリンクを表示するには:
ターミナルを開き、そのディレクトリに移動します。
次のコマンドを入力します。
ls -la
これは、たとえディレクトリが隠されていても、ディレクトリ内のすべてのファイルを長くリストします。
l
で始まるファイルは、シンボリックリンクファイルです。
ls -lai
と入力すると、対応するiノード番号を持つすべてのファイルとサブディレクトリがリストされます。同じiノード番号を持つファイルはリンク(ハードまたはソフト)であり、このソリューションはシンボリックリンクでも機能します。
pythonでも実行できます:
$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir
サンプル実行:
$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc
/etc/vtrgb
/etc/printcap
/etc/resolv.conf
/etc/os-release
/etc/mtab
/etc/localtime
これはos.walk
関数を介して再帰的に拡張できますが、上記で示したように、単一のディレクトリ内のリンクをリストするために単純なリスト生成を使用するだけで十分です。