`

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实验报告一熟悉15个Linux常用命令.doc

    Linux实验报告一熟悉15个Linux常用命令 Linux操作系统是一种广泛使用的开源操作系统,它提供了许多实用的命令来帮助用户管理和维护系统资源。Linux系统中有许多常用的命令,这些命令可以帮助用户更好地管理和维护...

    Linux系统管理-Linux常用命令.pdf

    本知识点将针对Linux系统中常用的命令进行阐述,包括命令的基本格式、ls、cd、pwd、mkdir和rmdir等基础命令。 1. 命令的基本格式 Linux命令行的基本格式为:“命令名称 [选项] [参数]”。其中,“命令名称”是用户...

    linux 常用命令 操作系统命令 shell概述

    Linux 常用命令和操作系统命令概述 Linux 操作系统的基本命令是用户与操作系统内核之间的桥梁。Linux shell 是一种特殊的程序,它是用户与操作系统内核之间的桥梁。当用户登录成功,系统会启动一个交互式的 shell ...

    Linux常用命令讲解

    本文将对Linux系统中常用命令进行详细讲解,包括安装、基础使用、目录结构、文件管理、用户管理、组权限管理、搜索查找、压缩解压、时间日期操作、远程登录与文件传输、常见问题解决方法等内容。 首先,Linux安装篇...

    linux常用命令整理,很棒!

    ### Linux常用命令详解 #### 一、Linux设备与文件系统 在Linux系统中,设备管理和文件系统的理解至关重要。下面将详细介绍Linux中的设备管理以及文件系统的结构。 - **设备标识** - `/dev/xxyN` - `xx`:表示...

    常用的Linux命令大全

    本文将详细介绍一些常用的Linux命令,帮助你更好地管理和操作Linux系统。 1. **pwd** 命令 `pwd` 命令用于显示当前工作目录,这对于了解当前所在的位置非常有用。当你在复杂的目录结构中工作时,此命令可以帮助你...

    什么是linux常用命令大全以及学习linux常用命令大全的意义

    ### 什么是Linux常用命令大全以及学习Linux常用命令大全的意义 #### 一、Linux常用命令大全简介 Linux作为一款广泛使用的操作系统,在服务器管理和开发环境中占据着举足轻重的地位。为了更好地利用Linux的强大功能...

    linux 常用命令 基本命令 操作系统命令 命令

    Linux 常用命令基础知识点总结 Linux 常用命令是 Linux 操作系统的一大优势,命令行操作的运行不需要占用过多的系统资源,功能也十分强大,几乎所有的 Linux 操作都可以通过命令完成。掌握 Linux 命令操作也是领会 ...

    Linux常用命令大全是什么以及学习Linux常用命令大全的意义

    ### Linux常用命令大全详解及其学习意义 #### 一、Linux常用命令大全概述 Linux作为一款开源的操作系统,因其稳定性、安全性和灵活性而受到广大用户的喜爱。对于Linux用户来说,掌握一系列常用的命令是非常重要的...

    linux下Vi编辑器常用命令

    ### Linux 下 Vi 编辑器常用命令详解 #### 一、进入 vi 的命令 1. **vi filename**:此命令用于打开或编辑一个名为 `filename` 的文件,并且默认会进入命令模式。 2. **vi +n filename**:通过这个命令可以打开文件...

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

    【Linux网络操作系统基础:常用Linux命令】 Linux是一个广泛使用的开源操作系统,它的命令行界面提供了高效且灵活的系统管理工具。本章将深入讲解Linux的基础知识,特别是常用的命令,包括文件和目录的操作,以及...

    linux 常用60个命令

    ### Linux常用60个命令详解 #### 一、安装和登录命令 ##### 1. login **作用**:登录系统,适用于所有用户。 **格式**:`login [name] [-p] [-h 主机名称]` **主要参数**: - `-p`:保持当前的环境参数。 - `-h`:...

    Linux常用命令全集

    它包含了三本电子书,分别是“Linux常用命令讲解第一部分.pdf”、“Linux常用命令讲解第二部分.pdf”以及“Linux常用命令全集.CHM”。 首先,"Linux常用命令讲解第一部分.pdf"和"Linux常用命令讲解第二部分.pdf"很...

    Linux系统常用命令快速入门.pdf

    ### Linux系统常用命令快速入门详解 #### 一、引言 在Linux系统中,命令行是用户与系统交互的重要方式之一。对于初学者而言,掌握一些常用的Linux命令是非常必要的。本文将详细介绍《Linux系统常用命令快速入门》...

    深度linux 常用命令

    下面将详细介绍深度Linux中的一些常用命令,包括系统信息查看、软件包管理、自定义Deepin命令以及Vi编辑器的基本使用方法。 首先,我们来看如何查看系统的信息。系统命令可以帮助用户获取当前操作系统的版本、内核...

    linux常用100命令.doc

    Linux操作系统是许多IT专业人士的基础工具,对于初学者来说,掌握常用的命令是入门的关键。这篇文档列举了100个常见的Linux命令,旨在帮助初学者快速上手并熟悉这些命令,从而激发他们对Linux的兴趣和热爱。 1. `ls...

    Centos7 linux 常用命令

    ### CentOS 7 Linux 常用命令详解 #### 文件与目录操作 1. **进入目录:** - `cd /home`:切换到 `/home` 目录。 - `cd ..`:返回上一级目录。 - `cd ../..`:返回上两级目录。 - `cd -`:返回到上次所在的...

    什么是linux常用命令大全以及学习linux常用命令大全的意义是什么

    ### Linux常用命令大全及其学习意义 #### Linux常用命令概述 Linux是一种开源的操作系统,它以其稳定性和安全性而闻名。在Linux环境下,用户可以通过图形界面进行操作,但更常见且高效的方式是通过命令行来实现对...

    常用 linux 命令手册

    本文将深入探讨“常用Linux命令手册”中的关键知识点,帮助你成为Linux达人。 1. 文件与目录操作: - `ls`:列出目录内容,`-l`选项显示详细信息。 - `cd`:改变当前工作目录,如`cd /home/user`进入用户主目录。...

    Linux常用命令和知识点

    以下是一些关于Linux常用命令和知识点的详细说明: 1. 绝对路径与相对路径: - 绝对路径:从根目录"/"开始,逐级列出到达目标文件或目录的所有路径。它不受当前工作目录的影响,提供了准确的文件定位。 - 相对...

Global site tag (gtag.js) - Google Analytics