当前位置: 首页 > news >正文

一天急速通关Linux

一天急速通关Linux

  • 0 文章说明
  • 1 介绍
    • 1.1 常见的操作系统介绍
    • 1.2 Linux命令的介绍
  • 2 磁盘管理与文件管理
    • 2.1 目录的划分
    • 2.2 目录的增删改查
    • 2.3 文件的增删改查
    • 2.3 文件的搜索
    • 2.4 压缩与解压缩
    • 2.5 软链接与硬链接
    • 2.6 vim编辑器简要介绍
  • 3 用户管理
    • 3.1 用户组增删改查
    • 3.2 用户增删改查
    • 3.3 为用户主目录之外的目录授权
  • 4 文件权限
    • 4.1 查看文件权限
    • 4.2 基于UGO修改文件权限
  • 5 系统命令
    • 5.1 时间,用户,echo
    • 5.2 sort,diff,重定向
    • 5.3 grep,管道
    • 5.4 系统进程,sleep,kill,top
    • 5.5 free,uptime,df,du
    • 5.6 重启,关机
    • 5.7 ifconfig,ping,curl,wget,netstat
  • 6 软件安装与下载
  • 7 Shell编程简介

0 文章说明

在倍速观看动力节点杜老师的Linux教程之后,根据视频内容以及课程笔记进行实践,经过自己的理解并总结后形成这篇学习笔记。文章总共分八个章节,包括了原教程的九个章节的大部分知识。本文所提供的信息和内容仅供参考,作者和发布者不保证其准确性和完整性。

1 介绍

1.1 常见的操作系统介绍

  • Windows:微软公司开发
    • 特点:图形用户界面友好,应用生态丰富,更新频繁,兼容性好
    • 用途:广泛应用于个人电脑领域,适合日常办公、娱乐、学习等场景,在企业的桌面办公系统中也有广泛应用。
  • Unix:由贝尔实验室开发
    • 特点:稳定性强,基于内核,多用户多任务
    • 用途:主要用于企业级服务器领域,如大型企业的数据库服务器、邮件服务器等。
  • Linux:基于Unix开发
    • 特点:开源免费,可定制性强,安全可靠
    • 用途:在服务器领域占据主导地位,广泛应用于云计算平台、Web 服务器、数据库服务器等,在嵌入式设备和移动设备上也有广泛应用,如 Android 系统是基于 Linux 内核开发的。

Linux的常见版本:

  • Debian:一种流行的稳定 Linux 操作系统。
  • Ubuntu:基于 Debian 构建的一种流行的 Linux 桌面操作系统。
  • Red Hat:一种商业 Linux 操作系统,由 Red Hat 公司开发。
  • CentOS:通过重新编译 Red Hat而得到的 Linux 操作系统,免费且源代码开放。
  • Fedora:由 Red Hat 公司赞助的基于开源的 Linux 桌面和服务器操作系统。

1.2 Linux命令的介绍

  • 终端介绍:[adododes@localhost ~]$

    其中adododes表示用户,@表示分隔符,localhost 表示主机名称,~表示当前所在目录,默认用户目录为~,会随着目录切换而变化,$表示当前当前用户为普通用户,超级用户为#

  • 命令介绍:命令 参数名 参数值

  • man--help命令介绍

    • man命令可以查看某个命令的具体用法:man pwd

    • 也可以查看一个命令的帮助,一次性列出:pwd --help

文章内容通过VMWare安装CentOS8用于命令演示,具体安装教程可自行查询。

2 磁盘管理与文件管理

2.1 目录的划分

对于Windows操作系统来说,磁盘可以分为C盘、D盘、E盘等,每个磁盘下采用文档树的形式组织文件系统,其中,操作系统一般安装在C盘,C盘下的Windows目录是操作系统的核心,Program Files目录下安装软件,用户目录是所有的用户,包括超级管理员也在其中。

对于Linux操作系统来说,只采用一个文档树来组织所有的资源,树的根目录是/,根目录下有其他子目录,其中:

  • /bin:常用的二进制可执行文件,如cat、ls、mkdir、rm等。这些二进制文件在系统运行时始终可用,可以被任何用户运行。
  • /etc:系统的大多数配置文件,如网络配置、用户登录信息、软件包安装配置等。大多数应用程序在安装后都会在这个目录下创建自己的子目录,以便存储自己的配置文件。
  • /homeLinux系统用户的家目录,每个用户的数据和个人文件都存放在这里。
  • /lib:一些共享库文件,应用程序可以通过这些共享库文件调用系统的功能,如libc.so,是C语言函数库的共享库。
  • /root:是系统管理者(超级用户)的家目录。
  • /tmp:是系统中的一个临时目录,所有用户都可以在这里创建临时文件,文件系统会定期清空该目录,以防止文件滞留。
  • /usr:包含系统启动后,所有用户能访问的应用程序和数据文件。
  • /var :包含可变数据的文件。包括日志、数据库、Web服务器、邮件队列等文件。它是一个经常被修改的目录,如果在其他目录有可变数据的话,它们都应当被链接到 /var 中。

2.2 目录的增删改查

操作命令命令全称常见参数参数全称参数说明示例
Createmkdirmake directories-p--parents递归创建目录,如果父目录不存在则自动创建mkdir -p dir/subdir
-m--mode创建目录时设置权限mkdir -m 777 newdir
-v--verbose显示创建目录的过程mkdir -v testdir
Readlslist-l--format=long使用长格式显示文件和目录信息ls -l
-a--all显示所有文件,包括隐藏文件ls -a
-h--human-readable以易读的格式显示文件大小ls -lh
-R--recursive递归显示目录及其子目录的内容ls -R
-t--time按文件修改时间排序ls -lt
pwdprint working directory显示当前工作目录的绝对路径pwd
Updatemvmove-i--interactive在覆盖文件或目录时提示确认mv -i oldname newname
-u--update仅在源文件比目标文件新时移动mv -u file1 dir/
Deletermremove-r--recursive递归删除目录及其内容rm -r dir/
-f--force强制删除,不提示确认rm -f file
-i--interactive删除前逐个文件提示确认rm -i file
rmdirremove directory删除空目录rmdir emptydir

Tips:

  • ls命令还可以指定查看某个目录下的所有文件详情。

    ll -a /home

  • cd命令change directory,用于切换目录

    cd .. 回到上级目录,cd ~ 回到主目录,cd / 回到根目录

  • 自行查漏补缺

2.3 文件的增删改查

操作命令命令全称常见参数参数全称参数说明示例
Createtouchtouch-a--time=atime仅修改文件的访问时间touch -a file.txt
-m--time=modify仅修改文件的修改时间touch -m file.txt
-t--time指定文件的时间戳touch -t 202301010000 file.txt
echoecho将内容写入文件或创建新文件echo "Hello" > file.txt
cpcopy-r--recursive递归复制目录及其内容cp -r dir/ newdir/
-i--interactive在覆盖文件时提示确认cp -i file1 file2
-f--force强制覆盖目标文件cp -f file1 file2
Readcatconcatenate-n--number显示全部内容并显示行号cat -n file.txt
-v--show-nonprinting显示全部内容并显示不可见字符cat -v file.txt
lessless-N--LINE-NUMBERS分页显示,显示行号less -N file.txt
-S--chop-long-lines分页显示,不自动换行,显示长行less -S file.txt
moremore分页显示文件内容(较简单)more file.txt
nlnumber lines显示文件内容并添加行号nl file.txt
headhead-n--lines显示文件的前几行head -n 5 file.txt
tailtail-n--lines显示文件的后几行tail -n 5 file.txt
-f--follow实时显示文件的更新内容tail -f file.txt
Updatemvmove-i--interactive在覆盖文件时提示确认mv -i oldfile newfile
-n--no-clobber不覆盖已存在的目标文件mv -n file dir/
vimVi IMproved使用 Vim 编辑器修改文件内容vim file.txt
Deletermremove-f--force强制删除,不提示确认rm -f file.txt
-i--interactive删除前提示确认rm -i file.txt
-r--recursive递归删除目录及其内容rm -r dir/

Tips:

  • Read方式太多,自行熟悉

2.3 文件的搜索

CentOS中,可以使用以下方式进行文件搜索:

find命令:使用find命令可以在指定目录下搜索文件。可以使用不同的选项来指定搜索的文件类型、大小、修改时间等条件。例如:

find /usr/local -name "catalina.out"

whereis命令:使用whereis命令可以在系统中搜索指定的命令的位置。例如:

whereis startup.sh

which命令:使用which命令也可以在系统中搜索指定的命令的位置。例如:

which command

2.4 压缩与解压缩

使用tar命令,tar命令语法格式: tar 参数 要压缩的或解压的文件或目录
tar命令的常用参数:

参数参数全称参数说明
-c--create创建一个新的归档文件。
-x--extract从归档文件中解压内容。
-t--list列出归档文件的内容,不解压。
-v--verbose显示详细的操作过程。
-f--file指定归档文件的名称,后面必须紧跟文件名,不能再加其他参数。
-z--gzip使用 gzip 压缩或解压归档文件,速度快,后缀tar.gz。
-j--bzip2使用 bzip2 压缩或解压归档文件,体积小,后缀tar.bz2。
-C--directory指定解压目标目录或在打包时切换到指定目录。
--exclude在打包时排除指定的文件或目录。

注意: 创建c、压缩x、查看t,这三个参数不能共存,只能出现一个。

分类命令说明
创建归档tar -cvf archive.tar file1 file2 dir/创建一个未压缩的归档文件,包含指定文件和目录。
tar -czvf archive.tar.gz dir/创建一个 gzip 压缩的归档文件。
tar -cjvf archive.tar.bz2 dir/创建一个 bzip2 压缩的归档文件。
解压归档tar -xvf archive.tar解压未压缩的归档文件到当前目录。
tar -xzvf archive.tar.gz解压 gzip 压缩的归档文件。
tar -xjvf archive.tar.bz2解压 bzip2 压缩的归档文件。
tar -xzvf archive.tar.gz -C /path/to/destination解压归档文件到指定目录。
查看内容tar -tvf archive.tar列出未压缩归档文件的内容。
tar -ztvf archive.tar.gz列出 gzip 压缩归档文件的内容。
tar -jtvf archive.tar.bz2列出 bzip2 压缩归档文件的内容。
其他操作tar -czvf archive.tar.gz directory/ --exclude='*.log'创建归档文件时排除特定文件(如 .log 文件)。
tar -xzvf archive.tar.gz path/to/file.txt从归档文件中提取单个文件。
tar -czvpf archive.tar.gz dir/创建归档文件时保留文件权限和所有者信息。

理解:创建c,解压x,查看t + 未压缩归档vf,gzip压缩zvf,bzip2压缩jvf

2.5 软链接与硬链接

软链接类似于windows操作系统中的快捷方式,作用也类似,创建方式为:

ln -s file.txt fileSoftLink.txt

软链接和目标文件实际上是两个文件,在软链接中存储的是目标文件的路径。软链接关联的目标文件如果被删除,软链接这个快捷方式也就失效了。
可以通过查看inode号区分两个文件。

inode号:Linux操作系统中,每一个文件都有自己的身份证号,即inode号,通过ls -i file查看fileinode号。

硬链接类似于备份,创建方式为:

ln file.txt fileHardLink.txt

目标文件或者硬链接只要有一个存在,文件就没有被真正的删除,file.txt被修改,fileHardLink.txt也会更新。

2.6 vim编辑器简要介绍

  • 打开文件

    • 语法:vi 文件的路径

    • vi a.txt

    • vi /home/b.txt

  • 编辑文件:两个模式

    • 进入vi编辑器时是命令模式:键入i命令进入编辑模式
    • 从编辑模式回到命令模式:按一下esc
  • 保存文件:处于命令模式

    • :wq命令,保存并退出
    • :q!命令,强行退出不保存

注意:vi编辑器打开的文件如果不存在,则自动新建。

3 用户管理

Linux系统中超级用户是root,通过超级用户root可以创建其它的普通用户,Linux是一个支持多用户的操作系统。Linux系统中任何一个用户都对应:一个用户名 + 一个口令。用户管理主要是完成下面几个方面的管理:

  • 用户组的管理
  • 用户的管理
  • 为用户主目录之外的目录授权

3.1 用户组增删改查

用户组的构成:

组名:密码标识:GID:该用户组中的用户列表

操作类型命令格式说明
增加用户组groupadd 用户组名
groupadd -g GID 用户组名
创建一个新的用户组。
删除用户组groupdel 用户组名删除一个已存在的用户组。注意:不能删除正在使用的用户组。
修改用户组groupmod -n 新组名 用户组名
groupmod -g 新GID 用户组名
修改用户组的属性。
查询用户组getent group 用户组名
cat /etc/group
groups 用户名
查询用户组的详细信息,包括 GID 和成员列表;
列出系统中所有用户组的配置信息;
查看指定用户所属的所有用户组。

3.2 用户增删改查

切换用户使用:su 用户名

  • 新增用户

    useradd [选项] 用户名,其中选项:

    • -d 指定新用户的主目录
    • -g 指定新用户属于哪个组(主组)
    • -G 可以给新用户添加附加组

    添加lisi用户,该用户的主目录/usr/lisi,所属主组dev(开发组),附加组test(测试组)

    [root@localhost usr]# useradd -d /usr/lisi -g dev -G test lisi
    

    设置密码:passwd lisi

  • 修改用户

    # 修改用户名
    usermod -l zhangsi zhangsan
    # 修改主目录 -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。
    usermod -d /usr/zhangsan2 -m zhangsan
    # 修改组
    usermod -g dev1 zhangsan
    
  • 删除用户

    userdel -r zhangsan
    

3.3 为用户主目录之外的目录授权

创建目录并授权 -> 创建组并把目录赋予给组 -> 创建用户并添加附加组

第一步:创建目录

mkdir /java

第二步:给目录授权

# -R表示递归设置权限,该目录下所有的子目录以及子文件
chmod -R 775 /java

第三步:创建组

groupadd dev

第四步:把目录赋予组

chgrp -R dev /java

第五步:创建用户

useradd xiaoming

第六步:设置密码

passwd xiaoming

第七步:给用户添加附加组

x usermod -G dev xiaoming

4 文件权限

Linux为了保证系统中每个文件的安全,引入了文件权限机制, 可以做到不同的用户同一个文件具有不同的操作权利

不同的操作权利:

  • 读的权利(Read,简称r
  • 写的权利(Write,简称w
  • 执行的权利(eXecute,简称x

不同的用户,UGO模型:

  • 文件拥有者(User,简称U):该文件的创建人
  • 同组用户(Group,简称G):和创建人在同一组的用户
  • 其他组用户(Other,简称O):和创建人不在同一组的用户

4.1 查看文件权限

每一个文件或目录采用ls -l查看之后,第一个字段描述了文件类型+文件的权限,第一个字段共10个字符,其中第一个字符代表文件类型

文件类型代表符号说明
普通文件-普通文件,如文本文件、可执行文件等。
目录d目录,用于存储文件和子目录。
链接l软链接(符号链接),类似于快捷方式,指向另一个文件或目录。
块设备b块设备文件,用于存储设备(如硬盘、软盘等)。
字符设备c字符设备文件,通常以字节流的方式访问(如键盘、打印机等)。
管道文件p管道文件(FIFO),用于进程间通信。
套接字文件s套接字文件,用于网络通信或进程间通信。

剩下的九个,三个一组,分别代表UGO的权限,其中

权限类型符号表示数字表示说明
读权限(Read)r4允许查看文件内容或列出目录中的文件。
写权限(Write)w2允许修改文件内容或删除/修改目录中的文件。
执行权限(Execute)x1允许运行文件(可执行文件)或进入目录。
无权限-0没有任何权限。

4.2 基于UGO修改文件权限

操作命令格式示例说明
符号表示法chmod [ugoa][+-=][rwx] 文件名chmod u=rwx,g=rx,o=r 文件设置所有者为读、写、执行权限,组为读、执行权限,其他用户为读权限,里面a代表all。
数字表示法chmod [权限数字] 文件名chmod 754 文件设置所有者为7rwx),组为5r-x),其他用户为4r--)。
递归修改chmod -R [权限] 目录chmod -R 755 目录递归修改目录及其子目录和文件的权限。

5 系统命令

5.1 时间,用户,echo

  • date,查看系统当前时间

    [adododes@localhost ~]$ date
    Tue Feb 18 03:18:52 CST 2025
    
  • su 用户名,切换用户

    [adododes@localhost ~]$ su root
    Password: 
    
  • sudo 指令,使用超级管理员身份执行该命令

  • echo X,X可以是字符串,变量,转义需要添加-e参数

    echo "Hello, world!"
    
    name="John"
    echo "My name is $name"
    
    echo "line 1
    line 2
    line 3"
    
    echo -e "Line 1\nLine 2\tTable"
    

5.2 sort,diff,重定向

  • sort file.txt,对文件中的内容以“行”为单位进行升序和降序排列

    sort file.txt
    
    # 降序
    sort -r file.txt
    
    # 按数字排序
    sort -b file.txt
    
  • diff a.txt b.txt,逐行比较两个文件的区别

    diff a.txt b.txt
    

    1c1表示第一个文件的第1行 和 第二个文件的第1行不同。
    3c3,4表示第一个文件的第3行 和 第二个文件的第3,4行不同。

  • 重定向

    输出重定向>>>,前者以追加方式,后者以覆盖方式

    # 文件详细信息写入到a.txt
    ls -al > a.txt
    

    输入重定向<,文件内容输入给某个命令,这是一种默认的行为,可以省略

    输入重定向<<,接收用户输入,需要指定标识符,当再次输入标识符表示输入结束

    [root@localhost adododes]# sort -n << flag
    > 10
    > 30
    > 20
    > 10
    > flag
    10
    10
    20
    30
    

5.3 grep,管道

  • grep 'pattern' file,用于在文件中查找匹配的字符串或模式,并将匹配行作为输出

    • 'pattern' 表示要匹配的字符串或模式。
    • file 表示要搜索的文件名。如果不指定文件名,则 grep 命令会从标准输入中读取数据,等待用户输入并匹配字符串。

    搜索多个文件

    grep 'pattern' file1 file2
    grep 'pattern' *.txt
    

    递归搜索

    grep -r 'pattern' dir
    

    匹配前几行或后几行

    grep -A 2 'pattern' file    # 显示匹配行后2行
    grep -B 2 'pattern' file    # 显示匹配行前2行
    grep -C 2 'pattern' file    # 显示匹配行前后各2行
    

    忽略大小写,找出不匹配的行,使用正则表达式

    grep -n 'pattern' file
    grep -v 'pattern' file
    grep -E 'pattern' file
    
  • | ,管道

    将前面命令的输出作为后面命令的输入

    [root@localhost adododes]# ls -al | grep drw | grep r-x
    drwxr-xr-x.  3 root     root       22 Feb 17 07:24 ..
    drwxr-xr-x. 12 adododes adododes  271 Feb 18 00:56 .cache
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Desktop
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Documents
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Downloads
    drwxr-xr-x.  6 adododes adododes   81 Feb 18 00:56 .mozilla
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Music
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Pictures
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Public
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Templates
    drwxr-xr-x.  2 adododes adododes    6 Feb 17 07:25 Videos
    

5.4 系统进程,sleep,kill,top

  • ps,查看系统进程

    • -e :显示当前所有进程
    • -f :显示 UID,PPID,CSTIME 栏位信息
    ps -ef
    
    [root@localhost adododes]# ps -ef
    UID          PID    PPID  C STIME TTY          TIME CMD
    root           1       0  0 Feb17 ?        00:00:05 /usr/lib/systemd/syste
    root           2       0  0 Feb17 ?        00:00:00 [kthreadd]
    root           3       2  0 Feb17 ?        00:00:00 [rcu_gp]
    

    其中UID:该进程的所属用户,PID:进程idPPID:父进程idCCPU使用百分比,STIME:启动时间,TTY:启动该进程的终端设备是哪个,TIME:耗费的CPU时间,CMD:该进程对应的命令。

  • sleep NUMBER[SUFFIX],用于暂停程序的执行一段时间

    SUFFIX可以为s,m,h,d,分别表示秒,分,时,天

    [root@localhost adododes]# sleep 10d &
    [1] 7191
    [root@localhost adododes]# sleep 20d &
    [2] 7192
    [root@localhost adododes]# ps -ef |grep sleep
    root        7190    1002  0 03:40 ?        00:00:00 sleep 60
    root        7191    6941  0 03:41 pts/2    00:00:00 sleep 10d
    root        7192    6941  0 03:41 pts/2    00:00:00 sleep 20d
    root        7194    6941  0 03:41 pts/2    00:00:00 grep --color=auto sleep
    

    加上&符号表示在后台执行。

  • kill 进程号,杀死进程

    [root@localhost adododes]# ps -ef |grep sleep
    root        7190    1002  0 03:40 ?        00:00:00 sleep 60
    root        7191    6941  0 03:41 pts/2    00:00:00 sleep 10d
    root        7192    6941  0 03:41 pts/2    00:00:00 sleep 20d
    root        7194    6941  0 03:41 pts/2    00:00:00 grep --color=auto sleep
    [root@localhost adododes]# killall sleep
    [1]-  Terminated              sleep 10d
    [2]+  Terminated              sleep 20d
    [root@localhost adododes]# ps -ef |grep sleep
    root        7237    1002  0 03:43 ?        00:00:00 sleep 60
    root        7239    6941  0 03:43 pts/2    00:00:00 grep --color=auto sleep
    

    先查找,再杀死,killall是杀死所哟sleep进程

    kill -9 进程号强制杀死进程。

  • top,用于查看正在运行的系统进程信息的命令。

    实时动态地显示系统资源的使用情况,如 CPU 占用率、内存使用情况、进程情况等,通常用于系统监控和性能调优。

    top - 03:46:55 up  4:22,  2 users,  load average: 0.00, 0.00, 0.00
    Tasks: 265 total,   1 running, 264 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    MiB Mem :   5725.6 total,   3576.2 free,   1040.7 used,   1108.7 buff/cache
    MiB Swap:   3072.0 total,   3072.0 free,      0.0 used.   4427.3 avail Mem 
    
        PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                    
       7250 root      20   0   65564   5136   4268 R   0.7   0.1   0:00.39 top                        
          1 root      20   0  241036  14008   8948 S   0.0   0.2   0:05.70 systemd                    
          2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd                   
          3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                     
          4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                 
          6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
          9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq               
         10 root      20   0       0      0      0 S   0.0   0.0   0:00.04 ksoftirqd/0                
         11 root      20   0       0      0      0 I   0.0   0.0   0:03.22 rcu_sched                  
         12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0                
         13 root      rt   0       0      0      0 S   0.0   0.0   0:00.01 watchdog/0                 
         14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0                    
         15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1                    
         16 root      rt   0       0      0      0 S   0.0   0.0   0:00.03 watchdog/1                 
         17 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/1                
         18 root      20   0       0      0      0 S   0.0   0.0   0:00.03 ksoftirqd/1
    

5.5 free,uptime,df,du

  • free,查看物理内存和交换分区的使用情况

    [root@localhost adododes]# free
                  total        used        free      shared  buff/cache   available
    Mem:        5862980     1064448     3663196       13724     1135336     4534760
    Swap:       3145724           0     3145724
    
  • uptime,显示系统运行时间

    [root@localhost adododes]# uptime
     03:54:09 up  4:29,  2 users,  load average: 0.09, 0.02, 0.01
    
  • df,显示当前文件系统的磁盘空间使用状况

    [root@localhost adododes]# df
    Filesystem          1K-blocks     Used Available Use% Mounted on
    devtmpfs              2902152        0   2902152   0% /dev
    tmpfs                 2931488        0   2931488   0% /dev/shm
    tmpfs                 2931488     9980   2921508   1% /run
    tmpfs                 2931488        0   2931488   0% /sys/fs/cgroup
    /dev/mapper/cl-root  27245572  4827420  22418152  18% /
    /dev/nvme0n1p1        1038336   264624    773712  26% /boot
    tmpfs                  586296       24    586272   1% /run/user/1000
    /dev/sr0             10540998 10540998         0 100% /run/media/adododes/CentOS-8-5-2111-x86_64-dvd
    
  • du,磁盘空间占用查询命令,用于显示文件或目录占用的磁盘空间大小。

    [root@localhost adododes]# du
    0	./.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
    0	./.mozilla/extensions
    0	./.mozilla/plugins
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.files
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/3561288849sdhlie.files
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/1451318868ntouromlalnodry--epcr.files
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.files
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/2823318777ntouromlalnodry--naod.files
    0	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/2918063365piupsah.files
    9844	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb
    9848	./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome
    9848	./.mozilla/firefox/cddn12sa.default-release/storage/permanent
    0	./.mozilla/firefox/cddn12sa.default-release/storage/temporary
    

5.6 重启,关机

  • 重启reboot
  • 关机,两种方式
    • shutdown -h now:命令会向系统发送信号,通知所有正在运行的进程停止运行,并保存当前的状态,然后关闭系统。
    • poweroff:立即关闭系统电源,不会等待正在运行的进程结束,可能会丢失尚未保存的数据。

5.7 ifconfig,ping,curl,wget,netstat

  • ifconfig,查询网卡的ip地址

  • ping,查看计算机之间是否可以正常通信,域名和ip都可以

    [root@localhost adododes]# ping www.baidu.com
    PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.
    64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=128 time=45.1 ms
    64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=128 time=46.4 ms
    64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=3 ttl=128 time=44.6 ms
    
  • curl,模拟用户访问,模拟浏览器行为。

    curl [options] URL

    curl 命令的常用选项如下:

    • -i :显示响应头信息。
    • -I :只显示响应头信息,不显示响应体。
    • -X :设置请求方法,包括 GETPOSTPUTDELETE 等。
    • -d :设置请求体数据(POST 请求)。
    • -H :设置请求头信息。
    • -o/-O :下载文件,并保存到本地。
    • -u :设置认证信息。
    • -A :设置 User-Agent
    • -s :静默模式,不输出进度信息。
  • wget,下载资源

    wget 资源地址

  • netstat,查看网络连接状态及端口

    netstat -a
    netstat -an 添加-n参数的目的是:不将端口和IP地址转换为名称,而是直接显示数字格式的IP地址和端口号
    

    查看指定端口的网络连接状态:

    netstat -an | grep 端口号
    

6 软件安装与下载

CentOS安装软件的方式主要包括:

  • 源码安装

    源码安装是指从软件的源代码编译并安装到系统中。这种方式通常适用于需要定制编译选项或系统中没有现成二进制包的情况。

  • rpm安装(二进制安装)

    RPM(Red Hat Package Manager)是一种基于二进制的包管理工具,可以直接安装预编译的软件包。CentOS系统使用RPM格式的软件包。

  • yum安装(在线安装)

YUM(Yellowdog Updater Modified)CentOS系统中常用的包管理工具,它通过在线仓库自动下载和安装软件包,并解决依赖问题。

一般用YUM安装,下面是一些常用命令

命令类型命令格式说明
安装命令yum -y install 软件名自动确认安装指定软件。
升级命令yum -y update 软件名自动确认升级指定软件。
升级所有软件yum -y update自动确认升级系统中所有软件。
卸载命令yum remove 软件名卸载指定软件。
列出可安装的软件包yum list列出所有可安装的软件包。
列出已安装的软件包yum list installed列出系统中已安装的软件包。
查询某个软件包yum list 软件名查询指定软件包的详细信息。
根据关键字搜索软件包yum search Keyword根据关键字搜索软件包。
清除缓存yum clean all清除YUM缓存。

以安装JDK为例:

  • yum仓库中搜索jdkyum search jdk
  • 安装jdkyum -y install java-17-openjdk-devel.x86_64
  • 看看jdk的安装目录:
    • which java
    • ls -l /usr/bin/java
    • ls -l /etc/alternatives/java
  • /etc/profile文件中配置环境变量:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-3.el9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
  • 生效:source /etc/profile

7 Shell编程简介

Linux操作系统是一种开放源代码的类UNIX操作系统,它的结构分为内核、Shell和应用程序三个层次。

  • 内核层

    内核是Linux系统的核心部分,它负责管理系统各种硬件设备、文件系统、内存管理和进程管理等核心任务。Linux内核设计了良好的模块化结构,可以动态地加载和卸载内核模块,这使得内核可以兼容各种不同的硬件设备和外围设备。

  • Shell

    Shell是Linux系统的命令行解释器,它负责将用户输入的命令解释并执行。Linux系统上有多种Shell,其中最常用的是Bash ShellBash Shell提供了各种丰富的功能和处理能力,如通配符、重定向、管道、变量等。

  • 应用层

    应用层是Linux系统上的各种应用程序和服务,包括文本编辑器、图形界面、Web服务器、邮件服务器、数据库服务器等。在Linux系统中,应用程序通常以开放源代码方式呈现,用户可以自由学习和使用,也可以根据需求自己编写、修改或扩展。

下面是一个Shell程序,

#!/bin/bash
# 图书馆借阅记录管理系统

# 定义借阅记录数组(模拟图书馆的图书借阅记录)
# readonly 关键字使得这个数组不可修改,确保数据不会被意外篡改
readonly BOOK_RECORDS=(
    "小说:《活着》"
    "科幻:《三体》"
    "小说:《平凡的世界》"
    "科普:《时间简史》"
    "科幻:《银河帝国》"
    "小说:《活着》"
)

# 使用关联数组存储图书类别和借阅次数的统计结果
# 关联数组类似于其他语言中的字典,可以方便地存储键值对
declare -A BOOK_STATS

# 统计函数:遍历借阅记录并统计每种图书的借阅次数
function count_books() {
    # 遍历借阅记录数组中的每一本书
    for record in "${BOOK_RECORDS[@]}"; do
        # 使用 awk 提取图书类别(例如“小说”、“科幻”)
        # $1 表示 awk 中的第一个字段,即图书类别
        category=$(echo "$record" | awk '{print $1}')
        
        # 去除类别末尾的冒号(如“小说:”中的冒号)
        # "${var%:}" 是一种字符串操作,用于去除字符串末尾的冒号
        category="${category%:}"
        
        # 检查当前类别是否已存在于统计数组中
        if [[ -z ${BOOK_STATS[$category]} ]]; then
            # 如果不存在,则初始化借阅次数为 1
            BOOK_STATS[$category]=1
        else
            # 如果存在,则借阅次数加 1
            # 使用 $(( expr )) 进行算术运算
            BOOK_STATS[$category]=$((${BOOK_STATS[$category]} + 1))
        fi
    done
}

# 输出统计结果函数
function show_stats() {
    # 输出统计结果的标题
    echo "图书馆借阅记录统计:"
    
    # 遍历关联数组中的每个类别
    for category in "${!BOOK_STATS[@]}"; do
        # 输出类别和对应的借阅次数
        echo "类别:$category,借阅次数:${BOOK_STATS[$category]}"
    done
}

# 调用统计函数和输出函数
count_books  # 统计借阅记录
show_stats   # 输出统计结果

# 示例输出:
# 图书馆借阅记录统计:
# 类别:小说,借阅次数:2
# 类别:科幻,借阅次数:2
# 类别:科普,借阅次数:1

编写完成并给予执行权限即可执行

chmod +x library.sh
./library.sh

执行结果

图书馆借阅记录统计:
类别:科幻:《银河帝国》,借阅次数:1
类别:小说:《平凡的世界》,借阅次数:1
类别:科普:《时间简史》,借阅次数:1
类别:小说:《活着》,借阅次数:2
类别:科幻:《三体》,借阅次数:1

相关文章:

  • 华为交换机trunk简介配置
  • C# SpinLock 类 使用详解
  • 数据结构:队列(Queue)及其实现
  • promise用法总结以及手写promise
  • Junit——白盒测试
  • 基于opencv的HOG+角点匹配教程
  • learngit git常用指令
  • 多模态特征提取与融合助力高光谱+LiDAR数据分类性能飞跃
  • C++ Primer 类-定义抽象数据类型
  • Windows 10 ARM工控主板CAN总线实时性能测试
  • Qt MSVC 编译器报错 C1060
  • Git 修改或删除某次提交信息
  • Playwright 自动化测试系统学习
  • vue点击左边导航,右边出现页面步骤
  • 《SpringBoot配置风暴》
  • 【记忆化搜索】猜数字游戏Ⅱ
  • 2025年02月14日Github流行趋势
  • TensorFlow 实现任意风格的快速风格转换
  • cs106x-lecture9(Autumn 2017)-SPL实现
  • PLC的集成RAM,存储器卡,用户程序存储空间,数据存储容量分别指的什么,有什么关联?
  • 关税战导致中国商品冲击周边市场?“对美出口减少并未导致对东盟出口激增”
  • 春决火爆的背后,PEL如何做大这块电竞蛋糕
  • 世卫大会连续9年拒绝涉台提案
  • 对话作家吉井忍:“滚石”般的生活,让我看到多种人生可能
  • 石家庄桥西区通报“中药液”添加安眠药问题:对医院立案调查
  • 假冒政府机构账号卖假货?“假官号”为何屡禁不绝?媒体调查