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列分别是什么含义?
- 第一列:权限
具体权限的含义将在4.5节中讲解。
- 第二列:引用计数。
文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
- 第三列:所有者,也就是这个文件属于哪个用户。
默认所有者是文件的建立用户
- 第四列:所属组。
默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
- 第五列:大小。
默认单位是字节。
- 第六列:文件修改时间。
文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
- 第七列:文件名。
例子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:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!