1.字符截断:
如果是一般路径的字符截断可以用basename和dirname这两个工具:
basename可以从一个文件路径中截一个文件名
例如:
$ basename
/
home
/
file
.
tar
file . tar
file . tar
dirname可以从一个文件路径中截到一个目录路径
例如:
$ dirname
/
home
/
file
.
tar
/ home
/ home
不使用外部工具进行字符截断
bash有自带的功能来对变量进行字符截断,一般使用"##", "#", "%%", "%", "*" 组合来实现。例如:
$ string
=
hellowbashshell
$ echo ${string # #*sh}
ell
$ echo ${string # *sh}
shell
$ echo ${string % %sh * }
hellowba
$ echo ${string %sh * }
hellowbash
$ echo ${string # #*sh}
ell
$ echo ${string # *sh}
shell
$ echo ${string % %sh * }
hellowba
$ echo ${string %sh * }
hellowbash
"#"表示从字符开始部分除去,一旦匹配则立即除去
"##"表示从字符开始部分除去,会搜整个字符串最长的和的匹配来除去
"%"表示从字符结束的部分除去,一旦匹配成公则立即除去
"%%"表示从字符结束的部分开始除去,会搜寻整个字符穿中最长的匹配来除去
"*"统配符,一般与“##”或"#"联用时放在搜索字符串的左边,例如:${String#*sh}(在sh的左边),与"%%"或"%"联用时会放在匹配字符串的右边,例如:${String%%sh*}
常用技巧:
在路径中取文件名:${path##*/}(与basename相同功能)
在路径中取目录路径:${path%/*}(与dirname相同功能)
取文件的扩展名:${path##*.}