`

Linux常用定位/显示命令

阅读更多

Linux常用定位/显示命令

Linux查找/定位功能的相关命令:

常用命令 简要中文说明 程序所在目录
more 分页显示一个文件或任何输出结果,按q键停止显示 /bin
less 与more命令类似,不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件,即支持反向查询 /usr/bin
cat 显示整个文件的内容没有翻页功能,因此常和more命令搭配使用 /bin
whereis 在特定目录中查找符合条件的文件 /usr/bin
find 适合复杂查询条件的文件查找 /usr/bin
slocate 查找文档或目录 /usr/bin
locate 通过文件名搜索文件的工具 /usr/bin
grep 寻找某字串内容工具 /bin
env 查看环境设置 /usr/bin
which 在环境变量$PATH设置的目录里查找符合条件的文件 /bin
apropos 在whatis资料库中搜寻特定字串 /usr/bin

more [文件名]
more命令的主要作用是把输出结果以分页的形式显示在屏幕上,一页停止一次,例如用ls命令去找一个x字母开头的文件时,如果ls x*仍列出太多文件(超过一屏),就可以配合管道符号和more命令:ls x* | more来分页显示输出到终端。more命令会一屏停止一下,按空白键才会继续显示下一屏的内容。more就犹如DOS的DIR命令/P选项。

也可以用more命令分页显示文章的内容,例如

more /etc/XF86Config
cat /etc/XF86Config | more

但是因为more先天缺陷,如果您看完了这页,想要回头看上一页是不行的,必须从第一页重来,即不支持向上翻页。这也是more命令很少被使用的原因,因此通常使用less命令代替more命令或直接用文本编辑器查看。

less [文件名]
分页显示一个文件并且可以反向查询

less命令的取名很有意思,故意与more命令打对台,你叫”更多”,我就叫”更少”,就好像你叫黑人牙膏我就叫白人牙膏一样。事实这些字面上是没有意义的。less命令改进的最主要一点,就是相对于more命令来说,less命令支持反向查看功能(按PgUp键)。

type
type命令其实不能算查找命令,它是用来区分某个命令的类型是由shell自带的(内部命令),还是由shell外部的独立二进制文件(或shell等脚本程序)。如果是外部命令,那么当type命令使用-p参数时,输出就会显示该命令的路径,相当于which命令。

type命令的使用实例:

1
2
3
4
5
6
# 系统会提示,cd是shell的自带命令(build-in)
type cd
# 系统会提示,grep是一个外部命令,并显示该命令的路径
type grep
# 加上-p参数后,就相当于which命令
type -p grep

whatis keyword …
在whatis数据库中搜寻指定关键字指令。whatis数据库包含了所有系统指令的简单描述 , 而whatis指令会在此资料库中搜寻符合keyword的指令 , 并把结果显示于standard output(标准输出)。whatis数据库是用makewhatis这个指令建立的 。另外,whatis命令与apropos命令类似,都是基于whatis数据库查找关键字。

whereis 命令/程序名
whereis是一个小巧好用的文件寻找工具,它专门用来寻找可执行的程序、原始程序和使用手册。

1
2
3
4
5
6
7
8
9
10
11
12
语法 :whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
补充说明:whereis指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。
参  数:
 -b  只查找二进制文件。
 -B<目录>  只在设置的目录下查找二进制文件。
 -f  不显示文件名前的路径名称。
 -m  只查找说明文件。
 -M<目录>  只在设置的目录下查找说明文件。
 -s  只查找源代码文件。
 -S<目录>  只在设置的目录下查找原始代码文件。
 -u  查找不包含指定类型的文件。
如果省略参数,则返回所有信息。

比如不知道fdisk命令的存储在哪里,就可以用whereis fdisk命令查找。
如果确定需要查找的是程序,但用whereis又找不到的话,那就表示系统没有安装该程序,如whereis goic。即whereis只能用于命令/程序名的搜索,而不能搜索普通文件。

1
2
whereis which
# output:which: /bin/which /usr/bin/which /usr/share/man/man1/which.1.gz

where命令
与whereis类似,但它不会搜索命令/程序的帮助文件。

1
2
3
4
5
where which
# output:
  which: shell built-in command
  /usr/bin/which
  /bin/which

which
which命令和whatis/whereis命令很相似。

1
2
3
4
5
6
7
8
9
语法:which [文件...]
说明:which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
        也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。而whereis列出所
        有二进制命令和源代码包。
参  数:
 -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
 -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径
 -w  指定输出时栏位的宽度
 -V  显示版本信息

which命令只在$PATH环境变量所设置的查找路径中查找命令。比如:

1
2
3
4
# which只在$PATH路径中查找并只列出第一个(即被执行的那个位置上的命令副本)
which fdisk # /sbin/fdisk
# whereis会查出所有的
whereis fdisk # fdisk: /sbin/fdisk /usr/share/man/man8/fdisk.8.gz

find
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。它的参数选项非常丰富,这也导致了它很难使用,但相信当你了解它,它就会成为你最得力的助手。

find的使用格式如下:

 find <指定目录> <指定条件> <指定动作>
    - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
    - <指定条件>: 所要搜索的文件的特征。
    - <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

使用范例如下:

搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件
find . -name 'my*'
搜索根目录/(含子目录,以下同)中,所有文件名以my*开头的文件并打印
find / -name my* -print
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息
find . -name 'my*' -ls
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录
find . -type f -mmin -10

-print选项是打印输出到终端。它还有其它更复杂的应用。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 根据时间查找:从/usr目录中找出最近3天之内存取过的文件
find /usr -atime 3 –print
# 根据时间查找:从/usr目录中找出最近5天之内修改过的文件
find /usr -ctime 5 –print
 
# 从/doc目录中找出属主是jacky的并且文件名以j开头的所有文件
find /doc -user jacky -name 'j*' –print
 
# 从/doc目录中找出文件名以ja开头或者ma开头的文件
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print
 
# 删除/doc目录中凡是文件名结尾为bak的文件。-exec 选项是执行的意思,rm 是删除命令,{ } 表示文件名,“\;”是规定的命令结尾
find /doc -name '*bak' -exec rm {} \;

如果只知道某个文件的大小,修改日期等特征也可以使用”find”命令查找出来,这和WINDOWS系统中的”搜索”功能是基本相同的。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。

例如有一个Linux文件大小为1,500bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符c表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/-size+10000000c这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的+是表示要求系统只列出大于指定大小的文件,而使用”-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同 “find”命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用find命令的方式是很多的,find命令查找文件只要灵活应用,丝毫不比在WINDOWS中查找能力差。

1
2
3
4
5
6
7
8
find / -amin -10 # 查找在系统中最后10分钟访问的文件 
find / -atime -2 # 查找在系统中最后48小时访问的文件 
find / -empty # 查找在系统中为空的文件或者文件夹 
find / -group cat # 查找在系统中属于groupcat的文件 
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件 
find / -mtime -1 #查找在系统中最后24小时里修改过的文件 
find / -nouser #查找在系统中属于作废用户的文件 
find / -user fred #查找在系统中属于FRED这个用户的文件

下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。

1
2
3
4
5
6
7
8
9
-amin n 查找系统中最后N分钟访问的文件 
-atime n 查找系统中最后n*24小时访问的文件 
-cmin n 查找系统中最后N分钟被改变状态的文件 
-ctime n 查找系统中最后n*24小时被改变状态的文件 
-empty 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹 
-false 查找系统中总是错误的文件 
-fstype type 查找系统中存在于指定文件系统的文件,例如:ext2 . 
-gid n 查找系统中文件数字组 ID 为 n的文件 
-group gname 查找系统中文件属于gnam文件组,并且指定组和ID的文件

find命令的控制选项说明:
find命令也提供给用户一些特有的选项来控制查找***作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。 选项及用途描述:

1
2
3
4
5
6
7
8
-daystart 测试系统从今天开始24小时以内的文件,用法类似-amin 
-depth 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 
-follow 遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询 
-help 显示命令摘要 
-maxdepth levels 在某个层次的目录中按照递减方法查找 
-mount 不在文件系统目录中查找, 用法类似 -xdev. 
-noleaf 禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找 
-version 打印版本数字

使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项, 否则一般情况下find命令将忽略通配符链接方式进行文件查找。

-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录及其子目录中查找一个名叫fred的文件,而不会深入到3级子目录中查找,就可以使用命令:

 find.-maxdepth 2 -namefred

如果fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。如果这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n就很快的能在指定目录中查找成功。

find混合条件查找方式
find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and来把两个查找选项链接起来组合成一个混合的查找方式:

find /tmp -size +10000000c -and -mtime +2

学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示”与”和”或”的关系。在Linux系统的查找命令中一样通用。 还有这样的例子, find / -user fred-or-usergeorge,可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。在find命令中还可以使用”非”的关系来查找文件,如果要在/tmp目录中查找所有不属于panda的文件,使用find /tmp ! -user panda命令就可以解决了。

find查找并显示文件
如果想知道查找到的文件的详细信息和属性,如果采取先查找文件,再使用ls命令来查看文件信息是相当繁琐的,可以把这两个命令结合起来使用:

1
2
3
find/-name"httpd.conf"-ls
# 系统在查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

下面是一些常用的查找文件并显示文件信息的参数和使用方法 :

1
2
3
4
5
6
7
-exec command; 查找并执行命令 
-fprint file 打印文件完整文件名 
-fprint0 file 打印文件完整文件名包括空的文件 
-fprintf file format 打印文件格式 
-ok command; 给用户命令执行***作,根据用户的Y 确认输入执行 
-printf format 打印文件格式 
-ls 打印同种文件格式的文件.

locate 文件名
locate命令是通过文件名搜索文件的工具,它的用法也比较简单。

locate命令其实是”find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有所有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动(cronjob)更新一次updatedb索引数据库,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

如果新安装了软件或者存储了新文件,也要先运行updatedb命令,以生成最新索引库,然后用locate搜索才能反映真实的结果。

1
2
3
4
5
6
7
8
9
10
# 首先运行updatedb建立或更新索引数据库
updatedb
# 要找vsftpd.conf文件都位于哪个位置;
locate my.so
# 搜索etc目录下所有以sh开头的文件
locate /etc/sh
# 搜索用户主目录下,所有以m开头的文件
locate ~/m
# 搜索用户主目录下,所有以m开头的文件,并且忽略大小写
locate -i ~/m

slocate(secure locate)
slocate本身具备一个数据库,里面存放了系统中文档和目录的相关信息。slocate命令使用该数据库查找文档或目录。

1
2
3
4
5
6
语法:slocate [-u][--help][--version][-d <目录>][查找的文档]
参  数:
 -d<目录>或--database=<目录>  指定数据库所在的目录
 -u  更新slocate数据库
 --help  显示帮助
 --version  显示版本信息

apropos keyword …
apropos会搜寻whatis资料库中符合keyword的描述 , 并把结果显示于standard output(终端) 。

grep [-选项] [字串] [文件名]
寻找包含某字串内容的文件的工具。例如,我们想在一个目录的200个文件里面,找出哪一个文件提到”lucky”这个词语:grep lucky *。其他常用的选项还有:

1
2
3
-n 同时列出该词语出现在文章的第几行。
-c 计算一下该字串出现的次数。
-i 比对的时候,不计较大小写的不同。

下面是借助于grep命令写的查找文件内容的工具grep_for:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
 
if [ -z "$1" ]
then
    echo 'Usage: grep_for CONTENT_PATTERN FILENAME_FILTER_PATTERN [OPTION_FOR_GREP]'
    exit 1
fi
 
content=$1
 
if [ -z "$2" ]
then
    shift
else
    flag=`echo $2 | sed 's/^\(.\).*$/\1/'`
    if [ "$flag" == "-" ]
    then
        shift
    else
        filter=$2
        shift
        shift
    fi
fi
 
if [ -z "$filter" ]
then
    find -print0 | grep -zv '\.svn' | xargs -0 grep --color $content $@
else
    find -print0 | grep -zv '\.svn' | grep -z $filter | xargs -0 grep --color $content $@
fi

将该脚本移动到相应的目录就可以使用了,例如:

cd /usr/local/bin
sudo mv ~/workspace/grep_for .
sudo chmod 755 grep_for
 
#usage
grep_for ruby

env查看环境设置
env命令用于设置系统的环境变量,如终端的类型(bash、sh、zsh等)、默认浏览器、用户主目录(Home Directory)等。最常用的就是查询PATH环境变量值了。PATH环境变量控制了在哪些目录中查找在终端输入命令,默认的命令查找顺序是:

1
2
3
4
5
6
/usr/bin
/sbin
/usr/sbin
/usr/local/bin
/usr/X11R6/bin
/root/bin

你可以在~/.bashrc或~/.profile(当前用户)或/etc/profile(全局)目录中重新设置PATH变量,添加自定义查找路径:

1
2
3
export ANDROID=~/mobile-dev/android/tools
export PATH=/usr/local/git/bin:/usr/local/git/libexec/git-core:$ANDROID:$ANT_HOME/bin:$PATH
export MANPATH=/usr/local/git/manual:$MANPATH

也可以使用env命令重新设置PATH变量,如果想在查找命令的路径上增加/usr/local/myshell目录,而把/root/bin去掉:

1
env PATH=/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/shell

<script src="http://w.sharethis.com/button/sharethis.js#publisher=1ebe271a-29f6-4637-aa8c-e3066e1c4ce5&amp;type=wordpress&amp;headerTitle=Share%20This%20Article" type="text/javascript"></script>

Monitor Your Web Site 24/7 - Receive email and SMS alerts anytime your web site goes down

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    最全Linux常用命令大全.pdf

    1.Linux管理文件和目录的命令 2.有关磁盘空间的命令 3.文件备份和压缩命令 4.文件备份和压缩命令 5.管理使用者和设立权限的命令 6 线上查询的命令 7.文件阅读的命令 8.网络操作命令 9.定位、查找文件的命令 10.其他...

    linux下DB2常用命令

    介绍在Linux 环境下常用DB2操作命令,在遇到问题时候,有助于快速查找命令,定位问题

    Linux网络操作系统基础:常用Linux命令.ppt

    目录文件基本操作 test1 test2 test3 test Linux.txt rc.d 实训练习:文件目录定位查找 任务1: 从根目录查找名为shadow的文件,并输出到标准设备(屏幕) 从当前用户工作目录查找名为passwd的文件,并输出到标准设备 ...

    linux上vi编辑器常用命令

    UBUNTU下VI编辑器命令 VI编辑器是LINUX平台下一个一款小巧的...不得其法,所以在每次输入错误时,都按ESC退出,然后在用左移右移命令定位,修改之.在这一点上,我很鄙视UBUNTU,将这么好用的VI在它的平台上弄的如此复杂.

    57个Linux常用命令含参数介绍和使用示例

    掌握Linux常用命令的作用主要体现在以下几个方面: 系统管理:Linux系统中的命令可以用来管理系统资源,如CPU、内存、磁盘空间等,以及各种系统进程。这有助于系统管理员或用户更好地理解和控制系统的运行状态。 ...

    Linux命令大全搜索工具内容包含Linux命令手册详解学习搜集

    linux常用命令大全。Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。Linux命令大全搜索工具是一款专门为Linux用户设计的实用工具,旨在帮助用户快速查找、学习和理解各种Linux命令。该工具包含了...

    常用的Linux命令

    本文档囊括了包括开发或运维人员日常用的日志查看、服务器内存使用情况查看等常用的命令,可帮助你快速的上手linux系统以及在日常工作中迅速定位以及解决Linux服务器上的问题。

    linux常用命令和工具白皮书

    十分棒的学习资源,对于想了解linux系统的人来说,你值得拥有,此工具是帮助你快速解决问题,定位到对应的编程语法

    linux常用命令.docx

    linux下查询容器中的代码文件 在日常定位问题的时候,根据问题日志查看到了对应的错误堆栈信息;当没有对应的代码的时候,可以用本文中的命令查询代码归属的jar,从而分析对应的代码逻辑解决问题

    mplayer常用命令

    mplayer常用命令.mplayer 在slave模式命令测试 测试命令及文件:./mplayer -slave -quiet media_file 1. pause 暂停/取消暂停播放 2. mute mute [value] 切换声音输出静音或将其设置为[value](value&gt;=0) (1 ==...

    附赠一套系统的linux教程:基础应用到服务搭建

    pwd(Print Working Directory的缩写)是一个常用的Linux和Unix命令,用于显示当前工作目录的路径。当前工作目录是你当前正在工作的目录,即你执行命令时所处的目录。下面是关于pwd命令的详细解释: 命令格式: ...

    Linux操作系统知识架构图1.0-高清

    可以用于速查常用 Linux 操作命令、性能工具与指标,一张图定位工作中80%高频问题。3 大体系,22 个模块,一张图搞定 Linux 必备核心技能。 linux操作系统的大纲图,可以系统的了解linux相关知识点。可以用于速查...

    linux的文本编辑器vim

    定位命令 4. 删除命令 5. 复制和剪切 6. 替代和取消 7.搜索与替换 6. 保存与退出 7. 导入命令执行结果. ‘:r ! 命令’ 导入文件。 ‘:r 文件’ 导入该文件到光标所在位置 8. 定义快捷键。 ‘:map 快捷键 触发...

    简单了解Linux性能监控命令free

    linux提供了很多命令来协助我们快速定位到错误,free命令是Linux最常用的命令之一:它可以查看系统的内存状况,包括服务器的总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况。...

    精通LINUX下的C编程(配套光盘)第三部分

    1.3 Linux系统的常用命令 1.4 小结 习题 第2章 Linux下的C语言编程环境 2.1 Linux编程简介 2.2 Linux下的C语言开发环境 2.3 编辑器的使用 2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其...

    精通LINUX下的C编程(配套光盘)第一部分

    1.3 Linux系统的常用命令 1.4 小结 习题 第2章 Linux下的C语言编程环境 2.1 Linux编程简介 2.2 Linux下的C语言开发环境 2.3 编辑器的使用 2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其...

    精通LINUX下的C编程(配套光盘)第二部分

    1.3 Linux系统的常用命令 1.4 小结 习题 第2章 Linux下的C语言编程环境 2.1 Linux编程简介 2.2 Linux下的C语言开发环境 2.3 编辑器的使用 2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其...

    求职有道-linux&sql面试题

    在使用的时候,Linux的常用命令都比较熟悉,比如像基本的cd,pwd,ls这些就不说了。 3.查看日志一般我们会使用 tail 命令追踪查看,实时追踪 使用 tail -f 后跟文件路径。 因为在追踪实时日志的时候,如果前端页面...

    LINUX与UNIX SHELL编程指南(很全)

    1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 ...

    orcale常用命令

    c、显示表结构命令DESCRIBE SQL&gt;DESC 表名 d、SQL*Plus中的编辑命令 显示SQL缓冲区命令 SQL&gt;L 修改SQL命令 首先要将待改正行变为当前行 SQL&gt;n 用CHANGE命令修改内容 SQL&gt;c/旧/新 重新确认是否已正确 SQL&gt;L 使用...

Global site tag (gtag.js) - Google Analytics