Iinux powershell 如何测试文件是否是符号链接?

Iinux powershell 如何测试文件是否是符号链接?

在 Linux 上,我想用 powershell 替换 bash 脚本。该脚本需要测试文件以确定它是否是符号链接。在 bash 中,可以使用运算符-L

if [[ -L "/tmp/mysteryfile" ]] ; then ; echo "It is a link" ; fi

如何在 Linux 上的 powershell 中执行相同操作?

答案1

在我的 Ubuntu 19.04 上:

PS> gci /bin/bz*|select Mode,LastWriteTime,Length,Name,Attributes,LinkType|ft -auto

产量

Mode   LastWriteTime     Length Name           Attributes LinkType
----   -------------     ------ ----           ---------- --------
--r--l 04.07.19 14:50:14  38984 bzcat            ReadOnly HardLink
-----l 04.07.19 14:50:14      6 bzcmp        ReparsePoint SymbolicLink
--r--- 04.07.19 14:50:14   2227 bzdiff           ReadOnly 
-----l 04.07.19 14:50:14      6 bzegrep      ReparsePoint SymbolicLink
--r--- 13.08.18 13:29:27   4877 bzexe            ReadOnly 
-----l 04.07.19 14:50:14      6 bzfgrep      ReparsePoint SymbolicLink
--r--- 04.07.19 14:50:14   3641 bzgrep           ReadOnly 
--r--l 04.07.19 14:50:14  38984 bzip2            ReadOnly HardLink
--r--- 04.07.19 14:50:14  14328 bzip2recover     ReadOnly 
-----l 04.07.19 14:50:14      6 bzless       ReparsePoint SymbolicLink
--r--- 04.07.19 14:50:14   1297 bzmore           ReadOnly 

因此,模式l表示一个链接,属性ReparsePoint表示一个符号链接。

但只有 LinkType 可以区分硬链接和符号链接

if((Get-Item "/tmp/mysteryfile").LinkType -eq 'SymbolicLink'){"It is a SymbolicLink"}

或者

if($LT=(Get-Item "/tmp/mysteryfile").LinkType){"It is a $LT"}

查看一些统计数据:

PS> gci /bin -rec -force -ea 0|Where LinkType|Group LinkType -NoElement               

Count Name
----- ----
    3 HardLink
  276 SymbolicLink

相关内容