Linux基础

2019年2月6日
安装linux系统注意的地方
1,KUDUMP 初始化内核,建议不开启,内存足够大才可以安装
2,虚拟机搭建好,网络配置完成后创建快照
3,创建一个普通用户,尽量不要用root用户操作
4,lsblk 查看分区大小 呈树状显示
5,终端连接:secrt工具或者xshell工具
6,lscpu查看cpu核数
7,内核最好用稳定的版本,新的出BUG机率比较大
8,终端名查看:tty
9,查看显示当前登录的用户名: whoami
10,交互式接口:GUI 图形化界面
11,提示符:#代表管理员 $代理普通用户
12,如何区分生产环境与测试环境,防止误操作
PS1变量设置颜色
(1),将下面的变量赋值写入到.bash_profile
(2),PS1=[\e[36;34m][[\e[36;40m]\u[\e[36;34m]@\h [\e[36;34m]\w[\e[0m]]$
(3),终端退出重新登录
13,type查看是内部命令还是外部命令
外部命令:访问磁盘文件调用
内部命令:访问内存调用
外部命令搜索路径:PATH变量
whereis 显示命令的位置更详细
hash:将外部命令加载到内部命令验证
14,对于比较长的命令定义别名
注意:设置必须存入配置文件bashrc(添加或删除别名)
查看系统中所有别名:alias
取消别名设置:unalias 别名 (临时修改)
修改配置文件生效:source .bashrc或者 . .bashrc
15,如果把命令设置成别名,如何查看原始命令?
使用原始命令: “命令” 或者 ‘命令’
注意:
1,别名优先于原始命令,内部命令优先于外部命令
2,多个命令之间用分号隔开执行
3,命令与命令之间用空格隔开
4,取消或者结束ctrl+c,ctrl+d
5,命令换行
6,注意设置别名路径要加cd,否则别名设置无效
日期和时间
系统时间:由Linux内核决定的 date
硬件时间:clock
同步系统时间到硬件时间:clock -w
时间修改:date -s “日期时间”
系统时间覆盖硬件时间:clock -s
17,修改centos7的网卡名称为eth
配置文件/boot/grub2/grub.cfg
位置:linux16 UTF-8 net.ifnames=0
最后加入net.ifnames=0 biosdevname=0
验证生效:grub-mkconfig -o /boot/grub2/grub.cfg
同等在/etc/default/grub rhgb quite中加入 net.ifnames=0 biosdevname=0
重启网卡
注意:网卡装完后,xshell终端连接虚拟机会比较慢,原因是ssh的服务端在连接时会自动检测dns环境是否一致导致的。
修改配置文件/etc/ssh/sshd_config UseDNS no 打开注释
18,注意:自动化运维,尽可能配置环境统一,避免管理
19,时间同步命令
前提是必须ping通
ntpdate IP地址
永久修改时间:
修改配置文件:chrony.conf
重启chronyd服务
20,shutdown -r (重启) -h(关机) -c(取消)
21,who am i w nano(文本编辑)
22,以只读的方式挂载光盘到本地:
mount –o loop iso镜像 挂载点
23, screen 命令
创建会话:screen -S 会话名称
加入会话:screen -x 会话名称
显示所有会话:screen ls
临时退出会话:ctrl + a + d
恢复会话:screen -r 会话名称
24,单引号双引号区别
单引号:打印文本字符串
双引号:打印变量(当成命令执行)
25,报警命令:echo -e ‘\a’
使用方法:写完的代码执行完成后报警提示
26,二进制和十进制互换
bc 计算器(输入)二进制转换成(输出)16进制
obase=16 #设置输出为16进制
ibase=2 #设置输入为2进制
1111111111111100011010 #输入2进制数
3FFF1A #转换为16进制
27,创建带日期的文件
date +%F 日期查看
反向单引号:命令调用另一个命令时使用
28,注意工作中遇到文件不能删除,要移动
29,echo使用方法
echo {1…10…2}
显示: 1 3 5 7. . .
注意:输出按照ASCII显示
30,查看历史命令文件
cat .bash_history
history -c 清除保留在内存的命令
执行历史命令:!命令号
保留1000个命令 :echo $HISTSIZE
修改历史记录保留默认配置:/etc/profile
清除历史命令:先删历史命令文件再清除命令
31,获得帮助
获得帮助的能力决定了技术的能力
多层次的帮助
whatis 命令
command --help
man and info
/user/share/doc
man -f 命令
内部命令:
查看是外部命令还是内部命令:type 命令
help 内部命令
学习英文
外部命令:
man bash
command --help(常用)
man章节:
1,用户命令 2,系统调用 3,C库调用
查看帮助文档的方法:
1,whereis passwd
2,man 命令
3,man 5 命令 :查看第5章节
4,man -a: 列出所有帮助
man -k :列出所有跟passwd相关的
5,存放帮助手册/usr/share/doc/
6通过在线文档帮助
www.python.org
6,目录结构:mnt临时挂载点 media便携式移动设备挂载点
蓝色:文件夹 浅蓝色:软链接 红色:压缩文件 绿色:可执行文件 黄色:管道文件 灰色:其他文件
目录颜色设置: /etc/DIR_COLORS
7,查看物理路径:pwd -P
8,basename :取出最后的目录或者文件
dirname:取出前面的目录
9,cd - 取出的数据是OLDPWD变量
2019年2月7日
ls命令:
递归显示:ls -R
查看目录的属性:ls -ld 目录
根据从大到小排序: ll -S 文件名称
按照时间排序: ls -t
查看读的时间 : ll --time=atime 文件名称
查看修改时间: ll --time=ctime 文件名称
查看文件属性:state 文件名称
注意:开发网页要关闭文件的读时间,可以提升服务器性能5%
文件通配符:

  • :匹配零个或多个字符
    ?:匹配单个字符
    [a…b]:匹配括号里面二者其中一个
    [a…z] :显示大写或者小写// 小写字母aA大写字母 bB
    [A…Z]:同上显示,小写字母、大写字母
    [[:lower:]]:显示所有的小写字母
    [[:upper:]]:显示所有的大写字母
    [[:alpha:]]:显示所有的字母
    touch命令:
    注意:如果文件已经存在,创建时不会覆盖原始文件,只会刷新时间

文件名称:覆盖原始文件
cp命令:
注意默认复制的时候不会保留原始属性
-p :复制文件时会保留文件属性
-a:存档,保留所有的文件属性或者复制整个文件夹(同等-r)
-r:复制文件夹到目标目录
-v:显示执行过程的详细信息
例1: cp -av 要复制的文件或者文件夹 目标文件夹
例2:因root用户权限大,避免误操作
在root用户中复制文件会提示是否覆盖是因为别名优先于原始命令(若root用户使用原始命令需加\命令)
在普通用户中复制文件不会提示是否覆盖是因为使用的是原始命令无别名设置
mv 命令
-i :交互式
-f:强制
rm命令(只删除文件名字,数据并没有真正删除)
注意:尽量少使用删除,使用移动命令,防止误操作
-R :递归删除
-f:强制删除
例1:\rm -r 文件夹 用原始的命令删除等同于 rm -rf 文件夹
例2:为防止删除目录误操作,安全方法需将rm设置别名为mv
设置方法:
前提创建移动文件或者目录的备份目录
(1)将别名写入到配置文件中.bashrc
(2)alias rm='mv -t /backups/ //对目录移动或者文件移动
(3). .bashrc使其配置文件生效 等同于source命令
(4)执行删除命令验证使其生效
inode索引:
一个数据块等于4K
前12个直接指针保存48K文件
一级指针保存4MB
二级指针保存4GB
三级指针保存4TB
inode节点:
用法:[command] -i
查看inode节点号:ls -i (唯一的)
节点编号范围查看命令:df -i
节点编号耗尽提示创建空间不够
每个文件都会消耗一个节点编号
节点编号相同代表属性、内容完全相同(硬链接、软链接)
例1::在一个目录下创建目录磁盘空间足够,但是不能创建文件,原因是节点编号不够。
创建大文件:
dd id =/dev/zero of=bigfile bs=1M count=100
删除文件包括节点(真正腾出空间):
(1) > 文件名
(2) rm -f 文件名
硬链接:
用法: ln 文件名 文件名
(1) 不能跨分区,因为节点编号相同,只能在同一个目录执行,到另一个分区会改变节点编号
(2)inode编号相同删除一个节点编号,另一个不会被删除,可访问
(3)链接数会增长
(4)硬链接不支持文件夹创建
软连接:
用法:ln -s 文件名 快捷方式名称
(1)相当于快捷方式,可跨分区创建
(2)inode节点编号不同
(3)创建软链接使用绝对路径 或者创建相对于软链接的路径避免创建软链接显示红色(找不到原始文件)
(4)软链接支持文件夹创建
(5)软链接源文件删除后链接文件失效
查看文件类型:
file命令:
file 文件名称
-L:查看软链接对应的文件的类型
输入输出命令:
终端窗口:tty
终端名称:/dev/pts/1
输出内容到终端:echo “内容” > 终端号
2> :重定向错误的信息
:存放正确的信息
2>&1 :把错误的变成正确的重定向到1里面
&>:输出和错误全重定向
tr命令:字符串转换,将大写转换成小写
例1:tr [a-z] [A-Z]
例2: tr ‘\n’ ’ ’ < f1 输入(文件名称)//代替键盘输入
tr -d ‘\n’ 文件名称 //删除文件里面的换行
-c, -C, –complement 用集合1中的字符串替换,要求字符集为ASCII。
-d, –delete 删除集合1中的字符而不是转换
-s, –squeeze-repeats 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
-t, –truncate-set1 先删除第一字符集较第二字符集多出的字符
cat >文件名称 //清除文件内容
cat < 文件名称 > 文件名称 等同于 cp 复制
cat > f1 (单行重定向写内容,写一些小的程序建议用cat)
cat << EOF (多行标准输入重定向,结束输入重定向)
cat << EOF > f1(标准输入输出重定向)
mail命令
发邮件:
mail -s ‘标题正文’ 用户
。。。。正文
. (结束)
收邮件:
登录用户
mail
将邮件写入到文件发给用户
mail -s ‘正文’ 用户名 < 文件名称
管道:命令1|命令2
作用:把命令1 的标准输出传给命令2,将命令2标准输入
例1:ls /etc/nofile 2>&1 (把错误的变成正确的输出) | tr ‘a-z ’ A-Z’
tee 命令:
-a:保留原来的内容,直接增加文件内容
(1)将文件内容打印到屏幕
例1: ls | tee 文件名称 | grep 字符
查看用户编号:id -u 用户名
查看用户组ID、用户ID :id 用户名
系统用户:1-499
组用户:500+,1000+
linux用户名和组名可以相同,windows不同
进程:正在运行的程序
ps aux //查看进程Id
进程所能够访问资源的权限取决于进程的运行者的身份
用户和组的配置文件
/etc/passwd :用户及其属性信息,修改用户ID
/etc/shadow:用户密码及其相关属性
/etc/group :组属性
注意:linux 系统与window系统的文本格式显示不同(hexdump -C 文件名称 //查看二进制)
用户ID没有管理员(用户ID为0)会造成系统起不来
what is show :查看帮助文档
2019年2月8日
用户和组的管理命令
useradd:添加用户
注意:添加用户组文件、用户配置文件等会发生变化
密码不配置密码shadow配置文件会显示!
-u 指定用户id
-r创建系统用户,不会创建家目录
-G创建辅助组 辅助组id1、辅助组id2 用户名 ,保留原来的辅助组加-a

-N创建主组为users
例1:useradd -G 已经拥有的组 用户名
-m创建家目录,用于系统用户
usermod:修改用户
清除辅助组: usermod -G “” 用户名
-L 锁定用户//可查看shadow配置文件里面的!
-U解锁用户
-f:设置非活动期限
userdel:删除用户
-r:删除用户
注意:正在登录的用户不会删除,删除后用户Id和组id会是1001
groupadd:添加组
-g:指定组id
例1:创建账号给数据库服务用(可创建系统用户),不是给用户登录使用
(1) 首先创建组Id 跟用户id相同
(2) useradd -u 用户id -r -s /sbin/nologin -g 组名 用户名
默认添加用户配置文件
/etc/default/useradd //修改配置文件 useradd -D
/etc/login.defs//新建用户口令的有效期
注意:在linux中判断是张三还是李四根据用户id来辨别身份的
切换用户:
环境变量:PATH (外部命令)
非用户登录方式:su 用户名
目录会保留的原来的状态,不切换环境变量
用户登录方式:su - 用户名
完全切换会在登录用户的家目录,切换环境变量
注意:切记不能一直切换用户登录,环境变量会一直变化影响系统正常使用
su - 切换的用户 -c “要查看的切换用户的配置文件”
passwd(修改密码):
-d :删除口令
-e:将账号的口令直接过期
修改口令防止输入两次:(passwd)
echo 用户密码 | passwd --stdin 用户名 //实现自动化操作
groupdel:删除组
不能删除主组,若删除主组必须把该主组对应的用户删除
文件新建时,默认的组是主组
文件目录权限:
所属者、所属组、其他用户
r:读权限,读目录,可以看文件名称
x:可以cd目录,可以访问目录的权限
w:在目录里面可以创建文件
二进制文件无需分配权限
网卡名称配置完成后不显示新网卡的配置方法:
1,添加网络配置文件,重启网卡
prefix=24 等于 netmask=255.255.255.0
2,nmcli connection delete //将旧网卡名称删除
nmcli connection up //连接网卡
nmcli connection show //查看网卡是否已经桥接到新网卡
3,/boot/grub2/grub.cfg//注意配置文件是将网卡名称修改为eth
4,reboot重启虚拟机

2019年2月13日
针对特定的用户设置特殊的权限,可以在原有的权限之上加权限,符号(+)
1,设置对一个用户对文件无访问的权限
setfacl –m u:用户名:- 文件名称绝对路径
2,设置对一个组的权限
setfacl –m g:组名:权限 文件路径绝对路径
3,取消acl对应的权限
setfacl –x u:用户名 文件名称绝对路径
4,查看对应的权限
getfacl 文件名称绝对路径
文本处理工具
1,正则表达式
2,扩展正则表达式
3,Vim
4,Grep
5,Sed
6,Awk
例1:cat –A 文件名 //查看带有换行的字符 可通过hexdump –C 文件名 可查看二进制文件
注意:在写python程序的时候如果程序执行失需要查看是否有看不到的符号排错
tac 倒序
more less 分页显示,经常配合管道使用
head 查看文件的头部,默认显示前10行
tail 显示文件的最后几行,参数 –n ,-f 默认监控文件的后10行,如果已删除文件的话没有反应,同-F会实时监控报错文件不存在
cut :取出列,以:分隔 或者是空格
例1:cut –d:(以什么分隔) f1,3-5 文件绝对路径//以冒号分隔
例2:df –h | cut –c 34-36 //以空格分隔
例3:取出服务器ip地址
ifconfig | head -n 2 | tail -n 1 | tr -s " " | cut -d" " -f5
ifconfig | head -n 2 | tail -n 1 | cut -dt -f2 | cut -d" " -f2
2019年2月16日
1,RANDOM 随机数
2,linux文本处理三剑客
Centos7grep是别名
grep:处理文本过滤,从文件中过滤出必要的行,与cut(取列)的区别取行。
用法:grep 搜索的关键字 文件名称
参数:-v //不显示什么字符
-n //显示行号
-o//只输出匹配的选项
-ic//c:只输出匹配行的计数 ,-i不区分大 小写(只适用于单字符)
-q //配合$?为0成功 为1失败
-A//显示包含现在的行的后续1 -A1
-B//显示包含现在的行的前1行 -B1
-C//前后都显示
-e //逻辑或
-w:查看已整个单词,可加可不加,配合-o使用
-E:扩展正则表达式

注意:/dev/null 垃圾桶,不需要的文件放入到垃圾桶
例1:centos7取出磁盘使用率
df -TH | grep /dev/ | tr -s ’ ’ ’ ’ | cut -d" " -f6 | wc -l
例2:在同一个网段活动的地址
nmap -v -sn 192.168.188.0/24 | grep -B1 ‘up’ | grep ‘Nmap scan report for’ | cut -d" " -f5
例3:查看主机对应的服务
nmap -A -v ip地址
正则表达式:
PCRE:正则表达式引擎
元字符分类:字符匹配、匹配次数、位置定位、分组
查看帮助:man 7
基本正则表达式元字符
字符匹配:
1,. 匹配任意单个字符
正则表达式中.需要转义 .
例1:grep r…t /etc/passwd
2,[字符]或的关系
例2:ls all = ls | grep all
3,除了什么什么字符,放在中括号里面,[wang]
4,*匹配前面的字符任意,贪婪模式
5, .*匹配任意字符
6, ? :匹配其前面的字符0次或者1次
7, +:匹配前面的字符至少1次
例3:取出ifconfig中的所有ip
ifconfig | grep --color -wo ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’
8,^字符$ :匹配整行
9,^KaTeX parse error: Expected group after '^' at position 18: …行 例4:grep -v "^̲" /etc/fstab | grep -v “^#”
10,位置定位
< :单词的左侧
>:单词的右侧
例5:grep <字符> /etc/passwd
例6:grep ‘1+linux16’ /boot/grub2/grub.cfg | grep -v rescue
例7:分区利用率
df -h | grep /dev/^sd | grep -o ‘[[:digit:]]+%’ | grep -o '[[:digit:]]+
grep扩展知识点
分组:
格式:(字符串)
\1 匹配分组的前面的模式匹配出的结果
例1:取出ip地址,思路分组实现整体数字+.
ifconfig | grep --color -wo “([0-9]{1,3}.){3}[0-9]{1,3}”
注意: 
“{n,m}?” 重复n到m次,但尽可能少重复
如 “aaaaaaaa” 正则 “a{0,m}” 因为最少是0次所以取到结果为空
“{n,}?” 重复n次以上,但尽可能少重复
如 “aaaaaaa” 正则 “a{1,}” 最少是1次所以取到结果为 “a”
这里的{3}重复前面的字符3次
或者:|
扩展正则表达式
grep -E 或者 egrep
作用:可以实现在grep中使用的转义字符部分不用转义
例1:ifconfig | grep --color -Ewo “([0-9]{1,3}.){3}[0-9]{1,3}”
例2:取出rpm包中的前面的格式
ls *.rpm | grep -Eo “.<[[:alnum:]_]+>.rpm$” | cut -d"." -f2 | sort | uniq -c
sed :文本编辑工具,修改文件和过滤文件
awk:编程语言的工具,打印报表

Vim模式
1,命令模式
参数:
a,光标往后移动
i:插入模式
o:在当前行的下一行插入数据
I:在行首开始输入文字并进入插入模式
i:在光标所在字符前开始输入文字并进入插入模式
A:在当前行的最后插入数据
O:在当前行的上一行插入数据
:扩展的命令模式
+n:直接跳到哪个行
例1:vim +/.*字符串 文件名
-d:打开两个文件
扩展模式:
:wq
:q
:w
:x 保存退出
命令模式:
ZZ:保存退出
ZQ: 不保存退出
注意::x容易破坏文件避免使用, ZZ避免使用
注意L如果文件是只读的,可以强行保存加感叹号
组合模式
!命令
HGTL:上下左右方向键
w:单之前跳动
H:当前屏幕的最头部
L:当前屏幕的最后
3G:跳到第三行
G:跳到最后一行
1G,GG:跳到第一行
x:删除
p:粘贴
P:在当前行上一行粘贴
^:跳转到行首
$:跳转到行尾
~:转换大小写
J:把一行跟另外一行组成一行
xp:两个字符交换位置
替换模式
从别的模式回到命令模式:esc
r:替换单个字符
删除模式
d^:
D:
D0:
dG:删除光标到最后的所有行
Dgg:删除光标之前的所有行
yy:复制整行
扩展命令
:第几行,到几行
:2,+3 表示2,5行
例1: :1,30d
.表示当前行
$:最后一行
KaTeX parse error: Expected group after '^' at position 316: …bash :g/^̲/d 全文删除配置文件中的空行

u:撤销
U:撤销当前修改的行,光标不能离开该行
可视化模式
v:可以选中,复制一部分
V:可以选中整行
Ctrl+v使用方法
例1:df >file 取出只显示Use之后的磁盘利用率
使用多个窗口
多文件分割
Vim -o|-O file1 file2
-o:水平分割
-O:垂直分割
Ctrl+w,ARROW :在窗口切换
单文件分割
Ctrl+w,s 水平分隔
Ctrl+w,v 垂直分割
Ctrl+w,q:取消相邻窗口
Ctrl+w,o:取消全部窗口
行号
Set number
set ai:可以跟代码的上一行对齐
Set noai:保存复制的代码格式,因启用ai
Set fileformat=unix/dos:拿到一个文件,启用windows或者unix格式
Set paste:复制保留格式
Set cul:设置当前行加下划线
Sed工具
参数:d
A
n
p
c
!取反
&:保留原字符串
-r:扩展模式,分组就不用转义了,配个分组使用
注意:自动打印所有行,一般需要加-n
(1)#:指定的行,KaTeX parse error: Expected 'EOF', got '#' at position 37: …匹配到每一行 (3)地址范围:#̲,#,#,+# (4)~步进 …/ net.ifnames=0 &/p’ /etc/default/grub
sed -i ‘s/quiet/& net.ifnames=0/’ /etc/default/grub
sed -r ‘/GRUB_CMDLINE_LINUX/S/(.*)/\1 net.ifnames=0”/’ /etc/default/grub
sed取IP地址
ifconfig | sed -n ‘2p’ | sed -e ‘s/^.net //’ -e 's/ netmask.//’
Sed删除注释
sed -r -e ‘s/^#(NameVitualHost)/\1’ -e ‘/#</VirtualHost/,/#</VirtualHost/s/#//’ /etc/httpd/conf/httpd.conf
Grep :修改行,sed不仅实现修改行,也能修改文件

sed -i ‘/^# Source/ialias cdnet="/etc/sysconfig/network-scripts/"’ .bashrc
sed -i ‘/^# Source/ialias vi=vim’ .bashrc
Sed -r ‘s//sbin/nologin//bin/bash/g’ /etc/passwd
sed ‘s/bash/’’’$USER’’’/g’ /etc/passwd //替换用户使用三个单引号
高级编程

打印偶数行: sed -n ‘n;p’ file 等于 sed -n ‘2~2p’

awk:打印报表,格式化文本输出工具
建议用单引号
打印:print printf(打印字符串)
变量:$1 第一例 $2第二列 $0(所有行)
默认执行print $0
BEGIN:处理文件之前打印
Awk:默认识别的字符是 空格 tab,其他的需要用-F指定
注意:在awk中只要是字符串需要用双引号引起来
df | awk ‘{print $1,"\t"$2 }’ //awk双引号里面是命令
df | awk ‘{print $1, “使用量”$2 }’ 加一些描述信息

例1: awk -v FS=""(分隔符) -v RS=’;’(输入) -v ORS=’:’(输出) '{print $1,KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' file NF:表示字段数…NF表示最后一个字段的字段数
例2:awk -F":" ‘{print NF}’ /etc/passwd 备注:打印每个字段是7
awk -F: '{print KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲' /etc/passwd 备…NF是第七个字段,同理NF-1打印第6个字段
例3:打印倒数第一个字段awk -F: ‘{print KaTeX parse error: Expected 'EOF', got '}' at position 7: (NF-1)}̲' file 例4:打印记录号…(NF-1)}’ file
例5:awk支持多个文件查看
awk -F: ‘{print FNR,$(NF-1)}’ file /etc/passwd
awk -F":" ‘{print ARGV[0]}’ /etc/passwd
变量先定义先赋值再使用:
Printf打印的时候先写格式
awk ‘{test=“test awk”; print test}’ /etc/passwd
%s:默认不换行
例1:可以换行: awk -F":" ‘{printf “%s\n”,$1}’ /etc/passwd
例2:awk -F":" ‘{printf “%s\n:%d\n”,$1,$3}’ /etc/passwd

i++ 等于i=i+1
例1:下面两语句有何不同
awk ‘BEGIN{i=0;print i++,i}’ 说明:先输出i值,再自增;结果:1 1
awk ‘BEGIN{i=0;print ++i,i}’ 说明:先自增,再输出i值;结果 1 0

例1:不打印 sbin包含的列
awk -F: ‘$0 !~ /sbin/{print $0}’ /etc/passwd

例1打印磁盘利用率
df | awk ’ $0 ~/^/dev/sd/{print $1,$5}’
打印磁盘利用率大于10磁盘名称
df | awk ’ $0 ~/^/dev/sd/{print $1,$5}’ | awk ‘$2>10 {print $1}’
例2 打印用户id大于1000等于0
awk -F: ‘$3==0 || ($3>=1000) {print $1,$3}’ /etc/passwd
例3:简单脚本编写
awk -F: ‘{$3>1000?usertype=“common user”:usertype=“system user”;printf “%-12:.%-20s:%-6d\n”,usertype,$1,$3}’ /etc/passwd
注意:在awk里面 0和”空字符串 ” 是假(无东西) ,取反则是真,其他的是真(不是0的)
例4:
awk ‘/^UUID/’ /etc/fstab
awk '/!^#/{print $0}

例1:1到100的和

注意:sum=sum+i = sum+=i
echo {1…100} | tr -s " " “+” | bc
seq -s “+” 100 |bc
打印远程的和当前客户端的netstat -tan 统计连接数
I686跑在32位cpu x86_64跑在64位cpu noarch:32位 64位都兼容

Centos进入救援模式的方法:https://blog.51cto.com/asd9577/1931442

Ldconfig -v 显示当前系统中程序调用的库

查看脚本包:rpm -qp --scripts 脚本包

Rpm -qa 查询系统中安装的包
\mv 防止提示强制移动 别名mv -i

Rpm -K 包名 查看包的来源
查看包文件属性是否发生变化Rpm -V ,显示U 显示所属者变化等等
检测包是否被人修改过
1,先import 公钥,在-k检测

Yum info 包名:查询包属于哪个yum源
Yum remove 包名:卸载包 ,不会卸载依赖
yum history:查看已经安装的包
Yum history info Id: 查看安装的依赖,
Yum history undo id :撤销安装
Yum history redo id:重新恢复安装
Yum list: 查看已经缓存的包
Yum search 包名:搜索包
当包被破坏了,可以重装包
Yum reinstall 包名:重新安装
注意:yum 出问题的原因
1:baseurl路径错误
2:缓存有问题,yumbase地址更换没有及时更新缓存,清理下缓存就可以了。

Yum grouplist 查看包组
Yum groupinfo 包组名

1,自创建仓库
(1)rpm /data
(2)Createrepo /data
(3)Yum repo file 更改yum配置文件base地址

Shell脚本

系统中的shell文件
/etc/shells 默认的bash/shell
注意:不同的shell语法不同
把脚本放在path变量的目录里面就不用加./执行了,最好写绝对路径
环境变量:父进程的变量可以传给子进程
查看父进程子进程命令:
Pstree -p
echo $$ 查看bash进程号
注意:子SHELL定义的变量不能传给父shell
各自的进程完成自己的变量没有问题,但是在子进程中调用父进程不可以
变量怎样实现父进程传给子进程?
设置环境变量:
在变量面前声明下export 父进程变量名
∗ ( 所 有 的 参 数 代 表 一 个 字 符 串 ) 、 *(所有的参数代表一个字符串)、 ()@(空格分开的)
declare -x//查看系统中的所有环境变量
Set:查看所有变量
Unset 变量名称 //删除变量
注意:变量不使用记得删除变量
变量赋值:
name= ( c a t / e t c / f s t a b ) 或 者 是 n a m e = ‘ c a t / e t c / f s t a b ‘ 反 向 单 引 号 ‘ ‘ 可 以 用 (cat /etc/fstab)或者是name=`cat /etc/fstab` 反向单引号``可以用 (cat/etc/fstab)name=cat/etc/fstab()代替
注意:
1,变量对于文件的赋值再输出时变量名需要加入双引号 echo “$name” 否则展示时会有格式问题。
2,变量如果有重复的比如同一个操作系统中有变量名name 、变量名na 、变量名me、输出变量na时需要加入 echo {na}me
3,变量放在单引号里面是普通字符串,要放在双引号里面

只读变量:
readonly 变量名=赋值
Shift:往左移动删除变量,不断替代。

$?:保留最后一个命令的执行结果。
与:和1与的就是1 ,和0与的就是0
或:只有全为0的时候才是0,有一个为1就是1
同理为真假关系
异或
Help test :内部命令 test --help :外部命令
正则表达式用第三种
例1:ip地址的正则表达式
~:代表后面跟的是正则表达式
[[ KaTeX parse error: Can't use function '\.' in math mode at position 19: …=~ ^([0-9]{1,3}\̲.̲){3}[0-9]{1,3} ]] && echo this is a ip
注意:
1,完整点可以加个开始^结束$标志
2,变量没有赋值会有语法错误,要用双引号将变量引起来
read -p ‘please input your name:’ name
隐秘输入密码:
read -s -p ‘please input your password:’ name
整数值比较:(数量)
-eq:等于
-ne:不等于
-ge:大于或等于
-le:小于或等于
-gt:大于
-lt:小于
declare -f //查询系统中的所有函数列表
注意:函数定义,只在当前终端生效
函数调用:
1,多次调用的时候
2,别的脚本调用函数
注意:在函数中返回状态信息不能使用exit,要使用return
函数设置:本地变量,只对函数生效local

vim 命令`

1、:8474,8498 w >> /tmp/文件名称 #将第8474行到8498行追加的对应文件中


  1. [:space:] ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值