Linux基础-02:Linux目录操作命令

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:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享

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

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

热门相关:我的阁楼通异界   纨绔仙医   极品仙医在都市   剑道邪尊Ⅱ   江太太恃宠而骄