我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 1.命令格式: which 可执行文件名称 2.命令功能: which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 3.命令参数: -n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 -p 与-n参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位的宽度。 -V 显示版本信息 4.使用实例: 实例1:查找文件、显示命令路径 命令: which lsmod 输出: [iyunv@localhost ~]# which pwd /bin/pwd [iyunv@localhost ~]# which adduser /usr/sbin/adduser [iyunv@localhost ~]# 说明: which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!
实例2:用 which 去找出 which 命令: which which 输出: [iyunv@localhost ~]# which which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which [iyunv@localhost ~]# 说明: 竟然会有两个 which ,其中一个是 alias 这就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令!
语 法:alias[别名]=[指令名称]
例如
[iyunv@gzsj ~]# alias s='ls /var/' alias语法格式
[iyunv@gzsj ~]# s
cache cvs empty gdm local log nis preserve spool yp
crash db games lib lock mail opt run tmp
查看alias别名
[iyunv@gzsj ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias s='ls /var/'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
想要别用永久生效或在别的终端生效方法
[iyunv@gzsj ~]# vi .bashrc
[iyunv@gzsj ~]# pwd
/root
[iyunv@gzsj ~]# vi ~/.bashrc
PATH
PATH指的是多有命令所存在的路径,只有命令的路径在PATH里边才可以被查找到,如果没有在PATH中只能打全部路径才可以执行。
上边提到了alias,也提到了绝对路径的/bin/rm ,然后您意识到没有,为什么我们输入很多命令时是直接打出了命令,而没有去使用这些命令的绝对路径?这是因为环境变量PATH在起作用了。请输入 echo $PATH,这里的echo其实就是打印的意思,而PATH前面的$表示后面接的是变量。
[iyunv@gzsj ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[iyunv@gzsj ~]# mv /bin/ls /tmp/
[iyunv@gzsj ~]# ls
-bash: /bin/ls: 没有那个文件或目录
[iyunv@gzsj ~]# PATH=$PATH:/tmp/
[iyunv@gzsj ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[iyunv@gzsj ~]# which ls
alias ls='ls --color=auto'
/tmp/ls
|