前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oeasy教您玩转linux010107那啥在哪 whereis

oeasy教您玩转linux010107那啥在哪 whereis

原创
作者头像
oeasy
修改2020-08-31 10:02:24
9750
修改2020-08-31 10:02:24
举报

回忆上次内容 😌

上次讲了 ls 的参数 (arguement) 和选项 (option) 的设置。

现在我们要制作这样一个列表:🗒
  • 对于 /proc 路径进行列表
  • 对子路径递归列表
  • 显示隐藏文件
  • 显示详细信息
  • 其中容量使用人们熟知的单位

大家忘记了吗?!!😱

没关系,我们可以查手册,📕 那么做完了之后可以思考,ls 到底在哪?🤔

ls 在哪?🤔

想要知道 ls 在哪就得用新命令 whereis,命令的参数是 ls,综合起来就是:

代码语言:javascript
复制
whereis ls

我们可以得到 ls 两个硬盘位置:

代码语言:javascript
复制
  /bin/ls
  /usr/share/man/man1/ls.1.gz
为什么 ls 在硬盘里?🤔
  • ls 文件最开始在 /bin 这个位置
  • 当我在命令行敲击之后 ls 回车之后
  • 操作系统要求运行 ls 程序
  • 操作系统分配内存空间给 ls
  • 操作系统把 ls 从硬盘加载到内存中
  • 操作系统分配 cpu 资源去执行程序
  • 最终把 ls 的结果输出到标准输出流(屏幕)上

为什么 ls 命令对应两个位置呢 🤔

我们可以对 whereis 发出询问:

代码语言:javascript
复制
whatis whereis

whereis 可以帮我们定位命令的位置

但是 whereis 描述太简单了,我们可以查询 whereis 的手册 man:📕

代码语言:javascript
复制
man whereis

我们可以查询到 whereis 的具体内容:📕

Image text
Image text

试试选项的功能

代码语言:javascript
复制
whereis -b ls
  • b 的意思是 binary 二进制
  • 查找 whereis 二进制
  • 二进制文件在/bin 里
代码语言:javascript
复制
whereis -m
  • m 的意思是 manual 文档
  • 查找 whereis 的文档
  • 文档在/usr/share/man 里面

总结来说:whereis -b ls 是二进制命令,whereis -m 另一个是帮助手册。

那 ls 的源文件在哪呢?这有点复杂... 🧐

得到 ls 源文件

  • dpkg -S /bin/ls
    • dpkg 是 Debian Package 是 Debian 的包管理命令
    • -S 是在已经安装的包里面查找 search
    • /bin/ls 是具体文件的位置
    • 得到结果是 coreutils(核心应用)
  • 设置源
    1. sudo vi /etc/apt/sources.txt
    2. 打开源的配置文件
    3. sudo 是使用管理员权限
      • vi 是文本编辑器
      • /etc/apt/sources.txt 是源的配置文件
    4. 直接输入 G(直接到最后一行 Ground)
      • 注意这个时候左下角是空白状态
    5. 直接输入 o(在当前行后面添加一行)
      • 注意左下角变成了 Insert(插入状态)
    6. 将下面粘贴到最后一行
    7. 摁下 esc
      • 注意左下角不再是 Insert(插入状态), 而是退回到了空白
    8. 依次摁下
      • :
      • w
      • q
      • 回车
      • 保存并退出 vi
  • 用 apt 下载源代码
    1. apt 是高级包管理的命令
    2. 运行 sudo apt update(更新源)
    3. sudo apt source coreutils(获得源代码)
    4. 在当前文件夹下找到 coreutilsXXX 文件夹
    5. 进入 src 源文件文件夹 (source)
    6. ls ls.*
    7. 找到了 ls.c 文件 (ls 的 c 语言源文件)

思考 🤔

我们真的可以获得 ls 源代码,这太棒了!👊 可是如果有多个版本的命令比如:

  • java8
  • java13

那我到底用的是那个版本的 java 呢?我们下次再说。 👋

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回忆上次内容 😌
    • 现在我们要制作这样一个列表:🗒
    • ls 在哪?🤔
      • 为什么 ls 在硬盘里?🤔
        • 为什么 ls 命令对应两个位置呢 🤔
          • 试试选项的功能
            • 得到 ls 源文件
              • 思考 🤔
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档