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. KingbaseESV8R6手工vacuum带有全局分区索引的分区表的影响

    背景 客户现场有这样一个案例,有张500个分区的大表,每个分区有20万条记录.有update 非常频繁,经常会触发autovacuum.由于表很大,autovacuum 耗时很长.据现场同事反馈,手工 ...

  2. SQL调优系列--数据严重倾斜的连接优化

    背景 对于两个大表关联的场景,如果过滤条件的列值,存在高度倾斜,可以考虑根据反向滤值,进行过滤操作,减少连接的CPU时间. 数据准备 -- 状态表 tp01_state 记录 大表tp01 记录的多种 ...

  3. Selenium 八大元素定位方式

    UI自动化测本质无非就是: 定位元素 -> 操作元素 -> 模拟页面动作 -> 断言结果 -> 生成测试报告. 所以我们做UI自动化的第一步就是定位元素,如果连元素都定位不到就 ...

  4. Python flask框架 request.json和request.form的区别

    一.fetch请求时,request.json能获取到数据,request.form获取不到数据 1 var data = {'name':'test'}; 2 3 fetch('http://loc ...

  5. #轮廓线dp#HDU 1400 Mondriaan's Dream

    题目传送门 分析 状压dp会TLE,考虑用轮廓线dp, 设 \(dp[i][j][S]\) 表示现在处理到 \((i,j)\) 这个位置轮廓线上状态为 \(S\) 的情况 二进制位为1表示左边或者上方 ...

  6. MySQL 8.0字符集校正

    MySQL升级为8.0版本时,之前版本的字符集往往是不同的,需要校正. 执行下面的三个SQL语句的查询结果,可以从库.表.列三个层面对字符集进行校正. 库 select concat('alter d ...

  7. 《苏丹的复仇》携手华为HMS生态,实现用户、收入双增长

    中国出海中东和北非地区的策略类手游<苏丹的复仇>(Revenge of Sultans,ROS)和华为HMS生态深度合作,为本地用户带来创新游戏体验,成为当地广受欢迎的游戏之一,下载量居应 ...

  8. R语言学习1:基本数据类型,文件读取

    本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...

  9. SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算

    大气污染问题既是局部.当地的,也是区域的,甚至是全球的.本地的污染物排放除了对当地造成严重影响外,同时还会在动力输送作用下,极大地影响下风向地区的大气环境状况.数值模式模拟是分析大气污染物时空分布和成 ...

  10. HarmonyOS数据管理与应用数据持久化(二)

    通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格.员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同 ...