LINUX OS
Linux系统基础
MBR:主引导记录
grub2引导 (grub「grand unified bootloader 宏大的统一引导启动程序」:幼虫,搜寻)
- boot.img
- core.img
- *.mod
- grub.cfg a. 未独立/boot:/boot/grub2/grub.cfg b. 独立/boot:/grub2/grub.cfg
- grun2-setpassword:设置引导密码
init:PID=1(进程号)
- centos7第一个进程:systemd(配置文件:/usr/system/systemd/)
- 执行登录 /bin/login
demesg | less:“|”管道符,左侧命令输出作为右侧的输入
/dev:设备 –> 文件
/usr:unix shared resources(共享资源)「类似win的Program Files」
/src:原文件
/tmp:临时文件
/var(variable):日志文件、打印机脱机工作文件、缓冲区
/opt(option):选项文件
/mnt(mount):挂载
cd:change directory
文件类型:
- d:目录
- l:链接
- b:块设备
- c:字符设备文件
- -:普通文件
文件权限:
- 用户组:U / G / A
- 九位字母表示法:d[文件类型] rwx[文件属主] r-x[同组用户] r–[其他用户]
cat快速编辑:
- cat>test
- [输入字符]
tail & head:查看后十行,前十行 //-n num : 指定行数
mdir [ -m ] [ -p 目录名 ]
rmdir(remove dir):用于删除空目录
- rm -r
touch:修改时间属性 * (不存在)创建文件
软链接:ln -s
硬链接:ln
- 以文件副本形式存在,不占用实际控件
- 不允许目录硬链接
- 只有在同一个文件系统才允许硬链接
查找类:which、whereis、find、grep
文件重定向:
- /dev/stdin:标准输入文件
- /dev/stdout:标准输出文件
centos镜像源文件的目录默认路径:
/etc/yum.repos.d/
备份:
cp /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.bak
换源
下载国内常用的镜像源并重命名为CentOS-Linux-BaseOS.repo,将其作为当前系统的镜像源
+【阿里源】
1
2##CentOS 8
wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.aliyun.com/repo/Centos-8.repo在使用阿里云的 centos8 的 yum 时报错:由于centos8 在2022年停止服务,后继版本为8-steam
1
2##CentOS 8-stream
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo1
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
【网易源】
1
wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.163.com/.help/CentOS8-Base-163.repo
『添加epel源』
1
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
『清华源』:Guide
清理缓存
yum的缓存文件的存放目录是以下路径下:/var/cache/yum 直接清空给目录,或者使用一下命令均可
1
yum clean all
重新生成缓存
1
yum makecache
常用操作
1
2
3
4
5
6yum update
yum makecache
yum clean all
yum info [pagename]
yum list
yum searchSHELL
shell概念
- shell程序就是一个包含若干行shell或者linux命令的文件.
- 像编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如ⅥM等.
- 在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.
- 执行shell程序文件有三种方法
- #chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样)
- #. file
- #sh file
- #source file
- 在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序(如:#! /bin/bash,#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .)
- 接口概念:在计算机体系结构中,操作系统是最接近硬件的软件部分,其更侧重从软件和功能的角度出发去描述部件,所以称之为设备控制器;而在计算机组成原理中,研究的重点在于硬件组成部分,其更青睐于从硬件的角度出发去描述部件,所以称之为I/O接口。
各类Shell
1 | echo $SHELL |
bash
zsh
zshell简介:Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。
zshell发展历史:Zsh初版由原作者保罗·弗斯塔德(Paul Falstad)于1990年在普林斯顿大学求学时编写 [3] 。其名称zsh源于普林斯顿大学助教的邵中(Zhong Shao,现任耶鲁大学教授)——保罗将邵中的用户名”zsh”作为此Shell的名称
zsh美化
SHELL文件类型
/ vim test1.sh
1
2chmod +x test1.sh
./test1.sh1
sh test1.sh
SHELL基本操作
变量赋值调用
1
echo $0 $1 $2
1
2sh echotest1.sh 0 1 2 3
output:0 1 2expr:数值计算
“+、-、\、/、%”
用法:“ $ () ”、“$ []”
1
2expr 2 + 3
# output:5
shell脚本
1
2
3
4cd /home
touch test1
mkdir test1
mv test1 /test1判断语法(a[]、test ?)
文件类判断
- -e filename #如果 filename为目录,则为真
- -f filename #如果 filename为常规文件,则为真
- -L filename #如果 filename为符号链接,则为真
- -r filename #如果 filename可读,则为真
- -w filename #如果 filename可写,则为真
- -x filename #如果 filename可执行,则为真
- -s filename #如果文件长度不为0,则为真
- -h filename #如果文件是软链接,则为真
数值比较判断
- -eq:等于为真
- -ne:不等于为真
- -lt:小于为真
- -le:小于等于为真
- -gt:大于为真
- -ge:大于等于为真
字符串判断
- str:str非空,真
- s1 = s2
- s1 != s2
- -n str:str不为0,真
- -z str:str为0,真
组合语法
- !:逻辑非
- -a:逻辑与
- -o:逻辑或
- ( ):表达式分组,优先级区分
#如果==文件夹==不存在,则创建文件夹
1
2
3
4tempPath="/home/parasaga/blank"
if [ ! -d "$tempPath" ];
then mkdir $blankPath
fi#如果==文件==不存在,则创建文件
1
2
3
4tempFile="/home/parasaga/blank/error.log"
if [ ! -f "$tempFile" ];
then touch $tempFile
fi1
2
3
4
5if [ ! -f test1 ]
then echo "flase"
else
echo "true"
fi演示示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20read s1
if [ $s1 == 1 ]
then echo 123
mkdir shell1
elif [ $s1 == 2 ]
then echo 321
mkdir shell2
else
echo finding
if [ -d shell1 ]
then rm -r shell1
echo ok1
fi
if [ -d shell2 ]
then rm -r shell2
echo ok2
else
echo false
fi
fi
函数定义
1
2
3functionname
{
}1
2
3
4
5
6
7
8
9
10function getSum(){
SUM=$[$n1+$n2]
echo "sum=$SUM"
}
read -p "请输入第一个参数n1:" n1
read -p "请输入第二个参数n2:" n2
# 调用 getSum 函数
getSum $n1 $n2循环语句
while
1
2
3
4while 条件(为真时执行)
do
语句
doneuntil:测试发生在循环末尾,因此循环至少执行一次
1
2
3
4until 条件
do
语句
donefor
1
2
3
4for 变量名 [ in 数值列表 ]
do
语句
doneexit 0