翼度科技»论坛 云主机 LINUX 查看内容

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

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
Linux中目前可以识别的命令有上万条,如果没有分类,那么学习起来一定痛苦不堪。
所以我们把命令分门别类,主要是为了方便学习和记忆。
下面我们先来学习最为常用的和目录相关的操作命令
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
2.1 ls命令

ls是最常见的目录操作命令,主要作用是显示目录下的内容。
这个命令的基本信息如下:

  • 命令名称:ls。
  • 英文原意:list。
  • 所在路径:/bin/ls。
  • 执行权限:所有用户。
  • 功能描述:显示目录下的内容。
1、命令格式
  1. [root@localhost ~]#ls [选项] [文件名或目录名]
  2. 选项:
  3.     -a:             显示所有文件
  4.     --color=when:   支持颜色输出,when的值默认是always(总显示颜色),也可以是
  5.                     never(从不显示颜色)和auto(自动)
  6.     -d:            显示目录信息,而不是目录下的文件
  7.     -h:            人性化显示,按照我们习惯的单位显示文件大小
  8.     -i:            显示文件的i节点号
  9.     -l:            长格式显示
复制代码
学习命令,主要学习的是命令选项,但是每个命令的选项又非常多,比如ls命令就支持五六十个选项,我们不可能全部记住,所以我们只需要记住最为常用的选项,即可满足我们日常操作使用。
如果日常中有一些特殊的选项需要使用的时候,我们直接查询命令手册或百度即可,因为我们这毕竟不是考试。
2、常见用法

例子1:“-a”选项

-a选项中的a是all的意思,也就是显示隐藏文件。例如:
  1. [root@node01 ~]# ls
  2. anaconda-ks.cfg  etc  install.sh  local  src  usr
  3. [root@node01 ~]# ls -a
  4. .  ..  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”选项
  1. [root@node01 ~]# ls -l
  2. total 40
  3. -rw-------. 1 root root  1217 Mar 14  2020 anaconda-ks.cfg
  4. drwxr-xr-x  2 root root     6 Oct 25 22:01 etc
  5. -rw-r--r--  1 root root 35515 Jan 19 14:15 install.sh
  6. drwxr-xr-x  2 root root     6 Oct 25 21:31 local
  7. drwxr-xr-x  3 root root    18 Oct 25 21:32 src
  8. drwxr-xr-x  2 root root     6 Oct 25 21:31 usr
复制代码
我们知道“-l”选项用于显示文件的详细信息,
那么“-l”选项显示的这7列分别是什么含义?

  • 第一列:权限
具体权限的含义将在4.5节中讲解。

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

  • 第三列:所有者,也就是这个文件属于哪个用户。
默认所有者是文件的建立用户

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

  • 第五列:大小。
默认单位是字节。

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

  • 第七列:文件名。
例子3:“-d”选项

如果我们想查看某个目录的详细信息,例如:
  1. [root@node01 ~]# ls -l /root
  2. total 40
  3. -rw-------. 1 root root  1217 Mar 14  2020 anaconda-ks.cfg
  4. drwxr-xr-x  2 root root     6 Oct 25 22:01 etc
  5. -rw-r--r--  1 root root 35515 Jan 19 14:15 install.sh
  6. drwxr-xr-x  2 root root     6 Oct 25 21:31 local
  7. drwxr-xr-x  3 root root    18 Oct 25 21:32 src
  8. drwxr-xr-x  2 root root     6 Oct 25 21:31 usr
复制代码
这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息
如果我们想要查看目录本身的信息,那么该怎么办呢?
那就需要在-l选项后面加上“-d”选项
例如:
  1. [root@node01 ~]# ls -ld /root
  2. dr-xr-x---. 10 root root 4096 Apr 14 08:37 /root
复制代码
例子4:“-h”选项

“ls -l”显示的文件大小是字节,例如:
  1. [root@node01 ~]# ls -l                                                                                                                                                                                                                                                      
  2. total 40                                                                                                                                                                                                                                                                    
  3. -rw-------. 1 root root  1217 Mar 14  2020 anaconda-ks.cfg                                                                                                                                                                                                                  
  4. drwxr-xr-x  2 root root     6 Oct 25 22:01 etc                                                                                                                                                                                                                              
  5. -rw-r--r--  1 root root 35515 Jan 19 14:15 install.sh                                                                                                                                                                                                                       
  6. drwxr-xr-x  2 root root     6 Oct 25 21:31 local                                                                                                                                                                                                                           
  7. drwxr-xr-x  3 root root    18 Oct 25 21:32 src                                                                                                                                                                                                                              
  8. 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”选项,它就是按照人们习惯的单位显示文件大小的,例如:
  1. [root@node01 ~]# ls -lh
  2. total 40K
  3. -rw-------. 1 root root 1.2K Mar 14  2020 anaconda-ks.cfg
  4. drwxr-xr-x  2 root root    6 Oct 25 22:01 etc
  5. -rw-r--r--  1 root root  35K Jan 19 14:15 install.sh
  6. drwxr-xr-x  2 root root    6 Oct 25 21:31 local
  7. drwxr-xr-x  3 root root   18 Oct 25 21:32 src
  8. drwxr-xr-x  2 root root    6 Oct 25 21:31 usr
复制代码
可以看到显示的文件大小都用KB单位显示了
例子5:“-i”选项

每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的,例如:
  1. [root@node01 ~]# ls -i
  2. 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、命令格式
  1. [root@node01 ~]# cd [目录名]
复制代码
cd命令是一个非常简单的命令,仅有的两个选项-P和-L的作用非常有限,也很少使用。
-P (大写)是指如果切换的目录是软链接目录,则进入其原始的物理目录,而不是进入软链接目录;
-L(大写)是指如果切换的目录是软链接目录,则直接进入软链接目录。
2、常见用法

例子1:基本用法

cd命令切换目录只需在命令后加目录名称即可。例如:
  1. [root@node01 ~]# cd /usr/local/
  2. [root@node01 local]#
复制代码
通过命令提示符,我们可以确定当前所在目录已经切换。
例子2:简化用法

cd命令可以识别一些特殊符号,用于快速切换所在目录,这些符号如表4-1所示
特殊符号作用~代表用户的家目录-代表上次所在目录.代表当前目录..代表上级目录例如快速切换回用户所在的家目录:
  1. [root@node01 local]# cd ~
  2. [root@node01 ~]#
复制代码
补充:cd命令直接按回车键也是快速切换到家目录
例如:
  1. [root@node01 local]# cd
  2. [root@node01 ~]#
复制代码
下面我们来试试“cd -”命令
  1. #进入/usr/local/
  2. [root@node01 ~]# cd /usr/local/
  3. #回到上次所在目录
  4. [root@node01 local]# cd -
  5. /root
  6. [root@node01 ~]#
复制代码
再来试试“.”和“..”
  1. [root@node01 /]# cd /usr/local/
  2. #进入上级目录
  3. [root@node01 local]# cd ..
  4. #local的上一级目录是usr
  5. [root@node01 usr]#
复制代码
  1. [root@node01 usr]# pwd
  2. /usr
  3. [root@node01 usr]# cd .
  4. [root@node01 usr]# pwd
  5. /usr
  6. [root@node01 usr]#
复制代码
3、绝对路径&相对路径

cd命令本身不难,但是这里有两个非常重要的概念,初学者一定要掌握,那就是绝对路径和相对路径。
初学者由于对字符界面不熟悉,所以有大量的错误都是因为对这两个路径没有搞明白。
比如进错了目录、打开不了文件、打开的文件和系统文件不一致等。
所以我们先来区分一下这两个路径。
Linux的路径中是有绝对路径的,那是因为Linux有最高目录,也就是根目录。如果路径是从根目录开始,一级一级指定的,那使用的就是绝对路径。例如:
  1. [root@node01 usr]# cd /usr/local/src/
  2. [root@node01 src]# cd /etc/
  3. [root@node01 etc]#
复制代码
这些切换目录的方法使用的就是绝对路径。
所谓相对路径,就是只从当前所在目录开始,切换目录。例如:
  1. #切换到根目录下
  2. [root@node01 etc]# cd /
  3. #切换到当前目录(根目录)下的etc目录下
  4. [root@node01 /]# cd etc/
  5. #切换到etc目录下的etc目录下,发现报错了,不存在那个文件或目录
  6. [root@node01 etc]# cd etc/
  7. -bash: cd: etc/: No such file or directory
  8. [root@node01 etc]#
复制代码
同样的命令,因为当前所在目录改变了,所以就算是同一个命令也会报错,除非在/etc目录下还有一个etc目录
所以,虽然绝对路径输入更加烦琐,但是更准确,报错的可能性也更小。对初学者而言,超哥还是建议大家使用绝对路径。本书为了使命令更容易理解,也会尽量使用绝对路径。
留个题目给大家:
假如我当前在root用户的家目录中,例如:
  1. [root@node01 etc]# cd ~
  2. [root@node01 ~]#
复制代码
那么,该如何使用相对路径进入/usr/local/src/目录中呢?
欢迎在评论区留下你的答案
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
2.3 mkdir命令

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

  • 命令名称:mkdir
  • 英文原意:make directories
  • 所在路径:/bin/mkdir
  • 执行权限:所有用户
  • 功能描述:创建空目录
1、命令格式
  1.     [root@node01 ~]# mkdir [选项] 目录名
  2.     选项:
  3.         -p:    递归建立所需目录
复制代码
mkdir也是一个非常简单的命令,其主要作用就是新建一个空目录
2、常见用法

例子1:建立目录
  1. [root@node01 ~]# mkdir xiaobei
  2. [root@node01 ~]# ls
  3. anaconda-ks.cfg  etc  install.sh  local  src  usr  xiaobei
复制代码
我们建立一个名为xiaobei的目录,通过ls命令可以查看到这个目录已经建立
注意:我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下
例子2:递归建立目录

如果想建立一串空目录,可以吗?
答案是不行
例如:
  1. [root@node01 ~]# mkdir xiaobei/test/demo
  2. mkdir: cannot create directory ‘xiaobei/test/demo’: No such file or directory
  3. [root@node01 ~]#
复制代码
我们发现报错了,这是因为/test目录是不存在的,mkdir默认只能在已经存在的目录中建立新目录。
所以如果我们需要建立一系列的新目录,则需要加入“-p”选项,递归建立才可以。例如:
  1. [root@node01 ~]# mkdir -p xiaobei/test/demo
  2. [root@node01 ~]# cd xiaobei/test/demo
  3. [root@node01 demo]#
复制代码
所谓的递归建立,就是一级一级地建立目录
2.4 rmdir命令

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

  • 命令名称:rmdir
  • 英文原意:remove empty directories
  • 所在路径:/bin/rmdir
  • 执行权限:所有用户
  • 功能描述:删除空目录
1、命令格式
  1.     [root@node01 ~]# rmdir [选项] 目录名
  2.     选项:
  3.         -p:    递归删除目录
复制代码
2、常见用法
  1. [root@node01 ~]# rmdir xiaobei
  2. #报错了,那是因为rmdir命令默认也是不支持递归删除的
  3. rmdir: failed to remove ‘xiaobei’: Directory not empty
  4. [root@node01 ~]# rmdir xiaobei/test/demo
  5. [root@node01 ~]# cd xiaobei/test/demo
  6. -bash: cd: xiaobei/test/demo: No such file or directory
  7. [root@node01 ~]#
复制代码
发现上述demo目录已经被删除了
既然可以递归建立目录,当然也可以递归删除目录。例如:
  1. [root@node01 ~]# rmdir -p xiaobei/test/
  2. [root@node01 ~]# cd xiaobei
  3. -bash: cd: xiaobei: No such file or directory
  4. [root@node01 ~]# ll
  5. total 40
  6. -rw-------. 1 root root  1217 Mar 14  2020 anaconda-ks.cfg
  7. drwxr-xr-x  2 root root     6 Oct 25 22:01 etc
  8. -rw-r--r--  1 root root 35515 Jan 19 14:15 install.sh
  9. drwxr-xr-x  2 root root     6 Oct 25 21:31 local
  10. drwxr-xr-x  3 root root    18 Oct 25 21:32 src
  11. drwxr-xr-x  2 root root     6 Oct 25 21:31 usr
  12. [root@node01 ~]#
复制代码
可以看到xiaobei这个目录已经被我们删除了
但rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。例如:
  1. #建立测试目录
  2. [root@node01 ~]# mkdir test
  3. #在测试目录下建立两个文件
  4. [root@node01 ~]# touch test/test1
  5. [root@node01 ~]# touch test/test2
  6. #删除测试目录
  7. [root@node01 ~]# rmdir test/
  8. #删除失败
  9. rmdir: failed to remove ‘test/’: Directory not empty
  10. [root@node01 ~]#
复制代码
这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用rm命令
2.5 tree命令

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

  • 命令名称:tree
  • 英文原意:list contents of directories in a tree-like format
  • 所在路径:/usr/bin/tree
  • 执行权限:所有用户
  • 功能描述:显示目录树
tree命令非常简单,用法也比较单一,就是显示目录树,例如:
  1. [root@node01 ~]# tree /etc/
  2. #有的同学可能遇到tree命令不存在的报错,可以执行yum -y install tree指令后再执行
  3. -bash: tree: command not found
复制代码
  1.     [root@node01 ~]# tree  /etc/
  2.     /etc/
  3.     ├── abrt
  4.     │   ├── abrt-action-save-package-data.conf
  5.     │   ├── abrt.conf
  6.     │   ├── gpg_keys
  7.     │   └── plugins
  8.     │      ├── CCpp.conf
  9.     │      └── python.conf
  10.     ├── acpi
  11.     │   ├── actions
  12.     │   │   └── power.sh
  13.     │   └── events
  14.     │      ├── power.conf
  15.     │      └── video.conf
  16.     …省略部分内容…
复制代码
总结

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

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
求一键三连:点赞、分享、收藏

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

来源:https://www.cnblogs.com/jiang-xiao-bei/p/18150985
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

上一篇: 容器平台

下一篇: DNS/DHCP 服务器

举报 回复 使用道具