在Linux和Windows机器的混合环境中,有很多通过IM,电子邮件等共享的链接。它们指向相同的位置,但是具有不同的格式。
例如Windows 的链接\\MACHINE\dir1\dir2\file.xyz
相当于Linux的smb://MACHINE/dir1/dir2/file.xyz
。
是否有可能在 Nautilus 或/和 shell 中透明地翻译 Windows 链接?
答案1
如你所说
在 Nautilus 或/和 shell 中?
shell 方式:
使用
awk
awk -F'\' '{printf "smb:/"; for(i=2;i<=NF;i++){printf "/%s",$i}; printf "\n"}'<<< "\MACHINE\dir1\dir2\file.xyz"
输出:
smb://MACHINE/dir1/dir2/file.xyz
或者通过 Perl
perl -pe 'print "smb:/"; s/\\/\//g' <<< "\MACHINE\dir1\dir2\file.xyz"
输出:
smb://MACHINE/dir1/dir2/file.xyz
答案2
更短awk
awk '{gsub(/\\/,"/");print "smb:/" $0}'
示例输出:
$ printf "%s" '\MACHINE\dir1\dir2\file.xyz' | awk '{gsub(/\\/,"/");print "smb:/" $0}'
smb://MACHINE/dir1/dir2/file.xyz
Java
非常原始,请谨慎使用。用法:java translatepath towin[tonix] "/path/to/file"["\path\to\file"]
public class translatepath
{
public static void main(String[] args)
{
System.out.println(args[1]);
if (args[0].contentEquals("tonix"))
{
System.out.println(toNixPath(args[1]));
}
else if (args[0].contentEquals("towin"))
{
System.out.println(toWinPath(args[1]));
}
}
public static String toNixPath(String path)
{
return path.replace("\\","/");
}
public static String toWinPath(String path)
{
return path.replace("/","\\");
}