linux基础命令

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设置|为分割符 然后打印所有的行

你可能感兴趣的:(linux基础命令)