一、磁盘相关命令
1.查看磁盘信息
sudo fdisk
sudo fdisk -l
2.查看磁盘挂载情况
sudo -h
3.挂载磁盘
sudo mount 设备名(/dev/sda) 挂载的目录
解除挂载
sudo umount /dev/sda1
4.对磁盘的操作
m
n
d
p
f
l
i
t
v
w
q
5.指定磁盘格式
FAT32格式不允许存储单个文件超过4G的
NTFS格式允许
sudo mkfs.fat32 /dev/sda
sudo mkfs.ntfs /dev/sda
二、环境变量
1.概念
环境变量是保存系统运行信息和启动信息的变量。
显示系统中已有环境变量信息:env
显示环境变量的值:$echo 环境变量名
2.常见环境变量
USER 保存当前使用的用户
HOME 保存当前用户的家目录
PWD 保存当前所在路径
OLDPWD 保存上一次所在路径
PATH 保存可执行文件的路径
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
需要在看视频
3.修改环境变量的方式
方式1:只对当前终端生效
直接在当前终端执行
export PATH=$PATH:new path//注意:并不是所有的环境变量都需要追加赋值
生效方式:立即生效
方式2:对当前用户生效
修改用户家目录下的 .bashrc文件
将生命环境变量的语句追加到文件最后,由于该文件每次打开终端都会被执行
所以相当于对当前用户生效(每个用户都有自己的.bashrc文件)
export PATH=$PATH :new path
生效方式:重新打开终端或 source ~/.bashrc
方式3:对所有用户生效 ----不常用
修改 /etc/profile 文件
将声明环境变量的语句追加到文件最后,
由于该文件每次启动系统时都会被执行,所以相当于对所有用户生效
export PATH=$PATH:new path
生效方式:重启系统生效 或者 sudo source /etc/profile 立即生效
三、网络基础
1.ip地址
ip地址:就是主机在网络中的编号
ip地址分类:ipv4(4字节)
ipv6(6字节)
ipv4地址的组成:点分十进制192.168.10.20",把二进制转换为人看着方便的十进制
1100 0000 1010 1000 0000 1010 0001 0100
ipv4地址组成:网络号和主机号组成
四、shell编程
1.shell,shell命令,shell脚本
shell:是命令行解释器
shell命令:终端上敲得命令
shell脚本:一个.sh结尾的文件,其内容是命令的集合,以及一些复杂的逻辑,解释型语言
作用:批量的执行命令
mkdir ~/subdir1 ~/subdir2
cp /etc/passwd subdir1
cp /etc/group subdir2
mv subdir2 subdir
sudo -Jcvf subdir1.tar.xz subdir1
mv subdir1.tar.xz subdir
cd ~/subdir
tar -xvf subdir1.tar.xz
#tar -xvf ~/subdir/subdir1.tar.xz -C ~/subdir或者一步到位
ls
解归档带路径要加-C
格式:tar 选项 /路径/tar包 -C(大写) /路径/目标位置
-C 是指要解压到的路径,要注意-C是在文件路径之后的
2.执行方式
方式1:./脚本名
方式2:bash 脚本名
方式3:source 脚本名
三种执行方式的区别:
1、./脚本名方式执行需要家执行权限(chmod u+x 脚本名)其他两种不需要执行权限
2、./脚本名和bash 脚本名是在后台打开了一个新终端执行,并兼执行完的结果返回给当前终端
source 脚本名是在当前终端执行
3.shell中变量
不用提前定义,直接用
shell默认都是字符串类型,没有整型浮点型之分
shell使用变量时,一般都大写
shell每条语句结束后不用加分号
shell中的变量也要符合标识符的命名规范:
1.数字、字母、下划线组成
2.不能以数字开头
3.不能和shell的关键字冲突(ls cd pwd..)
4.shell引用变量的值
$变量名 或${变量名}
清空变量的值
unset 变量名
#!/bin/bash
# 上面开头的第一行表示指定解析该脚本的默认解析器是 /bin/bash
# 赋值的语句 = 前后不要加 空格
VALUE1=helloworld
echo VALUE1 #VALUE1
echo $VALUE1 #helloworld
# echo 就是输出的指令 类似于C语言中的 printf echo自带换行符
# 如果字符串中有空格 那么赋值时就必须加 单引号 或者 双引号了
VALUE2="hello ls"
echo $VALUE2
VALUE3='hello ls'
echo $VALUE3
#单引号和双引号的区别
#双引号中可以引用其他变量的值 而单引号不可以
VALUE4=hqyj
VALUE5="hello $VALUE4"
echo $VALUE5 #hello hqyj
VALUE6='hello $VALUE4'
echo $VALUE6 #hello $VALUE4
# $变量名 和 ${变量名} 区别
VALUE7=beijing
VALUE8=$VALUE7nihao
echo $VALUE8 #空的 因为会把 VALUE7nihao 当作变量名了 没有这个变量 值就是空的
VALUE9=${VALUE7}nihao
echo $VALUE9 #beijingnihao
# unset 可以清空变量的值
VALUE10=1234
echo ${VALUE10} #1234
unset VALUE10
echo ${VALUE10} #空的
shell中既可以使用自定义的变量,也可以使用环境变量。看视频
#!/bin/bash
BEIJING=12345
echo $BEIJING
echo $PATH
练习:
定义两个变量AA和BB,让AA保存环境变量PATH的值
让BB保存环境变量 HOME 的值
交换AA和BB的值,并输出。
5.shell中的位置变量
位置变量相当于C语言中 main函数的参数
$0 脚本名
./脚本名
bash 脚本名
source 脚本名
$1-$9 表示执行脚本时 在命令行传的 第1到第9个参数
如果参数超过9个 就需要用 ${} 了,如${20}
$@ 命令行所有参数
$* 命令行所有参数
$$ 执行脚本进程号
$# 命令行所有参数个数
$? 上一条命令是否执行成功(成功 0 失败 1)
6.变量的作用域
shell中如果没有特殊说明,变量都是全局变量
如果想要局部变量,加local关键字
#!/bin/bash
#shell中的函数定义
function my_func(){
VALUE1=hello
local VALUE2=beijing
}
my_func #shell中的函数调用
echo $VALUE1 #hello
echo $VALUE2 #空的
7.只读变量
使用 readonly 关键修饰的变量都是只读变量
#!/bin/bash
readonly VALUE1=hello
VALUE1=beijing #错误的 只读的
echo $VALUE1
8.命令置换符
作用:将命令执行的结果赋值给变量
`` 注意:这个不是单引号 这是反引号 键盘上1前面的按键
$()
#!/bin/bash
LIST1=`ls`
echo $LIST1
LIST2=$(pwd)
echo $LIST2
9.shell中的注释
shell中本质上只有单行注释 使用 # 表示注释
如果想使用多行注释,可以用下面的用法:
:<<EOF
多行
注释
EOF
注意:这种用法实际上是利用了输入重定向符的规则,如果注释的内容中
有输入的指令,注释可能会出问题,所以,不建议使用
10.字符串相关的操作
i.求字符串长度--strlen
#!/bin/bash
STRING1="hello world"
STRING2=${#STRING1}
echo $STRING2
echo ${#STRING}
ii. 字符串的拷贝--strcpy
#!/bin/bash
STRING1="hello world"
STRING2=$STRING1
echo $STRING2
iii.字符串的追加--strcat
#!/bin/bash
STRING1="love"
STRING2=${STRING}seventeen
STRING3="${STRING}seventeen"
STRING4="LOVE" "SEVENTEEN"#双引号里面随便加空格 两个双引号中间不能加空格
echo STRING2
echo STRING3
echo STRING4
STRING3="abcd"
STRING3="$STRING1 $STRING3 hqyj"
echo $STRING3
STRING4="hello "" world" #双引号里面随便加空格 两个双引号中间不能加空格
echo $STRING4
STRING5='hello '' world' #单引号里面随便加空格 两个单引号中间不能加空格
echo $STRING5
iv.字符串截取
#!/bin/bash
STRING1="EFHGOEIGJERO ERGERGREG"
# 0123 321
STRING2=${STRING1:4}#从STRING1第4位开始 一直截取到最后
echo $STRING2
STRING3=${STRING1:4:4}#从STRING1第4位开始 截取4个字符
echo $STRING3
STRING4=${STRING1:0-6:6}#从STRING1的倒数第6位 一直截取到最后
echo $STRING4
正着数从0开始,倒着数从1开始
带空格的字符串要用双引号或单引号括起来,到这截需要0-
11.shell中的数组
shell中只有一维数组,用()表示也不需要提前定义
shell中数组也是字符串类型
ARR=(1 4 89 HELLO 'nihao' "dkdfd")
ARR2=([0]=123 [5]="asd")
echo ${ARR[@]}
echo ${ARR2[*]}
#给数组元素重新赋值
ARR[0]="wasd"
#获取数组元素的值
# ${数组名[下标]}
echo ${ARR[0]}
#获取数组元素的个数
# ${#数组名[@]}
# ${#数组名[*]}
echo ${#ARR[*]}
echo ${#ARR2[@]}
#数组元素的追加
ARR3=(${ARR[@]} "321" 'weef')#在后面追加
echo ${ARR3[@]}
ARR4=(123 wife ${ARR2[@]} )
数组元素的追加用()