which
概述
用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法
1 | Usage: which [options] [--] programname [...] |
选项
1 | -n <文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
示例
1 | [user1@practice ~]$ which ls |
dirname
概述
去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/
及其前面的字符,删除其他部分,并写结果到标准输出。如果最后一个/
后无字符,dirname 命令使用倒数第二个/
,并忽略其后的所有字符。
语法
1 | Usage: dirname NAME |
选项
1 | --help:显示帮助 |
示例
1 | [user1@practice ~]$ dirname // |
basename
概述
用于打印目录或者文件的基本名称。
语法
1 | Usage: basename NAME [SUFFIX] |
选项
1 | --help:显示帮助 |
示例
1 | [user1@practice ~]$ basename // |
readlink
概述
输出符号链接值或者权威文件名,主要用来 找出符号链接所指向的位置
语法
1 | readlink [OPTION]... FILE |
选项
1 | -f, --canonicalize:递归跟随给出文件名的所有符号链接以标准化,除最后一个外所有组件必须存在。简单地说,就是一直跟随符号链接,直到非符号链接的文件位置,限制是最后必须存在一个非符号链接的文件 |
示例
1 | [user1@practice ~]$ readlink awk |
type
概述
用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令
命令类型
- alias:别名。
- keyword:关键字,Shell保留字
- function:函数,Shell函数
- builtin:内建命令,Shell内建命令
- file:文件,磁盘文件,外部命令
- unfound:没有找到
语法
1 | type: usage: type [-afptP] name [name ...] |
选项
- -a:打印name的所有可能情况,例如
1 | [user1@practice ~]$ type -a ls |
-f:不会去查找function
-t:打印
alias
,keyword
,function
,built-in
,file
这5种类型-p:如果
type -t name
输出file,那么会打印name所在路径-P:不管
type -t name
是不是输出file
,都会去搜索name所在路径,比如type -P ls
,尽管type -t ls
打印的是alias
(因为alias的优先级高于file),但是仍然会搜索出ls所在的路径/bin/ls
如果type不加任何选项,直接加1个或者多个name,那么会依次打印这些name的类型。只有所有name的类型都能成功打印,type才返回成功,否则,只要任何一个name类型无法打印,那么就返回失败
示例
1 | [user1@practice ~]$ type -t echo |