1 文件系统
Linux没有C盘、D盘等盘符概念
Linux 是以 根(顶层目录)(/) 来划分层级关系的
/boot 引导文件夹
/etc 配置文件
/home 普通用户的主目录
/root 管理员的主目录
/bin 命令文件夹
/dev 设备文件夹
2 shell
是命令与操作系统的交互,shell是桥梁
Windows 的shell有 cmd 等
Linux 的 shell 有 bash、sh、csh、zsh 等
3 磁盘操作
3.1 路径
当前路径 ./
上层路径 ../
上上层路径 ../../
家目录 ~ 相当于 /home/用户名 或 /root
3.2 cd
进入某个目录的
案例:cd /home/rh 这叫做进入/home/rh 目录
案例:cd ./ 进入当前
案例:cd ../../ 进入当前目录的上上层
3.3 pwd
显示当前目录位置
3.4 ls
显示某个目录下的文件或文件夹,默认当期目录
-a (这是参数,是对命令功能的扩充) 显示全部
-l 是用列表方式显示
案例:ls /bin 查看 /bin文件夹的内容
案例:ls /etc/alsc 查看 /etc /alsc文件夹的内容
案例:ls -a /etc/alsc 查看的同时,会显示隐藏
4 目录文件
4.1 mkdir
某个位置,创建文件夹,默认当前位置
-p 创建的同时,还创建父文件夹
案例:mkdir 111 当前位置创建 111 文件夹
案例:mkdir /tmp/22 /tmp位置创建 22 文件夹
案例:mkdir -p 11/22/33 创建 33 文件夹,当 11、22不存在时,加上-p会自动创建
4.2 rmdir
只能删除空的文件夹
4.3 touch
某个位置创建文件,默认当前位置
案例:touch 123.txt 当前位置创建 123.txt 文件
5 移动复制删除
5.1 cp
复制( copy),默认只能复制文件
-r 使得cp 可以复制文件夹
案例:cp 111 222 将111 文件 复制到当前位置,新名字222
案例:cp -r aa /tmp/bb 将当前目录的 aa 文件(或文件夹),复制到 /tmp
5.2 mv
移动(move)移动文件或文件夹
案例:mv 123 345 将123 移动到同位置,并改名345
5.3 rm
删除文件
-r 使得rm 可以删除文件夹
-f 忽略交互提示,直接删
案例:rm 123 删除文件
案例:rm -r 345 删除文件或文件夹
6 查找
6.1 find
查找文件
格式:find 从哪里查找 -name 要查找的名字
案例:find /tmp -name 123.txt 从/tmp查找123.txt
案例:find / -name 123.txt 全盘查找123.txt
6.2 whereis
查找命令在哪里、源码在哪里、帮助文件在哪里
案例:whereis mkdir
6.3 which
查找命令在哪里
案例:which mkdir
7 权限
7.1 查看权限
ls -l 查看权限,例如显示:-rwxrwxrwx
- 表示普通文件,如果是 d 则是文件夹
rwx 分三组,分别是 创建者(u)、创建者的组(g)、其他用户(o)
7.2 修改权限
chmod 方式1:用户(ugo)操作符(+-=)权限(rwx)模式
案例:chmod u-w 123 将用户取消写权限
chmod 方式2:八进制模式
r 权值 4
w 权值 2
x 权值 1
案例:chmod 567 123 分析:5 = 4+1 6 = 4+2 7= 4+2+1
此时 相当于设置成 r-x rw- rwx
8 链接
8.1 软链接
1 如同快捷方式
2 可以给文件或文件夹创建软链接
3 可以跨分区卷
案例:ln -s 123 222 给 123 文件或文件夹 创建快捷方式 222
案例:ln -s 123 /tmp/222 给 123 文件或文件夹 创建快捷方式 222到tmp中
8.2 硬链接
1 是相当于给文件起别名
2 只能给文件创建硬链接
3 不可以跨分区卷
案例:ln 123 222 给 123 文件 创建 别名 222
案例:ln 123 /tmp/222 给 123 文件 创建 硬链接 222到tmp中
9 压缩
9.1 压缩文件
默认扩展名为 .tar (无压缩率)
Linux 还支持其他格式的压缩包:.gz 、 .xz 、 .bz2 等(有压缩率)
9.2 压缩格式
-c(创建) -z(支持 .gz 格式) <直接写目录>(用于压缩哪里)
tar -x(解压) -v(查看详情) -C (用于解压缩,解压到哪里)
-t(查看) -f(必写,执行压缩文件) <不写>
【上面三选一】 【上面任意】 【上面三选一】
9.3 案例
案例:tar -cf 123.tar 555 将555 文件夹 打包 成 123.tar
案例:tar -xzf 123.gz 将123.gz 解压到当前目录
案例:tar -xvf 123.tar -C 555 将123.tar 解压到555 文件夹
案例:tar -tf 123.tar 查看123.tar 内容
10 查看磁盘
10.1 lsblk
查看磁盘
10.2 free
查看内存
11 文件管理
11.1 cat
查看文件所有内容
11.2 head
默认查看文件前10行
11.3 tail
默认查看文件最后10行
11.4 more
分屏查看文件内容
交互命令: 回车 下一行, 空格 或 f 下一屏, b 上一屏 , q 退出
11.5 grep
文件内容搜索,返回所在行
用法: grep 要搜索的字符串 文件位置
-n 显示行号
案例:grep a 123.txt 显示包含a的行
12 用户管理(查)
12.1 who
查看当前所有的 登入 用户
12.2 whoami
我是谁
12.3 id
查看指定用户的 uid、gid、groups 编号,默认当前用户
12.4 su
切换用户
用法: su 用户名 ,默认 root
然后,输入 要切换用户的密码
12.5 sudo
使得当前命令,临时具有 root 权限
用法:sudo 命令
然后,输入 当前用户 的密码
注意:要想使用 sudo,满足两个条件
1 知道 当前用户 的密码
2 将当前用户 加入到 /etc/sudoers 中(要想加入,必须知道root密码)
13 用户管理(增)
13.1 useradd
用法:useradd 用户名
参数:
-m 用于同时创建家目录
-g 加入同名用户组
注意:创建用户后,必须立刻创建密码
推荐写法:useradd -m 用户名
13.2 passwd
修改指定用户密码,默认当前用户
用法:passwd用户名
14 用户管理(删)
14.1 userdel
删除指定用户,默认只删除用户,不删除主目录
-r 连同主目录一起删
用法:userdel 用户名
15 用户管理(改)
用法:usermod 参数 用户名
案例:usermod -g 组名 用户名
16挂载和卸载
16.1 mount
挂载,只能root运行
用法:mount /dev/设备名字 位置
16.2 umount
卸载,只能root运行
用法1:umount /dev/设备名字 挂载位置 卸载指定位置的设备
用法2:umount /dev/设备名字 卸载设备,认真听讲的都懂
17 关机、重启
17.1 poweroff
关机,不需要 root 权限
17.2 reboot
重启,不需要 root 权限
17.3 shutdown
计划关机,需要 root 权限
-h 关机
-r 重启
案例:sudo shutdown -r now 立刻重启
案例:sudo shutdown -h 13:00 下午一点关机
18 帮助
18.1 --help
查看,嵌入到程序内部的帮助
案例:命令 --help
18.2 man
查看man帮助文件
案例:man 命令
18.3 help
查看help帮助文件
案例:help 命令
19 进程
19.1 ps
查看进程
案例:ps -aux 查看进程
19.2 top
动态查看所有进程
案例:top
19.3 kill
杀死进程
用法:kill 操作 进程编号
操作:
-1 重启进程
-9 强制杀死
-15 正常杀死
案例:kill -9 6666 强制杀死6666编号的进程
20 时间
20.1 cal
默认显示当前月日历
20.2 date
默认显示当前时间
21 环境变量
21.1 alias
当前终端起别名
用法:alias 别名=命令
案例:alias guanji=poweroff
22 shell编程
22.1 基本知识
扩展名 .sh
文件运行
方式1:bash xxx.sh
方式2:./xxx.sh
要求:文件具有可执行权限、
可以指定终端:第一行写:
#!/bin/终端类型
#! /bin/终端类型
注释
单行注释: #
变量
常量,全部是字符串,没有数字,字符,布尔,浮点等
可以不写引号
单引号(支持空格,原样输出)
双引号(支持空格、转义字符)
变量,定义:变量名=常量值
注意:等号两侧不能有空格
只读变量: readonly 变量名
调用:$变量名
参数置换
b等于a的值
如果a不存在,则出错: b=${a?错误,变量不存在}
如果a不存在,则给新的123: b=${a-123}
如果a不存在,则啥也不错: b=${a+123}
如果a不存在,则a和b,都是123: b=${a=123}
位置参数变量
用于 文件执行调用传参、函数调用传参
echo $@ 打印传入所有参数,形如:”1” ”2” ”3”
echo $* 打印传入所有参数,形如:”1 2 3” (有争议)
echo $0 打印文件名
echo $1 打印传入的第一个参数
echo $2 打印传入的第二个有参数
内部变量
echo $HOME
echo $PATH
echo $RANDOM
echo $PWD
echo $? 表示上一条命令的执行状态
0 表示执行成功
非0 表示执行失败
22.2 输入输出
重定向
重定向到文件,文件不存在,则新建
> 覆盖模式
>> 追加模式
< 将文件内容,输入
>& 将命令结果,覆盖模式输出到文件
echo
打印、输出
-n 不换行
-e 强制开启转义(不同shell不一样)
转移字符
\n 换行
\c 不换行,并截断
printf
与 echo 类似,用的不多
read
从键盘输入
-a 当成数组
-p 提示信息
-n 限定输入长度
-r 源字符串模式
没有 -r 当输入 \ ,则 \ 失效
有 -r 当输入 \,则 \ 生效
案例
read a
echo -e $a
输入:123\n456
结果:123n456
-----------------
read -r a
echo -e $a
输入:123\n456
结果:123
456
-s 安静模式,用于密码
tee
多用于文件交互,多次输入,Ctrl + C 结束输入,默认覆盖
-a 追加
用法:tee 文件名
22.3 字符串
拼接
挨一块儿,就行
案例:a=111’222’”333”
长度
用法: ${#变量名}
截取
用法:${变量名:位置:长度}
位置: 左边,第一个,是0
右边,第一个是 0-1
长度:如果不写长度,直接截取到尾部
22.4 数组
只有一维,没有多维
定义
案例1:a=(12 34 56 78)
案例2:
a[0]=12
a[1]=34
注意:小括号,空格、回车分隔,可以不定义直接用
数组元素调用
用法:${a[0]} ,一定要用 {} 把数组元素括起来
${a[*]} 或 ${a[@]} 是打印所有元素
数组长度
用法:${#a[*]} 或 ${#a[@]} 数组长度
23 运算度
23.1 算数运算符
Shell 本身,不支持算数运算,但可以使用其他命令,使得支持算术运算
例如:expr
真正用法:$[ 数字 运算符 数字 ]
注意:
支持的运算有:+ - * / % **
除法是取整运算
** 是 次幂
23.2 关系运算符
用法1:test 变量值 运算符 变量值
注意:
1 必须有空格
2 支持的运算符有:\> \< = == != -n -z
这是字符串字符(非数字字符)
3 无显性返回值
4 案例: test 2 \> 100 为真
分析: \> 是 比较字符串,2的ASCII比1大
所以 为真
用法2:test 变量值 操作符 变量值
注意:
1 必须有空格
2 支持的操作符有:-eq -ne -gt - lt -ge -le
这是数字字符串
3 无显性返回值
用法3:[ ]
注意:是 test 的简写形式,语法不变
用法4:增强模式 [[ ]]
注意:是 [] 的增强形式,省掉转义,加上转义会出错
用法5:超强模式 (( ))
注意:支持编程语法,只能纯数字字符串
23.3 逻辑运算符
用法1:test、[]
与: -a 英语单词:and
或: -o 英语单词:or
非: !
用法2: [[ ]]
与: &&
或: ||
非: !
用法2:(( ))
编程语言模式
23.4 文件测试运算符
用法: test [ ] [[ ]]
-e 判断 文件或文件夹是否存在
-f 判断是否是 文件
-d 判断是否是 文件夹
-w 判断是否具有 写权限
-r 判断是否具有 读权限
-x 判断是否具有 执行权限
23.5 运算符注意事项
{ } 的运算,里边的变量,不加$一定对,加上就错
(()) 的运算,里边的变量,不加$一定对,加上不一定
[] 的运算,里边的变量,加$一定对, 不加不一定
[[]] 的运算,里边的变量,加$一定对, 不加不一定
24 分支结构
24.1 if … then … else … fi
注意:四个结构,必须在单独行
如果想写一行上,必须 分号 分隔
其他语句,随意换行
24.2 if … then … elif …. then … fi
elif 相当于 嵌套 if ,可以写多个
read a
if (( a > 90 ));then
echo 1111
elif (( a > 80 ));then
echo 2222
fi
24.3 case … in … esac
a=12
case $a in
11) echo 111;;
12)
echo 221
echo 222;;
13) echo 333;;
*) echo 444;;
esac
注意: 11) 表示情况
*) 表示匹配不到时,默认执行的语句
情况的最后,加 ;;
25 循环
25.1 for … in … do … done
a=(1 2 3 4 5 6)
for x in ${a[*]}
do echo $x
done
for x in 1 2 3 4 5 6
do echo $x
done
注意
in 后边是 可遍历常量,不能写括号
25.2 for (( )) … do … done
与编程语言一样
s=0
for(( i=0; i<=100; i++ ))
do
(( s=s+i ))
done
echo $s
25.3 while … do … done
s=0
i=1
while [ $i -le 100 ]
do
s=$[s+i]
i=$[i+1]
done
echo $s
25.4 until … do … done
s=0
i=1
until [ $i -eq 101 ]
do
s=$[s+i]
i=$[i+1]
done
echo $s
注意:
1 until 循环,与while相反
2 until当条件为假,执行循环体
3 until 当条件为真,结束循环体
25.5 控制语句
break
continue
26 函数
26.1 定义函数
方式1
function 函数名() {
… …
}
方式2
函数名() {
… …
}
方式3
function 函数名{
… …
}
26.2 调用函数
函数名
26.3 函数返回值
return
其原理:是返回一个函数执行状态
该状态只能 0-255
一般,我们不用
26.4 作用域
对于变量,默认其作用域 永远是 全局的
要想局部使用变量,加 local
27 软件安装
27.1 认识一下red hat
Fedora 免费个人版,所有软件都是最新的
Centos Stream 滚动版,过渡版本
RHEL 企业版
27.2 本地安装
安装包扩展名是 .rpm
名字: 软件名称-XXXX.rpm
增
安装: rpm -ivh 软件名
-i 安装必写的
-v 安装过程
-h 进度条
删
卸载:rpm -e 软件名称
改
升级:rpm -U 软件名
查
查找:rpm -q 软件名称
-q 软件名
-i 详细信息
-l 包含子文件(小写L)
查找全部: rpm -qa
所有软件
可以和管道搭配,rpm -qa | grep abc
27.3 网络安装
增:安装
yum install 软件名称
删:卸载
yum remove 软件名称
改:升级
yum update 软件名称
查:查询
yum search 软件名称 搜索网络中有是否有这个软件
yum list 列出远程所有软件
28 网络(与系统有关)
28.1 命令
查看本地主机名 hostname
临时设置主机名 sudo hostname 主机名字
永久设置主机名 nano /etc/sysconfig/network
查看ip ifconfig 或 ip a
扫描网络 ping 域名 或 ping [ip]
28.2 网络基本知识
正在上传…重新上传取消
IP:每台电脑,在互联网中,唯一的标志
Mask:划分子网的
Gateway:连接多个不同的子网、网络大门的作用
DNS:用于将字符串网址,转成 数字IP
29服务
restart 重启服务
service 程序名 stop 停止服务
start 开启服务
status 查看服务