终端指令后续
1.磁盘指令
- 常用命令:
n
新建分区d
删除分区p
显示分区表w
保存并退出q
不保存退出
- 注意事项:
- 操作前需卸载设备
- 分区后需格式化才能使用
1.2 mkfs(格式化工具)
- 功能:创建文件系统
- 格式:
bash
sudo mkfs.文件系统类型 分区设备
- 常用类型:
mkfs.ntfs
:Windows兼容格式mkfs.ext4
:Linux常用格式mkfs.vfat
:FAT32通用格式
- 示例:
bash
sudo mkfs.ntfs /dev/sdb1
2. 挂载管理
2.1 mount(挂载)
- 功能:将存储设备关联到目录
- 格式:
bash
sudo mount 设备路径 挂载点
- 示例:
bash
sudo mount /dev/sdb1 /mnt/usb
- 注意事项:
- 推荐使用绝对路径
- 挂载点需为空目录
2.2 umount(卸载)
- 功能:解除设备关联
- 格式:
bash
sudo umount 设备路径|挂载点
- 强制卸载:
bash
sudo umount -l 强制卸载
3. 磁盘状态查看
3.1 df(磁盘空间)
- 功能:显示磁盘使用情况
- 常用选项:
-h
人性化显示(自动转换单位)-a
显示所有文件系统
- 示例:
bash
df -h /dev/sdb1
3.2 lsblk(设备列表)
- 功能:显示块设备树状图
- 常用选项:
-f
显示文件系统类型-o
自定义显示列
- 示例:
bash
lsblk -f
4. U盘完整处理流程
-
检测设备:
bash
ls /dev/sd* # 查看新增设备
-
分区操作:
bash
sudo fdisk /dev/sdb
-
格式化:
bash
sudo mkfs.vfat /dev/sdb1
-
挂载使用:
bash
mkdir ~/usb_drive sudo mount /dev/sdb1 ~/usb_drive
-
卸载设备:
bash
sudo umount ~/usb_drive
5. 高级操作
5.1 永久挂载
- 编辑fstab:
bash
sudo vim /etc/fstab
- 添加格式:
markdown
/dev/sdb1 /mnt/usb ntfs defaults 0 0
5.2 分区恢复
- testdisk工具:
bash
sudo apt-get install testdisk sudo testdisk
6. 注意事项
- 操作前务必备份重要数据
- 卸载失败常见原因:
- 有进程正在访问设备
- 当前位于挂载目录中
- NTFS格式需要安装额外驱动:
bash
sudo apt-get install ntfs-3g
shell脚本编程
1.基本概念
1.什么是shell
shell: 贝壳,本质是指针的集合,但是在使用时需要满足一定的逻辑
2.shell的功能
shell是用于用户和操作系统的交互核心接口
3.语言分类
c:属于编译型语言,需要使用gcc进行编译,当文件不改变时,不需要重新编译,直接连接即可,执行速度快
shell:属于解释性语言,使用解析器bash,无论文件是否改变,每次都需要重新解析,相对来说效率低
二、创建shell脚本
1.shell脚本:使用文件***.sh
vim ***.sh
2.补全脚本文件
#! 后面敲一个tab键
#!/bin/bash ---->表示使用的时bash解析器
#! ---->表示这是一个脚本文件
/bin/bash --->表示使用的解析器的路径
3.使用shell
.单行注释
# ---》单行注释
2.shell不存在多行注释,但是可以使用指令模拟多行注释,注意在使用过程中有可能出现报错
<<CONMEND
COMMEND
COMMEND:类似标识符
三、认识解析器
1.查看解析器
1)echo $SHELL -->打印SHELL变量的值
2)cat /etc/shells
2.认识相关解析器
bash: 在Linux\debian默认使用的就是 bash
sh :最早期的解析器,交互性差
dash:是轻量级的sh,类似sh
csh:类似C语言
ksh:兼容sh csh
3.运行一个脚本文件
1.执行脚本文件
bash ****.sh 默认在当前终端下的子终端运行,把运行结果返回到当前终端
2.执行脚本文件,具备可执行权限
chmod 777 ***.sh 默认在当前终端下的子终端运行,把运行结果返回到当前终端
./***.sh
3.执行脚本文件
source ***.sh 直接在当前终端运行
四、环境变量
1.查看环境变量
env
环境变量:系统已经定义的变量,并表示一定的含义
SHELL=/bin/bash
LOGNAME=ubuntu
HOME=/home/ubuntu
USERNAME=ubuntu
USER=ubuntu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/
如果文件类似指令执行,那么就需要把文件的路径添加到PATH环境变量里面
2.如何修改PATH路径
2.1 只对当前终端有效
1.修改PATH里面的值,
export PATH=$PATH:/home/ubuntu/24121C高级/day2/
| | | |
| | | 需要添加的文件路径
| | 展开PATH的值
| 环境变量的路径
类似extern,导出环境变量
注意可以使用echo $PATH查看PATH里面的内容
2.给文件添加可执行权限
chmod 777 ***.sh
3.执行使用文件名执行脚本即可
****.sh
2.2 对当前用户有效~/.bashrc
1.打开vim ~/.bashrc文件,在最后添加以下语句
export PATH=$PATH:/home/ubuntu/24121C高级/day2/
| | | |
| | | 需要添加的文件路径
| | 展开PATH的值
| 环境变量的路径
类似extern,导出环境变量
2.使文件生效
source ~/.bashrc 或者 重启
3.给文件添加可执行权限
chmod 777 ***.sh
4.执行使用文件名执行脚本即可
****.sh
2.3 对所有用户有效
1.打开sudo vim /etc/bash.bashrc文件,在最后添加以下语句
export PATH=$PATH:/home/ubuntu/24121C高级/day2/
| | | |
| | | 需要添加的文件路径
| | 展开PATH的值
| 环境变量的路径
类似extern,导出环境变量
2.使文件生效
source /etc/bash.bashrc 或者 重启
3.给文件添加可执行权限
chmod 777 ***.sh
4.执行使用文件名执行脚本即可
****.sh
2.4 对所有用户有效
1.打开sudo vim /etc/environment文件,在最后添加路径
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ubuntu/24121C高级/day2/"
2.使文件生效
source /etc/environment 或者 重启
3.给文件添加可执行权限
chmod 777 ***.sh
4.执行使用文件名执行脚本即可
****.sh
五、shell的变量
5.1 shell变量的格式
1,shell的不变量不存在类型,默认都是字符串
2.shell的变量默认都是全局变量
1.shell变量的格式
变量 error,因为shell认为是指令类似ls
变量= 定义了变量值为空
变量=初始化的值
2.例如
a error
a= √
a=hello √
5.2 shell变量的初始化
1.shell初始化时等号的左右两端不允许存在空格
2.shell中不需要加分号
a = hello ---> ls -l -h 1.sh
1.格式
变量=初始化的值
变量='初始化的值'
变量="初始化的值"
2.当初始化的值不存在空格时
var=hello
var='hello'
var="hello"
3.当初始化的值存在空格
var=hello world error
var='hello world' √
var="hello world"
4.当一个变量给另一个变量赋值的时候
a=hello
b=$a --->b=hello
b='$a' --->b=$a
b="$a" ---b=hello
c=$aworld -->认为aworld是一个变量,得不到helloworld
c=${a}world -->c=helloworld
5.变量的连接
a=hello
b=world
c=$a$b -->c=helloworld
c='$a$b' --->c=$a$b
c="$a$b" --->c=helloworld
练习:定义a赋值 b赋值,实现ab的交换
a=2
b=3
t=$a
a=$b
b=$t
5.3 引用shell的变量的值
方式1:
$变量名 ---》echo $SHELL
方式2:
${变量}
5.4 位置变量
1.位置变量类似C语言的argc argv
2.位置变量多用于shell中的函数传参
$0 终端输入的文件名
$1 终端输入的第一个字符串
$2 终端输入的第二个字符串
$3 终端输入的第三个字符串
...
$10 终端输入的第一个字符串后面加0
${10} 终端输入的第10个字符串
$n 终端输入的第n个字符串
六、输出
6.1 echo
注意:在shell中使用变量时不建议使用'',原因时因为单引号引起来以后不会展开结果
echo 字符串 ---》echo hello
echo '字符串' ---->echo 'hello'
echo "字符串" ---->echo "hello"
输出变量:
a=1
b=2
c=3
echo a=$a --->a=1
echo a=$a b=$b c=$c -->a=1 b=2 c=3
echo 'a=$a b=$b c=$c' -->a=$a b=$b c=$c
echo "a=$a b=$b c=$c" -->a=1 b=2 c=$3