notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • Linux

    • 韩顺平 2021 Linux 课程笔记

      • 基础篇
      • 实操篇(上)
        • 1. 开机、重启与用户登录注销
          • 1.1 关机 & 重启命令
          • 1.2 用户登录和注销
        • 2. 用户管理
          • 2.1 添加用户
          • 2.2 指定/修改密码
          • 2.3 删除用户
          • 2.4 查询用户信息
          • 2.5 切换用户
          • 2.6 查看当前登录用户
          • 2.7 用户组
          • 2.8 用户和组相关的文件
        • 3. 实用指令
          • 3.1 运行级别
          • 3.2 找回 root 密码
          • 3.3 帮助指令
          • 3.4 时间日期类
          • 3.5 搜索查找类
          • 3.6 压缩和解压类
        • 4. 组管理和权限管理
          • 4.1 所有者
          • 4.2 组的创建
          • 4.3 所在组
          • 4.4 其他组
          • 4.5 改变用户的所在组
          • 4.6 文件的权限
        • 5. 定时任务调度
          • 5.1 crond 任务调度
          • 5.2 at 定时任务
        • 6. 磁盘分区、挂载
          • 6.1 Linux 分区
          • 6.2 挂载的经典案例 —— 增加一块硬盘
          • 6.3 磁盘情况查询
          • 6.4 磁盘情况 - 工作实用指令
      • 实操篇(下)
      • JavaEE 与 Python 定制篇
      • 大数据定制篇 - Shell 编程
    • TLCL(The Linux Command Line)

  • 云原生

  • 运维
  • Linux
  • 韩顺平 2021 Linux 课程笔记
yubin
2022-02-07
目录

实操篇(上)

  • 1. 开机、重启与用户登录注销
    • 1.1 关机 & 重启命令
    • 1.2 用户登录和注销
  • 2. 用户管理
    • 2.1 添加用户
    • 2.2 指定/修改密码
    • 2.3 删除用户
    • 2.4 查询用户信息
    • 2.5 切换用户
    • 2.6 查看当前登录用户
    • 2.7 用户组
    • 2.8 用户和组相关的文件
  • 3. 实用指令
    • 3.1 运行级别
    • 3.2 找回 root 密码
    • 3.3 帮助指令
    • 3.4 时间日期类
    • 3.5 搜索查找类
    • 3.6 压缩和解压类
  • 4. 组管理和权限管理
    • 4.1 所有者
    • 4.2 组的创建
    • 4.3 所在组
    • 4.4 其他组
    • 4.5 改变用户的所在组
    • 4.6 文件的权限
  • 5. 定时任务调度
    • 5.1 crond 任务调度
    • 5.2 at 定时任务
  • 6. 磁盘分区、挂载
    • 6.1 Linux 分区
    • 6.2 挂载的经典案例 —— 增加一块硬盘
    • 6.3 磁盘情况查询
    • 6.4 磁盘情况 - 工作实用指令

# 1. 开机、重启与用户登录注销

# 1.1 关机 & 重启命令

命令 说明
shutdown -h now 立刻进行关机
shutdown -h 2 “hello,2 分钟后会关机了”
shutdown -r now = reboot 现在重启
halt 关机,与上面一样
sync 把内存的数据同步到磁盘
  • 不管是重启还是关机,首先要运行 sync 命令,把内存中的数据写到磁盘中。目前的 shutdown/reboot/halt 等命令均在关机前进行了 sync,但小心驶得万年船。
  • root 才可以关机。

# 1.2 用户登录和注销

登录时尽量少用 root 账号,避免操作失误。使用 su <用户名> 可以切换身份。

logout 命令即可注销用户。这个指令再图形运行级别无效。

# 2. 用户管理

Linux 是一个多用户多任务的操作系统。

# 2.1 添加用户

语法:useradd 用户名

  • 当用户创建成功后,会自动创建与用户同名的家目录。
  • 也可以通过 useradd -d 指定目录 用户名 来给新用户指定家目录。

# 2.2 指定/修改密码

passwd tom:给 tom 指定密码

# 2.3 删除用户

  • userdel yubin:删除用户 yubin,但要保留家目录
  • userdel -r yubin:删除用户及其家目录

一般情况下,我们建议保留,毕竟他所做的工作放在了里面。

# 2.4 查询用户信息

id 用户名:查询该用户的信息,当用户不存在时返回无此用户。

# 2.5 切换用户

当操作权限不够时,可以通过 su 命令切换到高权限用户。

  • 从高权限到低权限的切换不需要密码,反之需要。
  • 当需要返回到原来用户时,使用 exit/logout 指令。

# 2.6 查看当前登录用户

whoami = who am I:显示第一次登录时的用户。

# 2.7 用户组

用户组可以让系统对有共性/权限的多个用户进行统一管理。

  • groupadd 组名:新增组
  • groupdel 组名:删除组

如何将让一个用户加入一个组呢?有以下几种方法:

  1. 增加用户时直接加上组:useradd -g 用户组 用户名
  2. 修改用户的组:usermod -g 用户组 用户名
  3. 若一个用户没有指定加入哪个组,会默认在一个与自己同名的组中

# 2.8 用户和组相关的文件

  • /etc/passwd 文件:用户的配置文件,记录用户的各种信息
    • 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
  • /etc/shadow 文件:口令的配置文件
    • 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group 文件:组的配置文件,记录各组的信息
    • 每行的含义:组名:口令:组标识号:组内的用户列表

# 3. 实用指令

# 3.1 运行级别

运行级别 说明
0 关机
1 单用户模式(可以帮助我们找回丢失密码)
2 多用户状态没有网络服务
3 多用户状态有网络服务【工作中常用】
4 系统未使用,保留给用户
5 图形界面
6 系统重启
  • 常见运行级别是 3 和 5,也可以指定默认运行级别。

init <num>:切换到 num 运行级别,如 init 3 将切换到多用户状态有网络服务模式。

# CentOS 7 后运行级别说明

  • multi-user.target:相当于 runlevel 3
  • graphical.target:相当于 runlevel 5

查看当前默认运行级别:systemctl get-default

设置默认运行级别:systemctl set-default TARGET.target

当我们在图形化下将默认运行级别设为 graphical.target 后,重启系统后会默认进入黑框框界面,即 runlevel 3。

# 3.2 找回 root 密码

// TODO

# 3.3 帮助指令

  • man [命令或配置文件]:获得帮助信息,比如 man ls
  • help 命令:获得 shell 内置命令的帮助信息

如果英语不太好,百度更直接。

# 3.4 时间日期类

# 3.4.1 date 显示当前日期

date:显示当前日期

date "+format":format 中可以用 %Y(年)、%m(月)、%d(日)、%H(时)、%M(月)、%S(秒),比如 date "+%Y-%m-%d %H:%M:%S"

# 3.4.2 cal 显示日历

calendar 的缩写。

cal [选项]

  • 默认显示本月日历
  • cal 2020:显示 2020 全年的日历

# 3.5 搜索查找类

# 3.5.1 find

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示出来。

find [搜索范围] [选项]

  • -name <查询方式>:按指定的文件名查找模式查找文件
  • -user <用户名>:查找属于指定用户名的所有文件
  • -size <文件大小>:按照指定的文件大小查找文件

案例:

  • 根据名称查找 /home 目录下的 hello.txt:find /home -name hello.txt
  • 查找 /opt 下用户 yubin 的文件:find /opt -user yubin

# 3.5.2 locate

locate 可以快速定位文件路径。locate 指令利用事先建立的数据库实现快速定位,它无需遍历整个文件系统因而较快。为了保证查询结果准确性,管理员必须定期更新 locate 时刻:updatedb。

locate [搜索文件]:

  • 第一次使用前,必须使用 updatedb 指令来创建 locate 数据库。

# 3.5.3 which

which 可以查看某个指令在哪个目录下。比如 which ls 查看 ls 指令在哪个目录。

# 3.5.4 grep 指令和管道符号 |

grep 过滤查找。

管道夫 | 表示将前一个命令的处理结果输出传递给后面的命令处理。

grep [选项] 查找内容 源文件

  • -n:显示匹配行及行号
  • -i:忽略字母大小写

案例:在 hello.text 文件中查找“yes”所在行,并显示行号

  • 写法1:cat /home/hello.txt | grep “yes”
  • 写法2:grep -n “yes” /home/hello.txt

# 3.6 压缩和解压类

# 3.6.1 gzip 压缩 & gunzip 解压

  • gzip 文件:压缩文件为 *.gz 文件
  • gunzip 文件.gz:解压

# 3.6.2 zip 压缩 & unzip 解压

  • zip [选项] xxx.zip:压缩文件和目录。-r 递归压缩,即压缩目录。
  • unzip [选项] xxx.zip:解压缩文件。-d <目录> 指定解压后文件的存放目录。

案例:

  • 将 /home 下的所有文件压缩:zip -r myhome.zip /home/
  • 将 myhome.zip 解压到 /opt/tmp 目录下:unzip -d /opt/tmp /home/myhome.zip

# 3.6.3 tar 打包 ⭐️

tar 是打包指令(仅仅打包但不压缩),最后打包后的文件是 xxx.tar.gz 文件。

tar [选项] xxx.tar.gz 打包的内容:打包目录,压缩后的文件格式为 xxx.tar.gz

  • -c:【create】创建一个新的打包文件
  • -v:【verbose】显示详细信息
  • -f:【filename】指定压缩后的文件名
  • -z:【gzip】打包同时用 gzip 算法压缩
  • -x:【extract】解包 .tar 文件

常用的选项组合:

  • 打包并压缩:tar -zcvf xxx.tar.gz [原文件名/目录名]
  • 解压并解包:tar -zxvf xxx.tar.gz [目的地]

案例:

  • 将 pig.txt 和 cat.txt 压缩成 pc.tar.gz:tar -zcvf pc.tar.gz pig.txt cat.txt
  • 将 /home 文件夹压缩成 myhome.tar.gz:tar -zcvf myhome.tar.gz /home/
  • 将 pc.tar.gz 解压到当前目录:tar -zxvf pc.tar.gz
  • 将 pc.tar.gz 解压到 /opt/tmp:tar -zxvf pc.tar.gz /opt/tmp

# 4. 组管理和权限管理

Linux 中每个用户必须属于一个组,不能独立于组外。每个文件有所有者、所在组、其他组的概念。

目录也是一种特殊的文件,所以这里的“文件”也包括了目录。

# 4.1 所有者

创建文件的人是所有者,所有者可以更改。

# 4.1.1 查看文件的所有者

ls -ahl

image-20220209213608902

  • 最后一列的蓝色表示这是个目录,白色表示是文件

# 4.1.2 修改文件所有者

  • chown 用户名 文件名:【change owner】将文件的所有者改成指定的用户

  • chown newOwner:newGroup 文件名:同时改变所有者和所在组

  • -R:如果是目录,则使其下所有子文件或者目录递归生效

# 4.2 组的创建

groupadd 组名:创建一个组

案例:

  • 创建一个组 monster:groupadd monster
  • 创建一个用户 fox,并放到 monster 组中:useradd -g monster fox
    • -g 表示 group

# 4.3 所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。

# 4.3.1 查看文件的所在组

ls -ahl

image-20220209213608902

# 4.3.2 修改文件的所在组

chgrp 组名 文件名:【change group】

# 4.4 其他组

除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

# 4.5 改变用户的所在组

root 的管理权限可以改变某个用户的所在组。

  • usermod -g 新组名 用户名:修改用户的所在组。

usermod 可以用来修改用户账号的各项设定,具体可查 usermod命令 | 菜鸟教程 (opens new window)

# 4.6 文件的权限

# 4.6.1 权限的基本介绍

下图的第一列便是权限:

image-20220209213608902

  • 第 0 位表示文件类型:l 链接,d 目录,c 字符设备文件(如鼠标、光盘),b 块设备(如硬盘)
  • 第 1~3 位表示所有者拥有该文件的权限
  • 第 4~6 位表示所属组拥有该文件的权限
  • 第 7~9 位表示其他用户拥有该文件的权限

# 4.6.2 rwx 权限 ⭐️

# 1)rwx 作用到文件
  • 【r】可读
  • 【w】可写。可以修改但不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限。
  • 【x】可执行(execute)
# 2)rwx 作用到目录
  • 【r】可读。ls 可以查看目录内容。
  • 【w】可写。可以对目录内创建 + 删除 + 重命名目录。
  • 【x】可执行。可以进入该目录。

# 4.6.3 权限的数字表示

,,

因此 rwx = 4+2+1 = 7,rw- = 4+2 = 6 等

# 4.6.4 chmod 修改权限

chmod 可以修改文件/目录的权限:chmod [变更方式] 文件名

# 1)第一种方式:+ - = 变更权限
  • u —— 所有者,user 的简写
  • g —— 所有组,group 的简写
  • o —— 其他人,other 的简写
  • a —— 所有人(即 u、g、o 的总和),all 的简写

案例:给 foo.txt 的所有者赋予读写执行的权限,增加所在组写的权限,除去其他人读的权限

  • chmod u=rwx,g+w,o-r foo.txt
# 2)第二种方式:通过数字变更权限

,,

案例:将 bar.txt 的权限修改为 rwxr-xr-x

  • chmod 755 bar.txt

# 5. 定时任务调度

# 5.1 crond 任务调度

crontab 进行定时任务的设置。该命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

英语:crond 定时任务,crontab 定时任务

# 5.1.1 概述

任务调度:是指系统在某个时间执行特定的命令或程序。

任务调度分类:

  • 系统工作:系统周期性所要执行的工作,如病毒扫描
  • 个别用户工作:某个用户定期要做的工作,比如对 MySQL 数据库的备份

# 5.1.2 基本语法

crontab [选项]

  • -e:使用编辑器来编辑 crontab 定时任务
  • -l:列出目前的时程表
  • -r:删除当前用户的时程表(即所有 crontab 任务)

# 5.1.3 快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度:执行 crontab -e 命令,接着输入任务到调度文件。如输入 */1 * * * * ls -l /etc/ > /tmp/to.txt 表示每个小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令。

# 任务书写格式:

f1 f2 f3 f4 f5 program

  • program 处为定时执行的命令
  • f1 ~ f5 为指示时间的占位符,具体可见下面
# 5 个占位符的说明:
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
1
2
3
4
5
6
7
8
# 特殊符号的说明
特殊符号 含义
* 代表任何时间,比如第一个 * 就代表一个小时中每分钟执行一次的意思。
, 代表不连续的时间,如 0 8,12,16 * * * 命令就代表每天的8点0分、12点0分、16点0分都执行一次命令。
- 代表连续的时间范围,如 0 5 * * 1-6 命令就代表周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次,如 */10 * * * * 就代表每隔 10 分钟就执行一次命令

案例可见 crontab 命令 | 菜鸟教程 (opens new window)

# 5.2 at 定时任务

crond 是反复执行的任务,而 at 命令是一次性定时计划任务,其守护进程 atd 会以后台模式运行,检查任务队列来运行。

默认情况下,atd 守护进程每分钟检查一次作业队列,有作业时会检查其运行时间,若匹配则运行此作业。在使用 at 命令时,一定要保证 atd 进程的启动,可以使用 ps -ef | grep atd 来检测 atd 是否在运行。

  • ps -ef | grep atd:查看所有进程并过滤出 atd

命令格式:at [选项] [时间]

  • -m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
  • -I atq的别名
  • -d atrm的别名
  • -v 显示任务将被执行的时间
  • -c 打印任务的内容到标准输出
  • -V 显示版本信息
  • -q<列队> 使用指定的列队
  • -f<文件> 从指定文件读入任务而不是从标准输入读入
  • -t<时间参数> 以时间参数的形式提交要运行的任务

# 5.2.1 at 时间定义的方法

  • 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
  • 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。
  • 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。
  • 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。
  • 使用相对计时法,指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,究竟是几天,还是几小时,等等。比如 now + 5 minutes。
  • 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

案例:2 天后的下午 5 点执行 /bin/ls /home

image-20220210171048935

先输入 at [选项] [时间] 后回车,再接着输入命令,输入完后按两次 Ctrl D 结束输入。

# 6. 磁盘分区、挂载

# 6.1 Linux 分区

# 6.1.1 原理介绍

Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分。

Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

示意图:image-20220213190719208

# 6.1.2 硬盘说明

Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘。

  • 对于 IDE 硬盘,驱动器标识符为“hdx~”,“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。比如 hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
  • 对于 SCSI 硬盘,驱动器标识符为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型,其余则和 IDE 硬盘的表示方法一样。

# 6.1.3 查看所有设备挂载情况

命令:lsblk 或者 lsblk -f

  • lsblk:英文是“list block”,即用于列出所有可用块设备的信息

image-20220213192040182

# 6.2 挂载的经典案例 —— 增加一块硬盘

目标:给 Linux 系统增加一块新的硬盘,并且挂载到 /newdisk

主要有以下5个步骤:虚拟机添加硬盘、分区、格式化、挂载、设置可以自动挂载。

# 1)虚拟机添加硬盘

在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统(才能识别)!

# 2)磁盘分区

分区命令:fdisk /dev/sdb

开始对 /sdb 分区:

命令 含义
m 显示命令列表
n 新增分区
d 删除分区
w 写入并退出

做法:开始分区后输入 n,新增分区,然后选择 p,分区类型为主分区,分区号1-4可选,默认为1,1代表为只为磁盘划分一块分区,2代表为磁盘划分两块分区,依次类推。此次案例选择1。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。

# 3)格式化磁盘

命令:mkfs -t ext4 /dev/sdb1

  • 其中 ext4 是分区类型

# 4)挂载

挂载: 将一个分区与一个目录联系起来。

命令:mount 设备名称 挂载目录

  • 此次案例为 mount /dev/sdb1 /newdisk
  • 去除挂载命令为 umount 设备名称或者挂载目录,比如 umount /dev/sdb1 或者 umount /newdisk

# 5)设置自动挂载

用命令行挂载只能实现临时挂载,重启系统后,挂载就会失效。设置自动挂载,即永久挂载,当重启系统,仍然可以挂载到指定目录。

通过修改 /etc/fstab 文件实现永久挂载。

  • 此次案例在文件中增加 /dev/sdb1 /newdisk ext4 defaults 0 0
  • 保存并退出文件后,执行 mount –a 即刻生效

# 6.3 磁盘情况查询

# 6.3.1 查询系统整体磁盘使用情况

命令:df -h

  • df:disk free,显示目前在 Linux 系统上的文件系统磁盘使用情况统计
  • -h:human readable,使用人类可读的格式(预设值是不加这个选项的

可用于查询系统整体磁盘使用情况:

$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 974M     0  974M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M   11M  980M    2% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  5.4G   11G   34% /
/dev/sda1                976M  177M  733M   20% /boot
vmhgfs-fuse              400G  317G   84G   80% /mnt/hgfs
tmpfs                    199M   52K  198M    1% /run/user/1000
1
2
3
4
5
6
7
8
9
10
  • 当“已用”超过 80% 后就不正常了,应该想到扩容。

# 6.3.2 查询指定目录的磁盘占用情况

命令:du -h

  • du:disk usage,显示指定的目录或文件所占用的磁盘空间,默认是当前目录。
  • -s:指定目录占用大小汇总
  • -h:带计量单位
  • -a:含文件
  • --max-depth=1:子目录深度为1
  • -c:列出明细的同时,增加汇总值

案例:查看 /opt 目录的磁盘占用情况,深度为 1

$ du -hac --max-depth=1 /opt
163M	/opt/vmware-tools-distrib
4.0K	/opt/rh
54M	    /opt/VMwareTools-10.3.10-13959562.tar.gz
216M	/opt
216M	总用量
1
2
3
4
5
6

# 6.4 磁盘情况 - 工作实用指令

# 1)统计 /opt 文件夹下文件的个数

ls -l /opt | grep "^-" | wc -l

# 2)统计 /opt 文件夹下目录的个数

ls -l /opt | grep "^d" | wc -l

# 3)统计 /opt 文件夹下文件的个数,包括子文件夹下的

ls -lR /opt | grep "^-" | wc -l

# 4)统计 /opt 文件夹下目录的个数,包括子文件夹下的

ls -lR /opt | grep "^d" | wc -l

# 5)以树状显示目录结构

yum install tree 后 tree 指定目录

$ tree .
.
├── aaa
│   └── abc.txt
├── bar.txt
├── foo.txt
1
2
3
4
5
6

补充:wc 命令

wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

命令:wc [选项] [文件]

  • -c:统计字节数
  • -l:统计行数
  • -m:统计字符数,这个选项不能与 -c 一起使用
  • -w:统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
  • -L:统计最长行的长度
编辑 (opens new window)
上次更新: 2023/06/07, 13:42:57
基础篇
实操篇(下)

← 基础篇 实操篇(下)→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×