一、学习内容
-
shell指令
-
文件相关的指令
-
重定向 > >>
-
echo :打印字符串
-
cat: 在终端打印文件的内容
-
-
-
链接文件
-
硬链接文件:文件的inode号是一样的。
-
查看文件inode号: ls -i
-
格式:ln 被链接的文件 创建硬链接文件
-
1 硬链接的文件类型是普通文件 - 2 修原文件时,硬链接文件也被会修改,反之也一样 3 原文件和硬链接文件的inode号一样 4 创建硬链接文件时, 硬链接文件的个数会增加 5 修改硬链接文件的路径时, 链接关系依然生效 6 不允许对目录创建硬链接文件
-
-
软链接文件
-
软链接:类似与快捷方式。可以对目录进行链接
-
格式: ln -s 绝对路径下被链接的文件 绝对路径下创建的链接文件
-
1 软链接的文件类型是链接文件 l 2 修原文件时,软链接文件也被会修改,反之也一样 3 原文件和软链接文件的inode号不一样 4 创建软链接文件时, 硬链接文件的个数不会增加 5 在创建软链接文件时需要使用绝对路径,原因,防止修改链接文件路径时失效 修改软链接文件的路径时, 链接关系不生效 6 允许对目录创建软链接文件
-
-
压缩\解压缩\归档\拆包
-
压缩\解压缩
-
压缩、解压缩:原文件会消失,且只能对文件操作
-
Linux的压缩格式: xz\gz\bz2 压缩: bzip2 要压缩的文件 ----->XXXX.bz2 gzip 要压缩的文件 ----->XXXX.gz xz 要压缩的文件 ----->XXXX.xz 解压缩: bunzip2 解压的文件.bz2 gunzip 解压的文件.gz unxz 解压的文件.xz 压缩效率: xz > bz2 > gz
-
-
归档\拆包 tar
-
归档、拆包: 原文件存在,可以对多个文件或者目录操作
-
-j ---bzip2 -J ---xz -z ---gzip -f ---file -x ---拆包 -c ---归档 -v ---显示详细过程 归档: tar -cvf XXX.tar 要归档的文件名\目录 拆包: tar -xvf XXX.tar 归档并压缩: tar -jcvf XXX.bz2 要归档压缩的文件名\目录 tar -Jcvf XXX.xz 要归档压缩的文件名\目录 tar -zcvf XXX.gz 要归档压缩的文件名\目录 拆包并解压缩: tar -jxvf XXX.bz2 tar -Jxvf XXX.xz tar -zxvf XXX.gz
-
归档、拆包
-
归档压缩 、 拆包解压
-
-
-
磁盘指令
-
磁盘连接ubuntu
-
方式1
-
方式2
-
-
查看是否连接成功
-
指令: ls /dev/sd*
-
-
查看磁盘的使用情况 df
-
指令:df (保证u盘未出现挂载点,否则后面创建分区等操作失败)
-
取消挂载点 指令: sudo umount 挂载点\挂载分区
-
-
磁盘实现 创建、删除 fdisk
-
从u盘h中拿取一点空间 ,进行相关操作
-
格式
-
sudo fdisk 指定的磁盘路径 (创建分区)
-
sudo fdisk /dev/sdc (u盘的主盘、而不是sdb1、2)
-
常规 d 删除分区 F 列出未分区的空闲区 l 列出已知分区类型 n 添加新分区 p 打印分区表 t 更改分区类型 v 检查分区表 i 打印某个分区的相关信息 保存并退出 w 将分区表写入磁盘并退出 q 退出而不保存更改
-
-
-
-
格式化磁盘分区 mkfs
-
格式: sudo mkfs.ntfs /dev/sdc2
-
-
挂载
-
在ubuntu操作系统中,万物皆文件,所以认为u盘也是文件,把u盘挂载到一个目录下 操作目录等价于操作U盘
-
挂载: sudo mount 挂载分区 挂载点 取消挂载 sudo umount 挂载分区 挂载点
-
-
-
-
用户相关指令
-
查看用户名
-
whoami
-
-
新建用户名
-
sudo adduser 用户名
-
-
切换用户
-
su 用户名
-
-
修改密码
-
sudo passwd 用户名
-
-
删除用户
-
sudo userdel 用户名
-
sudo userdel 用户名 -r
-
-
-
开关机指令
-
关机指令: sudo shutdown 10:00 在10:00关机 sudo shutdown +10 在10分钟后关机 sudo shutdown now 立马关机 shutdown -c 取消关机或重启 重启指令: sudo shutdown -r 10:00 在10:00重启 sudo shutdown -r +10 在10分钟后重启 sudo shutdown -r now 立马重启
-
-
-
shell脚本
-
编程语言的分类
-
面向过程:C
-
面向对象:C++ java
-
编译型语言:
借助于编译器进行编译,在编译源文件时,只要不修改文件,只需要编译一次,后期可以直接运行,效率高。如果修改,则需要再次编译。 -
解释型语言:
shell 需要借助于解释器,每执行一个源文件则需要解释一次,效率低,但是可以和内核交互。
-
-
什么是shell
-
shell: 贝壳 保护
-
作用:保护内核,输入一个shell指令, 需要使用shell解释器解析shell脚本,操作内核。
-
-
第一个shell
-
shell脚本是一个.sh文件
-
shell本质就是指令的集合, 但是指令需要满足一定的逻辑
-
1. #!/bin/bash #! 表示这是一个脚本文件 /bin/bash 表示使用的解析器 2. shell中的注释 # 单行注释 <<名 ----->多行注释 名 eg : <<a 注释内容 a
-
-
shell脚本的解析器
-
查看shell脚本使用的解析器
-
echo $SHELL 或者 cat /etc/shells
-
-
常见的解析器
-
bash 用于ubuntu和debian操作系统
-
sh 最早的解析器,和终端交互性差
-
dash 类似于sh
-
csh 类似于c语言,健壮性差
-
ksh 需要许可证
-
-
运行.sh文件的方式
-
bash XXX.sh
-
chmod 777 XXX.sh ./XXX.sh
-
source XXX.sh
-
-
-
修改环境变量
-
可以将 f2.sh 直接类似于 ls 一样直接使用 ,那么需要修改环境变量
-
查看环境变量
-
指令: env
-
环境变量=环境变量的值
-
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ubuntu/zsq/c/try/gg:/home/ubuntu/zsq/c/try/gg/ 【ls 就在这个路径 修改环境变量 --->方便 】
-
-
在当前终端有效
-
1. 在终端输入以下语句 export PATH=$PATH:/home/ubuntu/81/zz | | PATH变量的值 添加的新路径 | 环境变量 类似extern,引用环境变量 2. 给文件添加可执行权限 chmod 777 XXX.sh 3. 运行 XXX.sh
-
-
对当前用户有效(常用)
-
需要在 ~/.bashrc 文件添加语句
-
1. 打开~/.bashrc 文件添加语句 export PATH=$PATH:/home/ubuntu/81/zz | | PATH变量的值 添加的新路径 | 环境变量 类似extern,引用环境变量 2. 需要文件生效 source ~/.bashrc 3. 添加权限:chmod 777 XXX.sh 4. 运行 XXX.sh
-
查看
-
打开修改
-
使得文件生效
-
-
-
-
脑图
二、总结
学习内容概述
1. Shell编程基础:
介绍了Shell的基本概念、工作原理以及常见的Shell编程命令,如变量定义、条件判断、循环控制等内容。通过实战演练,学习如何编写Shell脚本来自动化任务。
2. Shell脚本实例:
使用Shell脚本解决具体问题,包括文件操作、字符串处理以及系统命令的调用。并通过案例演示了Shell脚本的常用结构和逻辑。
3. Linux文件系统:
学习Linux文件系统的层次结构,理解不同目录的用途,以及如何通过命令进行文件操作,如 `ls`、`cd`、`mkdir`、`rm` 等命令的使用。
4. 进程管理与控制:
学习了Linux系统中的进程控制命令,了解如何使用 `ps`、`top`、`kill` 等命令查看和管理系统中的进程。
5. 文件权限与用户管理:
学习文件权限的表示方式及其更改方法,掌握 `chmod`、`chown` 等命令对文件权限和用户的管理。
6. shell变量与函数:
深入学习Shell中的变量、环境变量以及函数定义与调用。理解局部变量和全局变量的区别,并学会如何在脚本中有效地使用函数。
学习难点
1. Shell脚本的逻辑编写:
编写复杂的Shell脚本时,逻辑控制(如条件判断、循环)的设计是难点,特别是在处理多个条件时需要考虑优先级和效率。
2. 权限管理与进程控制:
在多用户环境中,正确设置文件的权限及管理进程的优先级是难点,理解不同权限对文件操作和进程管理的影响尤为重要。
3. 环境变量与作用域:
Shell脚本中的变量作用域管理是学习难点,特别是全局变量和局部变量的使用与冲突的解决。
4. 进程的调度与优先级控制:
如何通过系统命令对进程进行调度与优先级管理,特别是在复杂任务执行时的进程调优和资源分配。
主要事项
1. Shell脚本的编写:
掌握基本的Shell语法,包括变量、循环、判断结构。能够通过脚本自动化处理常见的系统操作,提升工作效率。
2. 文件系统操作与权限管理:
理解Linux文件系统的结构,掌握常见文件操作命令,同时正确设置文件的权限和用户组,确保文件的安全性。
3. 进程管理与调优:
通过 `ps`、`top`、`kill` 等命令有效监控系统进程,掌握进程优先级的调节方法,确保系统资源合理分配。
4. Shell函数的使用:
通过Shell函数将复杂的操作分解成小的功能模块,提高脚本的可读性和复用性,掌握函数传参和返回值的处理。
未来学习的重点
1.高级Shell编程技巧:
继续深入学习Shell脚本的高级技巧,如正则表达式的使用、信号处理、并发编程等,提升脚本的复杂任务处理能力。
2. Linux系统安全管理:
进一步学习Linux的安全机制,特别是文件权限的精细化管理和用户权限的分配,提升对系统安全的掌控能力。
3. Shell脚本调试与优化:
学习如何对Shell脚本进行调试,排查错误,优化脚本的执行效率,特别是在处理大规模数据或复杂系统任务时的性能调优。
4. 多进程与并发控制:
学习在Shell中进行多进程管理的技术,特别是如何处理并发任务,确保系统资源的高效利用与任务执行的稳定性。