2024-06-26 10:08:23 发布
网友
bash等价于^{}?具体来说,我对删除执行find时给出的前导./感兴趣。在
find
./
matt@stanley:~/src/libtelnet-0.20/test$ find . ./Makefile ./Makefile.in ./Makefile.am ...
为此,您只需通过sed管道输出,不必对整个路径进行规范化:
sed
your_command_goes_here | sed 's?^\./??'
这将删除一行开头的所有./序列。在
以下文字说明了这一点:
如您所见,对于我的临时shell脚本,我有一个相当直观的命名标准:-)
我正在努力寻找一个我想使用os.path.normpath的案例。在具有符号链接的系统(如unix或Windows)上,它返回的值可能不指定同一个文件:
os.path.normpath
$ mkdir /tmp/one /tmp/one/two $ ln -s /tmp/one/two /tmp/foo $ python -c 'import os.path; print os.path.normpath("/tmp/foo/..")' /tmp $ ls /tmp/foo/.. two
/tmp/foo/..是/tmp/one,不是{}!在
/tmp/foo/..
/tmp/one
在Linux上,readlink -- "$filename"规范化路径中的所有符号链接。它返回的文件名在执行命令时将同一个文件指定为$filename(以后,如果所涉及的符号链接之一被更改,则可能不会)。但大多数情况下,这是不必要的:只要保持$filename原样。在
readlink -- "$filename"
$filename
如果出于美观的原因想删除./前缀,只需将其明确地去掉。在
我通常通过使用find的-printf参数来实现这一点。在
-printf
如果您在多个路径中搜索,则以下操作正常:
find path1 path2
如果您在.中搜索,则以下操作正常:
.
如果你有一个混合路径(例如find path1 path2 .),你必须使用sed。在
find path1 path2 .
为此,您只需通过
sed
管道输出,不必对整个路径进行规范化:这将删除一行开头的所有
./
序列。在以下文字说明了这一点:
^{pr2}$如您所见,对于我的临时shell脚本,我有一个相当直观的命名标准:-)
我正在努力寻找一个我想使用
os.path.normpath
的案例。在具有符号链接的系统(如unix或Windows)上,它返回的值可能不指定同一个文件:/tmp/foo/..
是/tmp/one
,不是{在Linux上,
readlink -- "$filename"
规范化路径中的所有符号链接。它返回的文件名在执行命令时将同一个文件指定为$filename
(以后,如果所涉及的符号链接之一被更改,则可能不会)。但大多数情况下,这是不必要的:只要保持$filename
原样。在如果出于美观的原因想删除
^{pr2}$./
前缀,只需将其明确地去掉。在我通常通过使用
find
的-printf
参数来实现这一点。在如果您在多个路径中搜索,则以下操作正常:
如果您在
^{pr2}$.
中搜索,则以下操作正常:如果你有一个混合路径(例如
find path1 path2 .
),你必须使用sed
。在相关问题 更多 >
编程相关推荐