Linux中目前可以识别的命令有上万条,如果没有分类,那么学习起来一定痛苦不堪。

所以我们把命令分门别类,主要是为了方便学习和记忆。

下面我们先来学习最为常用的和目录相关的操作命令

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软

2.1 ls命令

ls是最常见的目录操作命令,主要作用是显示目录下的内容。

这个命令的基本信息如下:

  • 命令名称:ls。
  • 英文原意:list。
  • 所在路径:/bin/ls。
  • 执行权限:所有用户。
  • 功能描述:显示目录下的内容。

1、命令格式

[root@localhost ~]#ls [选项] [文件名或目录名]
选项:
-a: 显示所有文件
--color=when: 支持颜色输出,when的值默认是always(总显示颜色),也可以是
never(从不显示颜色)和auto(自动)
-d: 显示目录信息,而不是目录下的文件
-h: 人性化显示,按照我们习惯的单位显示文件大小
-i: 显示文件的i节点号
-l: 长格式显示

学习命令,主要学习的是命令选项,但是每个命令的选项又非常多,比如ls命令就支持五六十个选项,我们不可能全部记住,所以我们只需要记住最为常用的选项,即可满足我们日常操作使用。

如果日常中有一些特殊的选项需要使用的时候,我们直接查询命令手册或百度即可,因为我们这毕竟不是考试。

2、常见用法

例子1:“-a”选项

-a选项中的a是all的意思,也就是显示隐藏文件。例如:

[root@node01 ~]# ls
anaconda-ks.cfg etc install.sh local src usr [root@node01 ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cache .cshrc .erlang.cookie etc install.sh local .oracle_jre_usage .pip .pki .rediscli_history src .tcshrc usr .viminfo

可以看到,加入“-a”选项后,显示出来的文件明显变多了

而多出来的这些文件都有一个共同的特性,就是以“.”开头。在Linux中以“.”开头的文件是隐藏文件,只有通过“-a”选项才能查看

例子2:“-l”选项

[root@node01 ~]# ls -l
total 40
-rw-------. 1 root root 1217 Mar 14 2020 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Oct 25 22:01 etc
-rw-r--r-- 1 root root 35515 Jan 19 14:15 install.sh
drwxr-xr-x 2 root root 6 Oct 25 21:31 local
drwxr-xr-x 3 root root 18 Oct 25 21:32 src
drwxr-xr-x 2 root root 6 Oct 25 21:31 usr

我们知道“-l”选项用于显示文件的详细信息,

那么“-l”选项显示的这7列分别是什么含义?

  1. 第一列:权限

具体权限的含义将在4.5节中讲解。

  1. 第二列:引用计数。

文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。

  1. 第三列:所有者,也就是这个文件属于哪个用户。

默认所有者是文件的建立用户

  1. 第四列:所属组。

默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。

  1. 第五列:大小。

默认单位是字节。

  1. 第六列:文件修改时间。

文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。

  1. 第七列:文件名。

例子3:“-d”选项

如果我们想查看某个目录的详细信息,例如:

[root@node01 ~]# ls -l /root
total 40
-rw-------. 1 root root 1217 Mar 14 2020 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Oct 25 22:01 etc
-rw-r--r-- 1 root root 35515 Jan 19 14:15 install.sh
drwxr-xr-x 2 root root 6 Oct 25 21:31 local
drwxr-xr-x 3 root root 18 Oct 25 21:32 src
drwxr-xr-x 2 root root 6 Oct 25 21:31 usr

这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息

如果我们想要查看目录本身的信息,那么该怎么办呢?

那就需要在-l选项后面加上“-d”选项

例如:

[root@node01 ~]# ls -ld /root
dr-xr-x---. 10 root root 4096 Apr 14 08:37 /root

例子4:“-h”选项

“ls -l”显示的文件大小是字节,例如:

[root@node01 ~]# ls -l
total 40
-rw-------. 1 root root 1217 Mar 14 2020 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Oct 25 22:01 etc
-rw-r--r-- 1 root root 35515 Jan 19 14:15 install.sh
drwxr-xr-x 2 root root 6 Oct 25 21:31 local
drwxr-xr-x 3 root root 18 Oct 25 21:32 src
drwxr-xr-x 2 root root 6 Oct 25 21:31 usr

比如-rw-------. 1 root root 1217 Mar 14 2020 anaconda-ks.cfg 这一行中的1217就是文件大小(单位是字节)

但是如果我们想要以习惯的是千字节(KB)或兆字节(MB)显示,该怎么办呢?

答案就是使用“-h”选项,它就是按照人们习惯的单位显示文件大小的,例如:

[root@node01 ~]# ls -lh
total 40K
-rw-------. 1 root root 1.2K Mar 14 2020 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Oct 25 22:01 etc
-rw-r--r-- 1 root root 35K Jan 19 14:15 install.sh
drwxr-xr-x 2 root root 6 Oct 25 21:31 local
drwxr-xr-x 3 root root 18 Oct 25 21:32 src
drwxr-xr-x 2 root root 6 Oct 25 21:31 usr

可以看到显示的文件大小都用KB单位显示了

例子5:“-i”选项

每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的,例如:

[root@node01 ~]# ls -i
67144898 anaconda-ks.cfg 2050465 etc 67523282 install.sh 100895 local 34900991 src 102696438 usr

从理论上来说,每个文件的inode号都是不一样的,当然也有例外(如硬链接)

2.2 cd 命令

cd是切换所在目录的命令,这个命令的基本信息如下:

  • 命令名称:cd
  • 英文原意:change directory
  • 所在路径:Shell内置命令
  • 执行权限:所有用户
  • 功能描述:切换所在目录

知识拓展:

Linux的命令按照来源方式分为两种:Shell内置命令和外部命令

1、Shell内置命令,就是Shell自带的命令,这些命令是没有执行文件的;

2、外部命令就是由程序员单独开发的,是外来命令,所以会有命令的执行文件。

Linux中的绝大多数命令是外部命令,而cd命令却是一个典型的Shell内置命令,所以cd命令没有执行文件所在路径

1、命令格式

[root@node01 ~]# cd [目录名]

cd命令是一个非常简单的命令,仅有的两个选项-P和-L的作用非常有限,也很少使用。

-P (大写)是指如果切换的目录是软链接目录,则进入其原始的物理目录,而不是进入软链接目录;

-L(大写)是指如果切换的目录是软链接目录,则直接进入软链接目录。

2、常见用法

例子1:基本用法

cd命令切换目录只需在命令后加目录名称即可。例如:

[root@node01 ~]# cd /usr/local/
[root@node01 local]#

通过命令提示符,我们可以确定当前所在目录已经切换。

例子2:简化用法

cd命令可以识别一些特殊符号,用于快速切换所在目录,这些符号如表4-1所示

特殊符号 作用
~ 代表用户的家目录
- 代表上次所在目录
. 代表当前目录
.. 代表上级目录

例如快速切换回用户所在的家目录:

[root@node01 local]# cd ~
[root@node01 ~]#

补充:cd命令直接按回车键也是快速切换到家目录

例如:

[root@node01 local]# cd
[root@node01 ~]#

下面我们来试试“cd -”命令

#进入/usr/local/
[root@node01 ~]# cd /usr/local/
#回到上次所在目录
[root@node01 local]# cd -
/root
[root@node01 ~]#

再来试试“.”和“..”

[root@node01 /]# cd /usr/local/
#进入上级目录
[root@node01 local]# cd ..
#local的上一级目录是usr
[root@node01 usr]#
[root@node01 usr]# pwd
/usr
[root@node01 usr]# cd .
[root@node01 usr]# pwd
/usr
[root@node01 usr]#

3、绝对路径&相对路径

cd命令本身不难,但是这里有两个非常重要的概念,初学者一定要掌握,那就是绝对路径和相对路径。

初学者由于对字符界面不熟悉,所以有大量的错误都是因为对这两个路径没有搞明白。

比如进错了目录、打开不了文件、打开的文件和系统文件不一致等。

所以我们先来区分一下这两个路径。

Linux的路径中是有绝对路径的,那是因为Linux有最高目录,也就是根目录。如果路径是从根目录开始,一级一级指定的,那使用的就是绝对路径。例如:

[root@node01 usr]# cd /usr/local/src/
[root@node01 src]# cd /etc/
[root@node01 etc]#

这些切换目录的方法使用的就是绝对路径。

所谓相对路径,就是只从当前所在目录开始,切换目录。例如:

#切换到根目录下
[root@node01 etc]# cd /
#切换到当前目录(根目录)下的etc目录下
[root@node01 /]# cd etc/
#切换到etc目录下的etc目录下,发现报错了,不存在那个文件或目录
[root@node01 etc]# cd etc/
-bash: cd: etc/: No such file or directory
[root@node01 etc]#

同样的命令,因为当前所在目录改变了,所以就算是同一个命令也会报错,除非在/etc目录下还有一个etc目录

所以,虽然绝对路径输入更加烦琐,但是更准确,报错的可能性也更小。对初学者而言,超哥还是建议大家使用绝对路径。本书为了使命令更容易理解,也会尽量使用绝对路径。

留个题目给大家:

假如我当前在root用户的家目录中,例如:

[root@node01 etc]# cd ~
[root@node01 ~]#

那么,该如何使用相对路径进入/usr/local/src/目录中呢?

欢迎在评论区留下你的答案

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软

2.3 mkdir命令

mkdir是创建目录的命令,其基本信息如下:

  • 命令名称:mkdir
  • 英文原意:make directories
  • 所在路径:/bin/mkdir
  • 执行权限:所有用户
  • 功能描述:创建空目录

1、命令格式

    [root@node01 ~]# mkdir [选项] 目录名
选项:
-p: 递归建立所需目录

mkdir也是一个非常简单的命令,其主要作用就是新建一个空目录

2、常见用法

例子1:建立目录

[root@node01 ~]# mkdir xiaobei
[root@node01 ~]# ls
anaconda-ks.cfg etc install.sh local src usr xiaobei

我们建立一个名为xiaobei的目录,通过ls命令可以查看到这个目录已经建立

注意:我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下

例子2:递归建立目录

如果想建立一串空目录,可以吗?

答案是不行

例如:

[root@node01 ~]# mkdir xiaobei/test/demo
mkdir: cannot create directory ‘xiaobei/test/demo’: No such file or directory
[root@node01 ~]#

我们发现报错了,这是因为/test目录是不存在的,mkdir默认只能在已经存在的目录中建立新目录。

所以如果我们需要建立一系列的新目录,则需要加入“-p”选项,递归建立才可以。例如:

[root@node01 ~]# mkdir -p xiaobei/test/demo
[root@node01 ~]# cd xiaobei/test/demo
[root@node01 demo]#

所谓的递归建立,就是一级一级地建立目录

2.4 rmdir命令

有建立目录的命令,那一定会有删除目录的命令rmdir,其基本信息如下:

  • 命令名称:rmdir
  • 英文原意:remove empty directories
  • 所在路径:/bin/rmdir
  • 执行权限:所有用户
  • 功能描述:删除空目录

1、命令格式

    [root@node01 ~]# rmdir [选项] 目录名
选项:
-p: 递归删除目录

2、常见用法

[root@node01 ~]# rmdir xiaobei
#报错了,那是因为rmdir命令默认也是不支持递归删除的
rmdir: failed to remove ‘xiaobei’: Directory not empty
[root@node01 ~]# rmdir xiaobei/test/demo
[root@node01 ~]# cd xiaobei/test/demo
-bash: cd: xiaobei/test/demo: No such file or directory
[root@node01 ~]#

发现上述demo目录已经被删除了

既然可以递归建立目录,当然也可以递归删除目录。例如:

[root@node01 ~]# rmdir -p xiaobei/test/
[root@node01 ~]# cd xiaobei
-bash: cd: xiaobei: No such file or directory
[root@node01 ~]# ll
total 40
-rw-------. 1 root root 1217 Mar 14 2020 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Oct 25 22:01 etc
-rw-r--r-- 1 root root 35515 Jan 19 14:15 install.sh
drwxr-xr-x 2 root root 6 Oct 25 21:31 local
drwxr-xr-x 3 root root 18 Oct 25 21:32 src
drwxr-xr-x 2 root root 6 Oct 25 21:31 usr
[root@node01 ~]#

可以看到xiaobei这个目录已经被我们删除了

但rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。例如:

#建立测试目录
[root@node01 ~]# mkdir test
#在测试目录下建立两个文件
[root@node01 ~]# touch test/test1
[root@node01 ~]# touch test/test2
#删除测试目录
[root@node01 ~]# rmdir test/
#删除失败
rmdir: failed to remove ‘test/’: Directory not empty
[root@node01 ~]#

这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用rm命令

2.5 tree命令

tree命令以树形结构显示目录下的文件,其基本信息如下:

  • 命令名称:tree
  • 英文原意:list contents of directories in a tree-like format
  • 所在路径:/usr/bin/tree
  • 执行权限:所有用户
  • 功能描述:显示目录树

tree命令非常简单,用法也比较单一,就是显示目录树,例如:

[root@node01 ~]# tree /etc/
#有的同学可能遇到tree命令不存在的报错,可以执行yum -y install tree指令后再执行
-bash: tree: command not found
    [root@node01 ~]# tree  /etc/
/etc/
├── abrt
│ ├── abrt-action-save-package-data.conf
│ ├── abrt.conf
│ ├── gpg_keys
│ └── plugins
│ ├── CCpp.conf
│ └── python.conf
├── acpi
│ ├── actions
│ │ └── power.sh
│ └── events
│ ├── power.conf
│ └── video.conf
…省略部分内容…

总结

本章内容主要带大家了解Linux中最常用的与目录相关的操作命令和常用用法。通过学习这些命令,我们可以更好地了解和管理Linux系统中的文件和目录。强烈建议大家自己亲自上手操作下这些命令,感受一下linux系统的魅力。

最后说一句(求关注,求赞,你的鼓励是我创作最大的动力)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注我会非常感激!

Linux基础-02:Linux目录操作命令的更多相关文章

  1. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  2. SLAM+语音机器人DIY系列:(一)Linux基础——1.Linux简介

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  3. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  4. 【转】Linux基础与Linux下C语言编程基础

    原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...

  5. Linux基础 -02

    3.4 虚拟机快照技术 什么是快照 3.5 虚拟机克隆技术 什么是克隆 4.Bash Shell快速入门 4.1 什么是Bash Shell bash shell是一个命令解释器,主要负责用户程序与内 ...

  6. Linux基础系列—Linux内核源码目录结构

    /** ****************************************************************************** * @author    暴走的小 ...

  7. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  8. 【Linux基础】Linux常用命令汇总

    3-1文件目录操作命令(cd pwd mkdir rmdir rm) 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc: 相对路径:相对于目前路径的 ...

  9. Linux基础-兄弟连Linux

    Linux基础增强与辅助知识梳理... ------------ Linux学习基础需要学习那些知识 学习Linux对于程序开发的好处 怎样开始学习Linux Linux的学习方法参考 Linux系统 ...

  10. Linux基础:Linux环境下安装JDK

    title: Linux基础:JDK的及环境变量配置 author: Enjoyitlife.top date: 2019-10-09 20:50:36 tags: Linux JDK categor ...

随机推荐

  1. #线性基,点分治#洛谷 3292 [SCOI2016]幸运数字

    题目 分析 题目就是将\(x\)到\(y\)路径上的线性基合并求解, 这里用的是点分治,每次换根到重心的时候维护前缀线性基, 查询的时候如果属于不同的子树就能询问答案,记得\(x=y\)要特判 代码 ...

  2. #Splay#U137476 序列

    题目 给定长度为\(n\)的序列\(Ai\) ,我们将按照如下操作给\(Ai\) 排序, 先找到编号最小的所在位置\(x1\) ,将\([1,x1]\) 翻转, 再找到编号第二小的所在位置\(x2\) ...

  3. Node 项目通过 .npmrc 文件指定依赖安装源

    背景 npm 命令运行时,往往通过命令行指定相关配置,最常用的便是使用 --registry 来指定依赖的安装源. npm install --registry=https://registry.np ...

  4. 体验Semantic Kernel图片内容识别

    前言 前几日在浏览devblogs.microsoft.com的时候,看到了一篇名为Image to Text with Semantic Kernel and HuggingFace的文章.这篇文章 ...

  5. OpenHarmony社区运营报告(2023年6月)

      本月快讯 • 6月12日,以"OpenHarmony共建开放,共享未来"为主题的2023开放原子全球开源峰会OpenAtom OpenHarmony(以下简称"Ope ...

  6. DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧

    遍历是指通过或遍历节点树 遍历节点树 通常,您想要循环一个 XML 文档,例如:当您想要提取每个元素的值时. 这被称为"遍历节点树". 下面的示例循环遍历所有 <book&g ...

  7. Qt获取电脑有几个网卡,并获取对应的IPV4

    标题:Qt获取电脑网卡对应的ip | Qt计算电脑有几个网卡 | Qt获取网卡ip信息 | Qt判断获取到的ip是否是IPV4   demo流程: 1.点击搜索网卡按钮,搜索电脑所有的网卡,将网卡名称 ...

  8. 学习Source Generators之打包成Nuget使用

    前面我们简单的实现了一个从swagger生成实体类的Generator,在实际使用中,通过nuget包引用使用会更方便,那么本篇文章将介绍如何将Generator打包成Nuget来使用. 打包Nuge ...

  9. 鸿蒙HarmonyOS实战-ArkUI组件(Menu)

    一.Menu组件 Menu组件是一种常见的用户界面(UI)控件,用于在移动应用程序中显示可选项列表.它通常由一系列链接或按钮组成,以帮助用户导航和选择所需的操作.Menu组件可以在水平或垂直方向上呈现 ...

  10. HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用

    原生智能是HarmonyOS NEXT的核心亮点之一,依托HarmonyOS SDK丰富全面的开放能力,开发者只需通过几行代码,即可快速实现AI功能.新浪新闻作为鸿蒙原生应用开发的先行者之一,从有声资 ...