linux常用shell操作指令(Linux常用命令与shell脚本学习)
导读:Linux常用命令 1、 关机/重启/注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00...
Linux常用命令
1 、 关机/重启/注销
常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h +10 预定时间关机(10分钟后) shutdown -c 取消指定时间关机 shutdown -r now 重启 shutdown -r 10 10分钟之后重启 shutdown -r 11:00 定时重启 reboot 重启 init 6 重启 init 0 即刻关机 telinit 0 关机 poweroff 即刻关机 halt 关机 sync buff数据同步到磁盘 (建议关机之前都执行) logout 退出登录Shell2 、 系统信息和性能查看
常用命令 作用 uname -a 查看内核/OS/CPU信息 uname -r 查看内核版本 uname -m 查看处理器架构 arch 查看处理器架构 hostname 查看计算机名 who 显示当前登录系统的⽤户 who am i 显示登录时的⽤户名 whoami 显示当前⽤户名 cat /proc/version 查看linux版本信息 cat /proc/cpuinfo 查看CPU信息 cat /proc/interrupts 查看中断 cat /proc/loadavg 查看系统负载 uptime 查看系统运⾏时间 、⽤户数 、负载 env 查看系统的环境变量 lspci -tv 查看系统PCI设备信息 lsmod 查看已加载的系统模块 lsusb -tv 查看系统USB设备信息 ( yum install usbutils -y) grep MemTotal /proc/meminfo 查看内存总量 grep MemFree /proc/meminfo 查看空闲内存量 free -m 查看内存⽤量和交换区⽤量 date 显示系统⽇期时间 cal 2023 显示2023⽇历表 top 动态显示cpu/内存/进程等情况 vmstat 1 20 每1秒采⼀次系统状态 ,采20次 iostat 查看io读写/cpu使⽤情况 sar -u 1 10 查询cpu使⽤情况(1秒⼀次 ,共10次) sar -d 1 10 查询磁盘性能 (1秒⼀次 ,共10次)3 、 磁盘和分区
常用命令 作用 fdisk -l 查看所有磁盘分区 swapon -s 查看所有交换分区 df -h / df -hl 查看磁盘使⽤情况及挂载点 du -sh logs 查看指定某个⽬录(logs)的⼤⼩ du -sk * | sort -rn 从⾼到低依次显示⽂件和⽬录⼤⼩ mount /dev/hda2 /mnt/hda2 挂载hda2盘 mount -t ntfs /dev/sdc1 /mnt/usbhd1 指定⽂件系统类型挂载(如ntfs) mount -o loop xxx.iso /mnt/cdrom 挂载iso⽂件 mount /dev/sda1 /mnt/usbdisk 挂载usb盘/闪存设备 umount -v /dev/sda1 通过挂载点卸载 fuser -km /mnt/hda1 强制卸载(慎⽤)4 、 ⽤户和⽤户组
常用命令 作用 useradd wq 创建⽤户 userdel -r wq 删除⽤户 usermod -g group_name user_name 修改⽤户的组 usermod -aG group_name user_name 将⽤户添加到组 usermod -d /root/logs wq 更改登录目录 groups root 查看root⽤户所在的组 groupadd group_name 创建⽤户组 groupdel group_name 删除⽤户组 groupmod -n new_name old_name 重命名⽤户组 su - user_name 完整切换到⼀个⽤户环境 passwd 修改⼝令 passwd wq 修改某⽤户的⼝令 w 查看活动⽤户 id wq 查看指定⽤户wq信息 last 查看⽤户登录⽇志 crontab -l 查看当前⽤户的计划任务 cut -d: -f1 /etc/passwd 查看系统所有⽤户 cut -d: -f1 /etc/group 查看系统所有组5 、 ⽹络和进程管理
常用命令 作用 ifconfig 查看⽹络接⼝属性 ifconfig eth0 查看某⽹卡的配置 route -n 查看路由表 netstat -lntp 查看所有监听端⼝ netstat -antp 查看已经建⽴的TCP连接 netstat -lutp 查看TCP/UDP的状态信息 ifup eth0 启⽤eth0⽹络设备 ifdown eth0 禁⽤eth0⽹络设备 iptables -L 查看iptables规则 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 配置ip地址 dhclient eth0 以dhcp模式启⽤eth0 route add -net 0/0 gw Gateway_IP 配置默认⽹关 route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 配置静态路由到达⽹ 络192.168.0.0/16 route del 0/0 gw Gateway_IP 删除静态路由 host qq.com 解析主机名 (yum install bind-utils -y) nslookup qq.com 查询DNS记录 ,查看域名解 析是否正常 ps -ef 查看所有进程 ps -ef | grep java 过滤出你需要的进程 kill -s name kill指定名称的进程 kill -s pid kill指定pid的进程 kill -9 pid (等于kill -s 9 pid) 表示强制 ,尽快终止一个进程6 、 常⻅系统服务命令
常用命令 作用 chkconfig --list 列出系统服务 service <服务名> status 查看某个服务 service <服务名> start 启动某个服务 service <服务名> stop 终⽌某个服务 service <服务名> restart 重启某个服务 systemctl status <服务名> 查看某个服务 systemctl start <服务名> 启动某个服务 systemctl stop <服务名> 终⽌某个服务 systemctl restart <服务名> 重启某个服务 systemctl enable <服务名> 开启⾃启动 systemctl disable <服务名> 关闭⾃启动7 、 ⽂件和⽬录操作
常用命令 作用 cd <⽬录名> 进⼊某个⽬录 cd .. 回上级⽬录 cd ../.. 回上两级⽬录 cd 进个⼈主⽬录 cd - 回上⼀步所在⽬录 pwd 显示当前路径 ls 查看⽂件⽬录列表 ls -F 查看⽬录中内容(显示是⽂件还是⽬录) ls -l 查看⽂件和⽬录的详情列表 ls -a 查看隐藏⽂件 ls -lh 查看⽂件和⽬录的详情列表(增强⽂件⼤⼩易读性) ls -lSr 查看⽂件和⽬录列表(以⽂件⼤⼩升序查看) tree 查看⽂件和⽬录的树形结构 (yum install tree -y) mkdir <⽬录名> 创建⽬录 mkdir dir1 dir2 同时创建两个⽬录 mkdir -p /tmp/dir1/dir2 创建⽬录树 rm -f file1 删除file1⽂件 rmdir dir1 删除dir1⽬录 rm -rf dir1 删除dir1⽬录和其内容 rm -rf dir1 dir2 同时删除两个⽬录及其内容 mv old_dir new_dir 重命名/移动⽬录 cp file1 file2 复制⽂件 cp dir/* . 复制某⽬录下的所有⽂件⾄当前⽬录 cp -a dir1 dir2 复制⽬录 cp -a /tmp/dir1 . 复制⼀个⽬录⾄当前⽬录 ln -s file1 link1 创建指向⽂件/⽬录的软链接 ln file1 lnk1 创建指向⽂件/⽬录的物理链接 find / -name file1 从跟⽬录开始搜索⽂件/⽬录 find / -user user1 搜索⽤户user1的⽂件/⽬录 find /dir -name *.bin 在⽬录/dir中搜带有.bin后缀的⽂件 locate <关键词> 快速定位⽂件 ( yum install mlocate -y updatedb) locate *.mp4 寻找.mp4结尾的⽂件 whereis <关键词> 显示某⼆进制⽂件/可执⾏⽂件的路径 which <关键词> 查找系统⽬录下某的⼆进制⽂件 chmod ugo+rwx dir1 设置⽬录所有者(u) 、群组(g)及其他⼈(o)的读(r)写 (w)执⾏(x)权限 chmod go-rwx dir1 移除群组(g)与其他⼈(o)对⽬录的读写执⾏权限 chown user1 file1 改变⽂件的所有者属性 chown -R user1 dir1 改变⽬录的所有者属性 chgrp group1 file1 改变⽂件群组 chown user1:group1 file1 改变⽂件的所有⼈和群组8 、 ⽂件查看和处理
常用命令 作用 cat file1 查看⽂件内容 cat -n file1 查看内容并标示⾏数 tac file1 从最后⼀⾏开始反看⽂件内容 more file1 查看⼀个⻓⽂件的内容 less file1 类似more命令 ,但允许反向操作 head -2 file1 查看⽂件前两⾏ tail -2 file1 查看⽂件后两⾏ tail -f /log/msg 实时查看添加到⽂件中的内容 tail -f -n 20 debug.log 20行一批滚动查看文件内容 grep haha hello.txt 在⽂件hello.txt中查找关键词haha grep ^sheep hello.txt 在⽂件hello.txt中查找以sheep开头的内容 grep [0-9] hello.txt 选择hello.txt⽂件中所有包含数字的⾏ sed s/s1/s2/g hello.txt 将hello.txt⽂件中的s1替换成s2 sed /^$/d hello.txt 从hello.txt⽂件中删除所有空⽩⾏ sed / *#/d; /^$/d hello.txt 从hello.txt⽂件中删除所有注释和空⽩⾏ sed -e 1d hello.txt 从⽂件hello.txt 中排除第⼀⾏ sed -n /s1/p hello.txt 查看只包含关键词"s1"的⾏ sed -e s/ *$// hello.txt 删除每⼀⾏最后的空⽩字符 sed -e s/s1//g hello.txt 从⽂档中只删除词汇s1并保留剩余全部 sed -n 1,5p;5q hello.txt 查看从第1⾏到第5⾏内容 sed -n 5p;5q hello.txt 查看第5⾏ paste file1 file2 合并两个⽂件或两栏的内容 paste -d + file1 file2 合并两个⽂件或两栏的内容 ,中间⽤"+"区分 sort file1 file2 排序两个⽂件的内容 comm -1 file1 file2 ⽐较两个⽂件的内容(去除file1所含内容) comm -2 file1 file2 ⽐较两个⽂件的内容(去除file2所含内容) comm -3 file1 file2 ⽐较两个⽂件的内容(去除两⽂件共有部分)9 、 打包和解压
常用命令 作用 zip xxx.zip file 压缩⾄zip包 zip -r xxx.zip file1 file2 dir1 将多个⽂件+⽬录压成zip包 unzip xxx.zip 解压zip包 tar -cvf xxx.tar file 创建⾮压缩tar包 tar -cvf xxx.tar file1 file2 dir1 将多个⽂件+⽬录打tar包 tar -tf xxx.tar 查看tar包的内容 tar -xvf xxx.tar 解压tar包 tar -xvf xxx.tar -C /dir 将tar包解压⾄指定⽬录 tar -cvfj xxx.tar.bz2 dir 创建bz2压缩包 tar -jxvf xxx.tar.bz2 解压bz2压缩包 tar -cvfz xxx.tar.gz dir 创建gzip压缩包 tar -zxvf xxx.tar.gz 解压gzip压缩包 bunzip2 xxx.bz2 解压bz2压缩包 bzip2 filename 压缩⽂件 gunzip xxx.gz 解压gzip压缩包 gzip filename 压缩⽂件 gzip -9 filename 最⼤程度压缩10、 RPM包管理命令
常用命令 作用 rpm -qa 查看已安装的rpm包 rpm -q pkg_name 查询某个rpm包 rpm -q --whatprovides xxx 显示xxx功能是由哪个包提供的 rpm -q --whatrequires xxx 显示xxx功能被哪个程序包依赖的 rpm -q --changelog xxx 显示xxx包的更改记录 rpm -qi pkg_name 查看⼀个包的详细信息 rpm -qd pkg_name 查询⼀个包所提供的⽂档 rpm -qc pkg_name 查看已安装rpm包提供的配置⽂件 rpm -ql pkg_name 查看⼀个包安装了哪些⽂件 rpm -qf filename 查看某个⽂件属于哪个包 rpm -qR pkg_name 查询包的依赖关系 rpm -ivh xxx.rpm 安装rpm包 rpm -ivh --test xxx.rpm 测试安装rpm包 rpm -ivh --nodeps xxx.rpm 安装rpm包时忽略依赖关系 rpm -e xxx 卸载程序包 rpm -Fvh pkg_name 升级确定已安装的rpm包 rpm -Uvh pkg_name 升级rpm包(若未安装则会安装) rpm -V pkg_name RPM包详细信息校验11 、 YUM包管理命令
常用命令 作用 yum repolist enabled 显示可⽤的源仓库 yum search pkg_name 搜索软件包 yum install pkg_name 下载并安装软件包 yum install --downloadonly pkg_name 只下载不安装 yum list 显示所有程序包 yum list installed 查看当前系统已安装包 yum list updates 查看可以更新的包列表 yum check-update 查看可升级的软件包 yum update 更新所有软件包 yum update pkg_name 升级指定软件包 yum deplist pkg_name 列出软件包依赖关系 yum remove pkg_name 删除软件包 yum clean all 清除缓存 yum clean packages 清除缓存的软件包 yum clean headers 清除缓存的header12 、 DPKG包管理命令 ( yum install dpkg -y)
常用命令 作用 dpkg -c xxx.deb 列出deb包的内容 dpkg -i xxx.deb 安装/更新deb包 dpkg -r pkg_name 移除deb包 dpkg -P pkg_name 移除deb包(不保留配置) dpkg -l 查看系统中已安装deb包 dpkg -l pkg_name 显示包的⼤致信息 dpkg -L pkg_name 查看deb包安装的⽂件 dpkg -s pkg_name 查看包的详细信息 dpkg –unpack xxx.deb 解开deb包的内容13、 APT软件⼯具
常用命令 作用 apt-cache search pkg_name 搜索程序包 apt-cache show pkg_name 获取包的概览信息 apt-get install pkg_name 安装/升级软件包 apt-get purge pkg_name 卸载软件(包括配置) apt-get remove pkg_name 卸载软件(不包括配置) apt-get update 更新包索引信息 apt-get upgrade 更新已安装软件包 apt-get clean 清理缓存shell脚本入门
脚本格式
脚本以#!/bin/bash开头(指定解析器)
#!/bin/bash使用shell输出helloworld
新建文件 touch helloworld.sh vi helloworld.sh 文件内容 #!/bin/bash echo "helloworld!!!!" 运行 # 方式一 sh helloworld.sh # 方式二 ,需要给权限 ,chmod 777 helloworld.sh chmod 777 helloworld.sh ./helloworld.sh 方式1 ,本质是bash解析器帮你执行脚本 ,所以脚本本身不需要执行权限; 方式2 ,本质是脚本自己需要执行,所以需要执行权限多命令处理
在/tmp目录下创建一个test.txt文件 ,并在文件中写入1234567890
vi batch.sh 输入 #!/bin/bash cd /tmp touch test.txt echo "1234567890" >> test.txtshell中的变量
常用系统变量
$HOME
$PWD
$SHELL
$USER [root@mc ~]# echo $HOME /root [root@mc ~]# echo $PWD /root [root@mc ~]# echo $SHELL /bin/bash [root@mc ~]# echo $USER root自定义变量
基本语法 定义变量:变量=值 等号两边不能留有空格 撤销变量:unset 变量 输出变量:echo $变量 声明静态变量: readonly 变量 ,注意:不能unset 变量定义规则 变量名称可以由字母,数字和下划线组成 ,不能以数字开头 ,环境变量名建议大写 等号两侧不能有空格 在bash中 ,变量默认类型都是字符串类型 ,无法直接进行数值运算 变量的值如果有空格 ,需要使用双引号或单引号括起来 可把变量提升为全局变量 ,可供其他shell程序使用 export 变量 #!/bin/bash echo "helloworld!!!!" echo $A特殊变量
$n $n (描述:n为数字 ,$0代表脚本名称 ,10以内参数用$1-9 表示 , 10以上的需要用大括号包含 ,9表示 ,10以上的需要用大括号包含 ,9表示,10以上的需要用大括号包含 ,{10}) #!/bin/bash echo "$0 $1 $2 $3" $# $# (功能描述:获取所有输入参数个数 ,常用于循环) #!/bin/bash echo "$0 $1 $2 $3" echo $# $* 和$@ $* (描述:代表命令行中所有的参数,把所有参数看成一个整体) $@ (描述:也代表命令行中所有的参数 ,不过把每个参数区分对待) #!/bin/bash echo "$0 $1 $2 $3" echo $# echo $* echo $@ $? $? (描述:最后一次执行命令的状态 ,0:正确执行)运算符
$((运算式)) 或 $[运算式] expr +,-,*,/,% 加减乘除取余 expr运算符间要有空格条件判断
基本语法
[condition] (注意 condition前后要有空格)常用判断条件
两个整数之间比较 符号 描述 -lt less than)小于 -le (less equal) 小于等于 -eq (equal)等于 -gt (greater than) 大于 -ge (greater equal) 大于等于 -ne (not equal) 不等于 文件权限判断 符号 描述 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) 文件类型判断 符号 描述 -f 文件存在并且是一个常规文件(file) -e 文件存在(existence) -d 文件存在病是一个目录(directory)多条件判断
&& ||流程控制
if判断
#!/bin/bash if [ $1 -eq 1 ] then echo "成功" elif [ $1 -eq 2 ] then echo "失败" fi注意事项:
(1)[ 条件判断式 ] ,中括号和条件判断式之间必须有空格
(2)if后要有空格
case 语句
#!/bin/bash case $1 in 1) echo "成功" ;; 2) echo "失败" ;; 3) echo "未知" ;; *) echo "默认" ;; esac注意事项:
case行尾必须为单词“in ” ,每一个模式匹配必须以右括号“) ”结束 。 双分号“;; ”表示命令序列结束 ,相当于java中的break 。 最后的“*) ”表示默认模式 ,相当于java中的default 。for循环
语法1 从1加到100 #!/bin/bash s=0 for((i=1;i<=100;i++)) do s=$[$s + $i] done echo $s 语法2 打印所有输入参数 #!/bin/bash for i in $* do echo $i done比较$*和$@区别
$*和$@都表示传递给函数或脚本的所有参数 ,不被双引号“ ”包含时 ,都以$1 $2 …$n的形式输出所有参数 。 #!/bin/bash for i in $* do echo "* $i " done for j in $@ do echo "@ $j" done 当它们被双引号“ ”包含时 ,“$* ”会将所有的参数作为一个整体 ,以“$1 $2 …$n ”的形式输出所有参数;“$@ ”会将各个参数分开 ,以“$1 ” “$2 ”… ”$n”的形式输出所有参数 。 #!/bin/bash for i in "$*" #$*中的所有参数看成是一个整体 ,所以这个for循环只会循环一次 do echo "* $i" done for j in "$@" #$@中的每个参数都看成是独立的,所以“$@ ”中有几个参数 ,就会循环几次 do echo "@ $j" doneWHILE循环
从1加到100 #!/bin/bash s=0 i=1 while [ $i -le 100 ] do s=$[$s + $i] i=$[$i + 1] done echo $sread读取控制台输入
基本语法
read(选项)(参数) 选项:-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒) 。
参数
变量:指定读取值的变量名 提示7秒内 ,读取控制台输入的名称 #!/bin/bash read -t 7 -p "7秒内输入名称:" NAME echo $NAME函数
系统函数
basename基本语法 basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来 。 选项:suffix为后缀 ,如果suffix被指定了 ,basename会将pathname或string中的suffix去掉 。 # 用法一 [root@mc datas]# basename /root/datas/read.sh read.sh # 用法二 [root@mc datas]# basename /root/datas/read.sh .sh read dirname基本语法 dirname 文件绝对路径(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分) ,然后返回剩下的路径(目录的部分)) [root@mc datas]# dirname /root/datas/read.sh /root/datas 自定义函数 [ function ] funname[()] { Action; [return int;] } funname 必须在调用函数地方之前 ,先声明函数 ,shell脚本是逐行运行 。不会像其它语言一样先编译 。 函数返回值 ,只能通过$?系统变量获得 ,可以显示加:return返回 ,如果不加 ,将以最后一条命令运行结果 ,作为返回值 。return后跟数值n(0-255) 计算两个输入参数的和 #!/bin/bash function sum() { s=0 s=$[ $1 + $2 ] echo "$s" } read -p "请输入第一个数: " n1; read -p "请输入第二个数: " n2; sum $n1 $n2;Shell工具
cut
cut的工作就是“剪 ” ,具体的说就是在文件中负责剪切数据用的 。cut 命令从文件的每一行剪切字节 、字符和字段并将这些字节 、字符和字段输出。 基本用法cut [选项参数] filename
说明:默认分隔符是制表符 选项参数 功能 -f 列号 ,提取第几列 -d 分隔符,按照指定分隔符分割列 准备数据 vim cut.txt dong shen guan zhen wo wo lai lai le le 切割cut.txt第一列 cut -d " " -f 1 cut.txt 切割cut.txt第二 、三列 cut -d " " -f 2,3 cut.txt 在cut.txt文件中切割出guan cat cut.txt | grep "guan" | cut -d " " -f 1 选取系统PATH变量值 ,第2个“:”开始后的所有路径: echo $PATH | cut -d: -f 2- 切割ifconfig 后打印的IP地址 ifconfig eth0 | grep "inet" | cut -d t -f 2sed
sed是一种流编辑器 ,它一次处理一行内容 。处理时,把当前处理的行存储在临时缓冲区中 ,称为“模式空间 ” ,接着用sed命令处理缓冲区中的内容 ,处理完成后 ,把缓冲区的内容送往屏幕 。接着处理下一行 ,这样不断重复 ,直到文件末尾。文件内容并没有改变 ,除非你使用重定向存储输出 。 基本用法sed [选项参数] ‘command’ filename
选项参数说明 选项参数 功能 -e 直接在指令列模式上进行sed的动作编辑 。 命令功能描述 命令 功能描述 a 新增 ,a的后面可以接字串 ,在下一行出现 d 删除 s 查找并替换 将“mei nv ”这个单词插入到cut.txt第二行下 ,打印 sed 2a mei nv cut.txt 删除cut.txt文件所有包含wo的行 sed /wo/d cut.txt 将cut.txt文件中wo替换为ni sed s/wo/ni/g cut.txt 注意:‘g’表示global ,全部替换 将cut.txt文件中的第二行删除并将wo替换为ni sed -e 2d -e s/wo/ni/g cut.txtawk
一个强大的文本分析工具 ,把文件逐行的读入,以空格为默认分隔符将每行切片 ,切开的部分再进行分析处理 。
基本用法awk [选项参数] ‘pattern1{action1} pattern2{action2}...’ filename
pattern:表示AWK在数据中查找的内容 ,就是匹配模式
action:在找到匹配内容时所执行的一系列命令 选项参数说明 选项参数 功能 -F 指定输入文件折分隔符 -v 赋值一个用户定义变量 数据准备 sudo cp /etc/passwd ./ 搜索passwd文件以root关键字开头的所有行,并输出该行的第7列 。 awk -F: /^root/{print $7} passwd 搜索passwd文件以root关键字开头的所有行 ,并输出该行的第1列和第7列 ,中间以“_ ”号分割 awk -F: /^root/{print $1"_"$7} passwd 只显示/etc/passwd的第一列和第七列 ,以逗号分割 ,且在所有行前面添加列名user ,shell在最后一行添加"dahaige ,/bin/zuishuai" 。 awk -F : BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"} passwd注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行 。
将passwd文件中的用户id增加数值1并输出 awk -v i=1 -F: {print $3+i} passwd awk的内置变量 变量 说明 FILENAME 文件名 NR 已读的记录数 NF 浏览记录的域的个数(切割后 ,列的个数) 统计passwd文件名 ,每行的行号 ,每行的列数 awk -F: {print "filename:" FILENAME ", linenumber:" NR ",columns:" NF} passwd 切割IP ifconfig eth0 | grep "inet" | awk -F t {print $2} | awk -F " " {print $1} 查询cut.txt中空行所在的行号 awk /^$/{print NR} sed.txtsort
sort命令是在Linux里非常有用 ,它将文件进行排序 ,并将排序结果标准输出 。
基本语法sort(选项)(参数)
选项 说明 -n 依照数值的大小排序 -r 以相反的顺序来排序 -t 设置排序时所用的分隔字符 -k 指定需要排序的列参数:指定待排序的文件列表
数据准备 vim sort.sh bb:40:5.4 bd:20:4.2 xz:50:2.3 cls:10:3.5 ss:30:1.6 按照“: ”分割后的第三列倒序排序 。 sort -t : -nrk 3 sort.shvim常用快捷键
查看大图
grep常见用法
查找目录
ls | grep logs查找文件(字符串)
ls | grep "for" # 查找wo grep wo cut.txt # 查找空格 grep " " cut.txt查找多个字符串
grep -e wo -e zhen cut.txt搜索包含两个连续的“d ”字母的字符串
egrep -E d\{2} cut.txt grep -E d\{2} cut.txt[]括号用于匹配一组字符中的任何一个 。
grep "[1358]" cut.txt[-]括号可用于指定数字或字母字符范围
grep "[6-9]" cut.txt^脱字符号用于搜索只出现在行的开头的模式
grep ^d cut.txt带方括号的脱字符号用于从搜索模式中排除字符
grep "[^6-9]" cut.txt$符号用于搜索只出现在行的末尾的模式
grep "9$" cut.txt** or条件**
grep -E 8|9 cut.txt egrep 8|9 cut.txt忽略大小写 -i
grep -i dong cut.txt搜索时区分大小写
如果我们要搜索一个字符串 ,其中第一个可以是大写或小写,但字符串的其余部分应该是小写怎么办?在这种情况下 ,无法使用-i 忽略大小写 ,所以一种简单的方法是使用方括号 。 grep [Dd]ong cut.txt带行号 -n
grep -n wo cut.txt输出前后行 -C
输出之前行-B
输出之后行-A
grep -A 1 la cut.txt grep -B 1 la cut.txt grep -C 1 la cut.txt对结果排序
grep "[6-9]" cut.txt | sort多文件查找-l与-L
# 包含使用-l grep -l bash *.sh # 不包含使用-L grep -L bash *.sh精确搜索
通过使用<和>来准确匹配到了 bin 这个词 grep "\<bin\>" /etc/passwd创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!