千家信息网

linux学习-常规命令使用1

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,系统用户PS1 定义提示符的格式 例如:PS1=XXX 当前用户名就会被临时修改echo $PS1[\u@\h \W]\$ // u表示用户,h 主机名 W 当前的文件夹# 管理员$ 普通用户命令类型
千家信息网最后更新 2024年09月21日linux学习-常规命令使用1

系统用户
PS1 定义提示符的格式 例如:
PS1=XXX 当前用户名就会被临时修改

echo $PS1

[\u@\h \W]\$ // u表示用户,h 主机名 W 当前的文件夹



# 管理员
$ 普通用户


命令类型当我们输入一个命令后,它会通过shell交给kernel,kernel来判断这个命令的类型

内部指令 :内核自带的 kernel自身就有的
外部指令 :GUN file 安装的文件

查看一下内部指令存放的位置


ll vmlinuz-3.10.0-327.el7.x86_64 -h

//h表示符合人类查看方式,查看数据的大小比较方便,这个内核只有4.1M。这里包含了所有的内置命令


type which 命令的比较

type:用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。通过上图可知who是外部指令,type是内部指令

which命令用于查找并显示给定命令的绝对路 径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用 which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

通过比较可知 which只能找外部指令,不能找内部指令

补充:

which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称


which:通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件

whereis
参数
-b : 只找二进制文件
-m: 只找在说明文件manual路径下的文件
-s : 只找source源文件
-u : 没有说明文档的文件
例如:whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz // 将和passwd文件相关的文件都查找出来

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。


locate

locate 文件或者目录名称
例如:
locate passwd

/home/weblogic/bea/user_projects/domains/zhanggongzhe112/myserver/stage/_appsdir_DB_war/DB.war/jsp/as/user/passwd.jsp
/home/weblogic/bea/user_projects/domains/zhanggongzhe112/myserver/stage/_appsdir_admin_war/admin.war/jsp/platform/passwd.jsp
/lib/security/pam_unix_passwd.so
/lib/security/pam_passwdqc.so
/usr/include/rpcsvc/yppasswd.x
…………
find
参数说明:
时间查找参数:
-atime n :将n*24小时内存取过的的文件列出来
-ctime n :将n*24小时内改变、新增的文件或者目录列出来
-mtime n :将n*24小时内修改过的文件或者目录列出来
-newer file :把比file还要新的文件列出来
名称查找参数:
-gid n :寻找群组ID为n的文件
-group name :寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件
-user name :寻找用户者名称为name的文件
-name file :寻找文件名为file的文件(可以使用通配符)
例如:find / -name who


补充总结:当我们用whereis和locate无法查找到我们需要的文件时,可以使用find,但是find是在硬盘上遍历查 找,因此非常消耗硬盘的资源,而且效率也非常低,因此建议大家优先使用whereis和locate。
locate 是在数据库里查找,数据库大至每天更新一次。
whereis 可以找到可执行命令和man page
find 就是根据条件查找文件。
which 可以找到可执行文件和别名(alias)




0