1、常用命令,如查找某进程的端口,替换文件中的内容
创建文件 vim test.sh
#!/bin/bash
echo "test"
:wq
运行:
chmod +x test.sh 是test.sh 有运行权限
./test.sh 运行
或者 /bin/sh test.sh
连接服务器
ssh -p22 [email protected] -p22表示指定端口号为22,默认为22,可以省略 [email protected]表示用户名
查看帮助 --help man
ls --help
man ls
查看文件信息 ls
ls -a 显示所有文件包含隐藏文件 ls -l 显示文件属性 ls -al 显示所有文件属性包含隐藏文件
切换工作路径 cd
显示当前目录路径 pwd
创建新目录 mkdir
mkdir a/b/c -p 创建递归目录需要加参数-p
创建空文件 touch touch 1.txt 创建1.txt空文件
删除文件或目录 rm
rm 1.txt 删除1.txt文件
rm -r c 删除c文件夹
rm -rf c 删除c文件夹即使c为不存在的文件也不会报错
rm -ri c 删除c文件夹前会有个询问 输入y或者yes进行删除
rm -i 1.txt 删除1.txt前进行询问 输入n或者no不删除
拷贝 cp
cp ./1 ./a 将1文件拷贝到a文件夹
cp -a ./a ../b 将a文件夹拷贝到上一级的b文件中,需要加参数a
移动/重命名 mv
mv a f a和f在同一级 会将a文件夹重命名为f
mv a ./b 移动到b文件夹下
mv a ./b/m 移动到b文件夹下并重命名为m
建立链接文件
ln 相当于快捷方式
ln a ./b/test 将a链接到b文件夹下的test
查找文件 find
find ./ -name 1.txt 在当前目录查找1.txt
find ./ -name '*.txt' 在当前目录查找txt结尾的文件
查看文件内容
cat less more head tail
cat 1.txt 显示所有文件内容
less 1.txt 一屏一屏显示内容
more 1.txt 一屏一屏显示内容 空格往下翻 小b往上翻 q退出
head 1.txt 显示文件前10行
head -n 3 1.txt 显示前3行
tail 1.txt 显示文件后10行
tail -n 3 1.txt 显示文件后3行
打包压缩 tar
tar -zvcf 1.tar.gz 1.txt 2.txt 将1.txt和2.txt压缩到1.tar.gz压缩包内
tar -xf 1.tar.gz 解压缩
tar -xf 1.tar.gz -C ./b 解压缩到b文件夹下
文本编辑 vi(标准文本工具) vim(可编程)
屏幕输出 echo
输出重定向 >
echo 123 > 3.txt 会在3.txt中写入123 可以快速创建文件
文件属性
第一位 d目录 -文件 l 链接文件(ln)
2到4位 拥有者
5到7位 所属组
8到10位 其他人
r 读权限 4
w 写权限 2
x 操作权限 execute 1
- 无权限 0
chmod 777 拥有者 所属者 其他人都有rwx 最高权限
drwxr-xr-x 表示755
chmod 777 1.txt 给1.txt赋予最高权限
网络
ifconfig
查看网卡信息
eth0对应的是本地的ip地址
ping
ping -c 3 -i 4 baidu.com ping百度 ping3次 每隔4s ping一次
netstat
打印网络信息
-t 列出所有tcp
-n 以数字形式显示地址和端口号
-p 显示进程的pid和名字
netstat -tnp
性能命令
cat /proc/cpuinfo
查看cup的信息
top 显示当前活动的进程
top -p 123 查看pid为123的进程状态
top -p 123 -d 1 -n 2 查看pid为123的进程状态,每隔1秒刷新一次,一共刷新两次
free 查看内存
排序命令 sort
cat 1.txt|sort
根据每一位进行排序,第一位从大到小,然后第一位相同的第二位再比较大小,依次类推
cat 1.txt|sort -h
根据单位进行比较
cat 1.txt|sort -hr
从大到小排序
cat 1.txt|sort -n
按照数字大小排序
cat 1.txt|sort -V
按照版本号排序
cat 1.txt|sort -t . -k 4
以 . 为分隔符,按照第四行排序
uniq
uniq -c 1.txt 第一列开始对比
uniq -c -f 2 uniq_demo.txt 判断重复次数 从第2列跳过 ip地址列开始比较 而且只比较相领上下两行是否重复
想实现判断整个文档中ip是否重复,可以先将文档排序,再判断
cat 1.txt|sort -k 3|uniq -c -f 2|sort -k 1 -n(以第一列排序 根据数字大小)
cat 1.txt|uniq -c -f 2(比较ip地址,跳过前两列) -d (大于等于两次的ip只显示一次)
cat 1.txt|uniq -c -f 2 -D (不显示只出现一次的ip 只显示大于等于2次的ip地址并且不去重)
cat 1.txt|uniq -c -s 14 -D s表示字符个数 -f 表示列
wc
cat 5.txt|wc 3行 2个单词 10个字符
cat 5.txt|wc -l 统计多少行
cat 5.txt|wc -L 统计最长的一行有多少个字符
cat 5.txt|wc -c 统计多少字符
cat 5.txt|wc -w 统计多少个单词
Linux管道与三剑客
管道
正则表达式
网站:https://tool.oschina.net/regex
1、查找单词
\bhi\b hi aaaa 可匹配到hi hiaaaa匹配不到 因为hi需要是一个单词
\bhi\b.*\b\lucy\b hi aaa lucy 可匹配到整个句子 因为.*表示任意字符
0\d{2}-\d{8} 010-11111111 可匹配到 010-11111111a 不可匹配到 \d代表一个数字 \d{2}表示2个数字 \d{8}表示8个数字
2、小练习:
1、匹配以字母a开头的单词
\ba\w*\b
2、匹配刚好6个字符的单词
\w{6}
3、匹配1个或更多连续的数字
\d+
4、5到12位QQ号
^\d{5,12}$
grep
1、grep -n root 1.txt 显示1.txt中包含root的内容并输出行号
2、grep -v root 1.txt 显示1.txt中不包含root的内容
3、grep -nv root 1.txt 显示1.txt中不包含root的内容并输出行号
4、grep ^s 1.txt 显示1.txt中以s开头的内容
5、grep -n n$ 1.txt 显示1.txt中n结尾的内容
sed
1、sed 's/root/hello/' 1.txt 将root替换成hello 只替换每一行的第一个 不修改原文件
2、sed 's/root/hello/g' 1.txt 将root替换成hello 替换所有的 不修改原文件
3、sed -i 's/root/hello/' 1.txt 将root替换成hello 修改原文件
4、sed ‘2 a new line’ 1.txt 将1.txt中第二行之后插入new line
5、sed ‘2 i new line’ 1.txt 将1.txt中第二行之前插入new line
awk
awk默认空格为分隔符
每行的标准 默认\n为标准 RS可以改变这个标准
大括号外面代表正则 大括号里面代表动作
1、搜索7.txt中包含uuid关键字的所有行
7.txt中设置冒号为分隔符,每个分隔符中内容代表一列 awk -F : ‘正则{动作}’ 7.txt
awk -F : '/uuid/{print $0}' 7.txt 表示找出包含uuid的内容 $0表示整行
awk -F : '/uuid/{print $5}' 7.txt 表示找出包含uuid的内容 并打印出第5列的内容
2、打印第二行信息
NR表示正在读第几行 NR==2表示读第2行
awk -F : 'NR==2{print $2}' 7.txt
3、使用begin加入标题
awk -F : ‘BEGIN{print "BEGIN BEGIN"}{print $1,$2}’ 7.txt 两个命令写在一个单括号里面 将BEGIN BEGIN 加入7.txt中的第一行的第一列和第二列
4、自定义分割符
echo "111 222|333 444|555 666" | awk 'BEGIN{RS="|"}{print $0}' 将111 222|333 444|555 666 输出 作为后面的输入 RS设置|为分割符 然后打印所有的行