文本编辑器
vim 下
ctrl + u 向上翻半屏
ctrl + d 向下翻半屏
ctrl + f 向上翻一屏
ctrl + b 向下翻一屏
非编辑的模式下 /err 回车查找 err
chown: 修改目录的权限, root 下,chown payne:payne /opt/software /opt/module
chmod: 修改执行权限, 7-- 可读可写可执行
chmod 命令是 linux 上用于改变权限的命令,-R 是递归遍历子目录,因为你要操作的文件使用的*通配符。
777,第一个7代表文件所属者的权限,第二个7代表文件所属者所在组的权限,第三个7代表其它用户的权限 775 中 5表示读和执行 4 是读 2 写 1 执行,
查找目录下 类型为 文件以 .log 文件名 结尾的文件 f 文件 d 目录
find /var/log -type f -name "*.log"
统计文件的行数
wl -l /var/log/audit/audit.log
查找两天以内修改过的以 .log 结尾的文件
find /var/log -mtime -2 -name "*.log"
find / -name kibana 查询根目录下名称为 kibana 的文件
firewall-cmd --query -port=80/tcp 查看80端口是否开放
firewall-cmd --permanent --add-port=80/tcp 添加端口
firewall-cmd --reload 重启防火墙
telnet 39.97.240.142 8081 测试端口是否畅通
输出重定向: > 覆盖输出 >> 追加输出
> : cat > test.txt 回车 输入文本
echo 'hello' > test.txt 输出到文本中
错误重定向输出: llll 2> test.txt 把错误输出重定向到 test.txt 文件中, 2标识错误输出
如果不想要错误输出就放大到 /dev/null 里面 llll 2 > test.txt 把错误输出到 /dev/null 中
grep sed awk linux三剑客:
sed 命令: 用于文本 选取,新增,替换,删除,搜索
sed -n 打印出匹配的行,输出打印到屏幕
df -h | sed -n '2p' 打印出第二行,p是打印,2是匹配的第2行
df -h | sed '2d' 删除第2行,只是打印出来的不显示第2行,df -h 的内容不会删除
df -h | sed '2a 123456' 在第2行的下面打印 123456
df -h | sed '2i 123456' 在第2行的上面打印 123456
df -h | sed '2c 123456' 把第2行替换为 123456
df -h | sed 's/centos-root/Centos7/g' s是开头,g是结尾,将 centos-root 替换为 Centos7 ,精确替换,用的最多的,不会对源文件进行修改
df -h | sed 's/centos-root/Centos7/g' >> test.txt 替换后输出到 test.txt ,不会对源文件进行修改
sed -i 's/centos-root/Centos7/g' df.txt 会对源文件修改,将 df.txt 文件中的 centos-root 修改为 Centos7,一定要慎重处理
sed 's/Centos7/Centos8/g' df.txt
sed -n '/tmpfs/p' df.txt 搜索出 df.txt 文件中包含 tmpfs 的行并且打印出来
grep -w 'tmpfs' df.txt grep 会精准匹配
修改多行数据,改掉 df.txt 文件中的 Centos8 为 Centos7 和 tmpfs 为 TMP,会修改 df.txt 文件,要慎重操作
sed -i -e 's/Centos8/Centos7/g' -e 's/tmpfs/TMP/g' df.txt
输出文件中改掉 Centos8 为 Centos7 和 tmpfs 为 TMP ,并输出到 123.txt
sed -e 's/Centos8/Centos7/g' -e 's/tmpfs/TMP/g' df.txt > 123.txt
sed -i 's/centos-root/Centos7/g' df.txt 和
df -h | sed -i 's/centos-root/Centos7/g' 通过管道符过滤给 sed ,和直接使用文本意思差不多
awk 处理海量数据: 用于对数据进行列的提取,支持条件判断,数组,循环等功能
printf #格式化输出,不会自动换行
print #打印出内容,默认自动换行
%s #字符串
\t #制表符
\n #换行符
NR #行号
$NF #最后一列
BEGIN 是在执行进来之前执行
END 是在执行结束后执行
用制表符输出6个字符串然后换行
printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
文件中的第1列,没有加条件会打印所有
awk '{print $1}' /etc/passwd 打印 passwd
执行过程: 获取第一行传递给awk,在 awk 获取到之前 BEGIN 读取条件 FS 以:分割,然后打印第一列
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}' 打印 passwd
打印出第4行的第1列
df -h | awk 'NR==4 {print $1}' //文件中已经有分列了
df -h | awk '(NR>=2 && NR<=5) {print $1}'
过滤掉 Filesystem 的这一行,输出第1列和第5列
df -h | grep -v 'Filesystem' | awk '{printf $1} {printf "文件系统使用率: "} {print $5}'
df -h | grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况: \n \n"} {printf $1} {printf "文件系统使用率: "} {print $5} END {printf "一切正常 \n"}'
cut:
-d : 指定分隔符, 不加 -d 选项默认为制表符不是空格
-f : 指定截取区域
-c : 以字符为单位进行切割
以 : 分割,截取 passwd 里的第一列和第3列打印出来
cut -d ':' -f 1,3 /etc/passwd
截取第1列到第3列打印出来
cut -d ':' -f 1-3 /etc/passwd // 1- 是第1列以后的所有列,1-3是1到3列
截取 passwd 文件第2到9个字符
cut -c 2-9 /etc/passwd
截取 linux 上所有可登录的普通用户, grep '/bin/bash' 过滤出含有 '/bin/bash'
cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root