1. 使用创建文件的命令一次性批量创建(test1,test2,test3,test4,test5)这几个文件
touch test{1..5}
2. 使用一条命令创建/ni/hao/a
mkdir -p /ni/hao/a
3. awk命令
3.1 基础用法
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
' ' 引用代码块
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令
; 多条命令使用分号分隔
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
3.2 使用awk取出系统IP地址,使用多种方法
方法1: ifconfig ens33 | grep "inet " | awk '{print $2}'
先通过ifconfig查出系统网卡为ens33,ip地址前都是inet,整个字段有inet 和inet6,取出所要的inet 将其第二列打印出来,即为所要的ip地址
方法2: ifconfig ens33 | awk '/inet / {print $2}'
awk也支持过滤,通过两个斜杠来匹配过滤条件,然后跟上要执行的动作
4. 将 /etc/sysconfig/selinux 文件中的 SELINUX=enforcing 替换成 SELINUX=disabled
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
如果不加 -i 则为伪替换 匹配内容中的g意思是全局,分隔符可以用多种符号 's###g' 或 's@@@g' 或 's///g'
5. 现有1-100个文件,需要保留75,76,78三个文件,其余全部删除
rm -f $(ls | grep -Ev "75|76|78")
$() 是固定的写法,里面表示command命令,这些命令会优先执行
6. 添加xiaoming用户,用户ID为6969,基本组为ops,附加组为dev,注释信息xiaoming student,登陆shell:/bin/bash
groupadd ops
groupadd dev
useradd -u 6969 -g ops -G dev -c "xiaoming student" -s /bin/bash
-g 为基本组,可以想成是亲爹,只能有1个 , 而 -G 为附加组,可以想成是干爹,可以有多个
7. 批量删除UID>1000的用户
awk -F ':' '$3>1000{print $1}' /etc/passwd | sed -r 's#(.*)#userdel -r \1#g' | bash
awk:以冒号为分隔符,提取一行对比第三列是否大于1000,如果大于则打印它第一列的名称(仍然是以冒号为分隔符)
sed:拼接命令
8. 以非交互的方式给用户设定密码
echo "123" | passwd --stdin 用户名
9. su与环境变量的关系
su - username 属于登陆式Shell
su username 属于飞登陆式Shell
它们最大的区别在于加载的环境变量不一样
10. 以某个用户的身份来执行某个任务,使用命令 su -c username
su - "root" -c "echo "123" | passwd --stdin root"
使用root用户将root的密码改为123
11. 添加sudo权限
usermod username -G wheel
12. 将 /etc/passwd 中的用户按 UID 大小排序
sort -t":" -k3 -n /etc/passwd
-t 可以在 sort 命令中匹配字符,这边是按 :匹配,对第三列进行排序,加上 -n ,以数字的大小来比对
13. 统计当前 /etc/passwd 中用户使用的 shell 类型
awk -F ':' '{print $7}' /etc/passwd | sort | uniq -c
以 : 为分隔符,取出第7列的内容并打印出来,作为排序的输入(只有排序过的数据才能去重统计),最后将其统计出来,-c 可以看到具体数目,运行结果如下:
14. 应用程序链接数据库的密码是 123456 ,但忘记这个密码在哪个文件里了,可以通过find结合grep找出来
find /code -type f | xargs grep -nRi "123456"
-n 显示行号 -R 递归搜索 -i 忽略大小写
15. 查看文件大小
du -sh file
# du 会显示指定的目录或文件所占用的磁盘空间
# -s 显示总和
# -h 以人性化的方式显示
16. 打包与压缩
16.1 常见压缩包类型
格式 | 压缩工具 |
.zip | zip压缩工具 |
.gz | gzip压缩工具,只能压缩文件,会删除原文件(通常配合tar使用) |
.bz2 | bzip2压缩工具,只能压缩文件,会删除原文件(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用gzip压缩 |
.tar.bz2 | 先使用tar命令归档打包,然后使用bzip压缩 |
16.2 文件打包与压缩 tar
#语法:tar [-zjxcvfpP] filename
c #创建新的归档文件
x #对归档文件解包
t #列出归档文件里的文件列表
v #输出命令的归档或解包的过程
f #指定包文件名,多参数f写最后
z #使用gzip压缩归档后的文件(.tar.gz)
j #使用bzip2压缩归档后的文件(.tar.bz2)
J #使用xz压缩归档后的文件(tar.xz)
C #指定解压目录位置
X #排除多个文件(写入需要排除的文件名称)
h #打包软链接
--hard-dereference #打包硬链接
--exclude #在打包的时候写入需要排除文件或目录
16.3 常用打包与压缩组合
czf #打包tar.gz格式
cjf #打包tar.bz格式
cJf #打包tar.xz格式
zxf #解压tar.gz格式
jxf #解压tar.bz格式
xf #自动选择解压模式
tf #查看压缩包内容
17. rpm
注意点:不支持自动处理依赖,需要人为处理
17.1 基础命令示例
-i:安装软件包
-v:显示安装过程
-h:显示安装进度条
安装: rpm -ivh /PATH/package.rpm
卸载: rpm -e package.rpm
升级: rpm -Uvh /PATH/package.rpm
查询:
rpm -q vsftpd #查询软件包是否安装
rpm -qa vsftpd #查询系统中所有的软件是否存在vsftpd
rpm -ql vsftpd #查询软件包将内容解压到哪些目录中了
rpm -qc vsftpd #查询软件包配置所存储的位置
rpm -qf /usr/bin/find #查看绝对路径文件,属于哪个软件包提供
17.2 rpm查询软件包
选项 | 描述 |
rpm -q | 查看指定软件包是否安装 |
rpm -qa | 查看系统中已安装的所有RPM软件包列表 |
rpm -qi | 查看指定软件的详细信息 |
rpm -ql | 查询指定软件包所安装的目录、文件列表 |
rpm -qc | 查询指定软件包的配置文件 |
rpm -qf | 查询文件或目录属于哪个RPM软件 |
18. yum安装、卸载、升级、查询
yum源:一个.repo文件中包含了 http | https | ftp协议的地址
yum仓库:当打开地址,能够看到一堆软件包(仓库:一堆软件的合集)
安装:
yum install vsftpd
yum reinstall vsftpd
yum localinstall vsftpd
卸载:
yum remove vsftpd -y
升级:
yum update -y #升级所有;
yum update package #升级指定的软件包;
查询:
yum list #查询所有仓库
yum list installed #查询系统中已安装的软件包;
yum provides #命令名称|文件的路径;
19. 清缓存
echo "3" > /proc/sys/vm/drop_caches
20. Linux系统中,删除/data/files⽬录下1周前修改过且⼤于10MB的⽂件
find /data/files -type f -time +7 -size +10M -exec rm {} \
21. 更改Linux主机名
hostnamectl set-hostname gyx
22. 查看端口
netstat -lntp
23. 给mysql授权
grant all privileges on *.* to 'all'@'%' identified by '123';
24. 开启forward转发
sysctl -a | grep forward #查看forward开启
或者
sysctl -p
vim /etc/sysctl.conf #打开此配置文件进行编辑
上述步骤也可直接用重定向追加的命令解决:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf