zoukankan      html  css  js  c++  java
  • Linux操作命令(四)

    本次实验将介绍 Linux 命令中 which、whereis、locate 命令的用法。
    •  which
    • whereis
    • locate

    1.which

    which命令的作用是,在PATH变量指定的路径中搜索可执行文件的所在唔知。它一般用来确认系统中是否安装了指定的软件。

    【命令格式】:which 可执行文件名称
    【常用参数】:
    【常用范例】:
    1.确认是否安装了gcc
    which gcc

    2.查看cd命令的位置路径

    which cd

    从上面的显示信息可以看到在实验楼的系统中 cd 是一个 shell 函数。

    再来在我本地 linux 系统上执行 which cd 命令,显示的结果如下:

     

    显示在 PATH 变量指定的路径下没有 cd 命令。为什么显示没有呢?这是因为 cd 是 shell 内建命令,而 which 默认是找 PATH 内所指定的目录,内建命令不在其指定的目录中,所以当然一定找不到。

    那么就有个问题,为什么实验楼环境中 cd 是一个 shell 函数,而其他 linux 环境中 cd 是内建命令呢?这跟所使用的 bash 有关。

     

      

    echo $SHELL 命令查看当前使用的 shell。
    

      

    补充知识

    到底什么是命令?

    命令可以是下面四种形式之一:

    1. 是一个可执行程序,就像我们所看到的位于目录/usr/bin 中的文件一样。 属于这一类的程序,可以编译成二进制文件,诸如用 C 和 C++语言写成的程序, 也可以是由脚本语言写成的程序,比如说 shell,perl,python,ruby,等等。

    2. 是一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令 (builtins)。例如,上面我本地环境中的 cd 命令,就是一个 shell 内部命令。

    3. 是一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。 比如上面讲到的 cd 命令,在实验楼环境中就是一个 shell 函数。

    4. 是一个命令别名。我们可以定义自己的命令,建立在其它命令之上。


    3.whereis

    whereis命令主要用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。whereis命令还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

    whereis命令查找速度非常快,因为它根本不是在磁盘中漫无目的乱找。而是在一个数据库中(var/lib/mlocatr)查询。这个数据库是Linux系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行updatedb命令更新一次。也正是因为这个数据库要每天才更新一次,就会使得whereis命令的搜索结果有时候会不准确,比如刚刚添加的文件可能搜不到。

    【命令格式】:whereis [选项] 文件
    【常用参数】:
    -b:定位可执行文件
    
    -m:定位帮助文件
    
    -s:定位源代码文件
    
    -u:默认搜索路径下除可执行文件、源代码文件、帮助文件以外的其他文件
    
    -B:指定搜索可执行文件的路径
    
    -M;指定搜索帮助文件的路径
    
    -S:指定搜索源代码文件的路径
    【常用范例】:
    1.搜索gcc可执行文件的路径
    whereis -b gcc

    2.搜索gcc源代码的路径

    whereis -s gcc

    4.locate

    locate和whereis类似。且它们使用的是相同的数据库。但whereis命令只能搜索可执行文件、联机帮助文件、源代码文件,如果要获得更全面的搜索结果,可以使用locate命令。

    locate命令使用了十分复杂的匹配语法,可以使特殊字元(如'*'和'?')来指定需要查找的样本。

    【命令格式】:locate [选项] [搜索字符串]
    【常用参数】:
    -q:安静模式,不会显示任何错误讯息
    -n:至多显示n个输出
    -r:使用正规表达式做寻找的条件
    -V:显示版本讯息
    【常用范例】:
    1.搜索etc目录下所有以sh开头的文件
     
    locate /etc/sh

    注意在实验楼环境中一开始执行这个命令会报错:locate 无法执行 stat() ‘/var/lib/mlocate/mlocate.db’:没有那个文件或目录。

    解决办法是执行sudo updatedb命令。

    2.搜索etc目录下文件名包含lou的文件

    locate /etc/*lou*
  • 相关阅读:
    逐个图片保存成视频
    GitHub搜索
    用cmd运行jmeter并生成报告
    jmeter-json提取器提取的内容含”引号
    jmeter-JSON提取器
    git 上传Access denied解决方法
    Jmeter鲜为人知的jsonpath用法
    selenium 安装流程、下载chromedriver
    jmeter-抓取数据库数据,循环请求1000次(变量嵌套变量)
    jmeter—获取当前时间(年、月、日),往前/往后n天
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10140968.html
Copyright © 2011-2022 走看看