1.basename
basename去掉带有路径的文件的路径部分。
如:
1 2 | # basename /home/onlyring/bdname.ksh
bdname.ksh |
在利用basename 去掉文件路径部分的时候,可以同时去掉文件名的后缀。
1 2 | # basename /home/onlyring/bdname.ksh .ksh
bdname |
去掉指定后缀要注意以下几点:
(1).你可以指定文件名的其他部分,不一定要后缀部分,如:
1 2 | #basename /home/onlyring/bdname.ksh e.ksh
bdnam |
(2).一定要按照从后到前的顺序来指定,如果不是这样,那么将不起任何作用,如:
1 2 | # basename /home/onlyring/bdname.ksh bd
bdname.ksh |
(3).不能将这个文件名整个文件名都指定,否则不起作用
1 2 | # basename /home/onlyring/bdname.ksh onlyring/bdname.ksh
bdname.ksh |
2.dirname
dirname 和basename 正好相反,dirname是去带路径文件的路径部分
如:
1 2 | # dirname /home/onlyring/bdname.ksh /home/onlyring |
basename 命令处理流程
1.如果参数字符串是null(什么都不输入),输出结果不确定是.或是null.(linux提示参数太少错误,solaris输出”.”),
两种情况下都不执行2-6步骤。
2.如果参数字符串是”//”,执行和不执行步骤3-6有系统部署决定,效果是一样的
3.如果参数字字符串都是由”/”组成,不管有多少个,都将被置为单个”/”字符串。跳过步骤4-6.
如:
1 2 | $ basename //////////// / |
4.如果字符串尾部有”/”,删除”/”.
如:
1 2 | $ basename /home/h/b/onlyring/ onlyring |
5.如果字符串中仍有”/”,整个字符串最后一个”/”,包括”/”前面的字符都被移除。
6.如果命令带有和剩余字符串不完全一致的后缀操作数,也就是说只是剩余字符串的部分后缀,
那么这个后缀部分将被从剩余字符串中移除,否则,什么都不做。
如果后缀字符在剩余字符串中没有匹配成功,系统不认为是错误,系统不会多次做任何操作。
将处理结果输出到标准输出设备
dirname 命令处理流程
1.如果参数字符字符串是”//”,跳过步骤2-5
2.如果这个字符穿都是由”/”组成,字符串被处理成单个”/”舒服,跳过步骤3-8
3.如果字符串末尾有任何”/”字符,删除该”/”。
4.如果字符串中没有”/”存在,输出字符串被置为”.”(period character)
5.如果字符串尾部有任何”/”,删除这些”/”
6.如果剩余字符串是”//”,执行和不执行步骤7-8有系统部署决定,效果是一样的
7.如果字符串尾部有”/”,删除该”/”
8.如果剩余字符串为空,输出字符串被设置为单个”/”
将处理结果输出到标准输出设备
示例:
1 2 3 4 5 6 7 8 9 | path dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "///" "/" "/" "." "." "." ".." "." ".." host "." "host" |
最新评论