当前位置: 首页 > 科技观察

Linux命令技巧30个必知命令技巧

时间:2023-03-17 21:15:13 科技观察

在Unix/Linux下,高效的工作方式不是操作图形页面,而是命令行操作,这意味着更容易实现自动化。用过Linux系统的朋友应该知道它命令行的强大之处。本文介绍Linux下搜索、删除、打包、解压、查询、VIM等30个常用命令技巧。1、Vim自动添加注释和智能换行#vi~/.vimrcsetautoindentsettabstop=4setshiftwidth=4functionAddTitle()callsetline(1,"#!/bin/bash")callappend(1,"#================================================="#Author:lizhenliang")callappend(3,"#CreateDate:".strftime("%Y-%m-%d"))callappend(4,"#Description:")callappend(5,"#=======================================================")endfmap:callAddTitle()打开文件后按F4自动添加注释,节省大量时间!2.在/data目录下找到并删除7天前创建的文件#find/data-ctime+7-execrm-rf{}\;#find/data-ctime+7|xargsrm-rf3。tar命令压缩排除一个目录#tarzcvfdata.tar.gz/data--exclude=tmp#--exclude参数不包含某个目录或文件后面可以有多个4.查看tar包归档文件,不要解压#tartfdata.tar.gz#t是列出归档文件目录,f是指定归档文件5.使用stat命令查看一个文件属性访问时间(Access)、修改时间(modify)、状态更改时间(Change)statindex.phpAccess:2018-05-1002:37:44.169014602-0500Modify:2018-05-0910:53:14.395999032-0400Change:2018-05-0910:53:38.855999002-04006。批量解压tar.gz方法一:#find.-name"*.tar。gz"-executarzxf{}\;方法二:#fortarin*.tar.gz;dotarzxvf$tar;done方法三:#ls*.tar.gz|xargs-itarzxvf{}7.过滤掉注释和空格方法一:#grep-v"^#"httpd.conf|grep-v"^$"方法二:#sed-e'/^$/d'-e'/^#/d'httpd.conf>http.conf或者#sed-e'/^#/d;/^$/d'#-e执行多个sed命令方法三:#awk'/^[^#]/|/"^$"'httpd.conf或#awk'!/^#|^$/'httpd.conf8.过滤/etc/passwd文件中的所有用户方法一:#cat/etc/passwd|cut-d:-f1方法二:#awk-F":"'{print$1}'/etc/passwd9.iptables网站先跳转到启用路由转发:echo"1">/proc/sys/net/ipv4/ip_forward#内网访问外网暂时有效(SNAT):iptables--tnat-APOSTROUTING-s[内网IP或网段]-jSNAT--to[公网IP]#内网服务器要指向防火墙内网IP作为网关公网访问内网(DNAT)(公网端口映射内网端口):iptables--tnat-APREROUTING-d[外网IP]-ptcp--dport[外网端口]-jDNAT--to[内网IP:内网端口]#内网服务器配置防火墙内网IP为网关,否则数据包回不来。另外这里也不需要配置SNAT,因为系统服务会根据数据包的来源返回。10、iptables将本地80端口转发到本地8080端口#iptables-tnat-APREROUTING-ptcp--dport80-jREDIRECT--to-ports808011。find命令找到文件,复制到/opt目录方法一:#find/etc-namehttpd.conf-execcp-rf{}/opt/\;:#-exec执行下面的命令,{}代表结果之前的输出,\;endcommand方法二:#find/etc-namehttpd.conf|xargs-icp{}/opt#-i表示输出结果用{}代替12.查看根目录下大于1G的文件#find/-size+1024M默认单位是b,可以使用其他单位如C,K,M13.查看服务器IP连接数#netstat-tun|awk'{print$5}'|cut-d:-f1|sort|uniq-c|sort-n-tun:-tu是显示tcp和udp连接,n是显示IP地址cut-d:-f1:cut是选择性显示一行内容的命令,-d指定:作为分隔符,-f1显示分隔符后的第一个字段。uniq-c:报告或删除文本中的重复行,-c在输出行前面加上出现的次数sort-n:按照不同类型排序,默认排序是升序,-r参数改为降序,-n是根据值14,在第391行插入一行,包括特殊符号"/"#sed-i"391s/^/AddTypeapplication\/x-httpd-php.php.html/"httpd.conf15.列出nginx日志访问最多的10个IP方法一:#awk'{print$1}'access.log|sort|uniq-c|sort-nr|head-n10sort:sortuniq-c:mergeduplicatelines,and记录重复次数sort-nr:按数字降序排序方法二:#awk'{a[$1]++}END{for(vina)printv,a[v]|"sort-k2-nr|head-10"}'访问.log16。在nginx日志中显示一天中流量最多的前10个IP#awk'$4>="[16/May/2017:00:00:01"&&$4<="[16/May/2017:23:59:59"'access_test.log|sort|uniq-c|sort-nr|head-n10#awk'$4>="[16/Oct/2017:00:00:01"&&$4<="[16/Oct/2017:23:59:59"{a[$1]++}END{for(iina){printa[i],i|"sort-k1-nr|head-n10"}}'access.log17。获取当前时间记录上一分钟的访问#date=`date+%d/%b/%Y:%H:%M--date="-1minute"`;awk-vd=$date'$0~d{c++}END{printc}'access.log#date=`date+%d/%b/%Y:%H:%M--date="-1minute"`;awk-vd=$date'$4>="["d":00"&&$4<="["d":59"{c++}END{printc}'access.log#grep`date+%d/%b/%Y:%H:%M--date="-1minute"`access.log|awk'END{printNR}'#start_time=`date+%d/%b/%Y:%H:%M:%S--date="-5minute"`;end_time=`date+%d/%b/%Y:%H:%M:%S`;awk-vstart_time="[$start_time"-vend_time="[$end_time"'$4>=start_time&&$4<=end_time{count++}END{printcount}'access.log18.查找1-255之间的整数方法一:#ifconfig|grep-o'[0-9]\+'#+匹配前一个字符一次或多次方法二:#ifconfig|egrep-o'\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'19.查找IP地址#ifconfig|grep-o'[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'#-o只显示匹配的字符20.在文档中添加开始和结束说明信息#awk'BEGIN{print"开始显示信息"}{print$1,$NF}END{print"结束显示信息"}'/etc/passwd#awk'BEGIN{printf"dateip\n-----------------\n"}{打印$3,$4}END{printf"----------------\nend...\n"}'/var/log/messagesdateip----------------03:13:01localhost10:51:45localhost----------------结束...21。查看网络状态命令#netstat-antp#查看所有网络连接#netstat-lntp#只查看监控端口信息#lsof-ppid#查看进程打开的文件句柄#lsof-i:80#查看端口被哪个进程占用通过方法2:#opensslrand-base644方法3:#cat/proc/sys/kernel/random/uuid|cut-c1-823。while无限循环whiletrue;do#条件正好等于true,条件["1"也可以直接用=="1"],条件永远为真ping-c2www.baidu.comdone24。awk格式化输出将文本列左对齐或右对齐左对齐:#awk'{printf"%-15s%-10s%-20s\n",$1,$2,$3}'test.txt右对齐:#awk'{printf"%15s%10s%20s\n",$1,$2,$3}'test.txt25.整数运算保留小数点方法一:#echo'scale=2;10/3;'|bc#scale参数表示小数点位数方法二:#awkBEGIN'{printf"%.2f\n",10/3}'26。数和#cata.txt10235356方法一:#!/bin/bashwhilereadnum;dosum=`expr$sum+$num`done20&&NR<31)print$0}'test.txt方法二:#sed-n'20,30p'test.txt方法三:#head-30test.txt|tail30。替换文本两列中的#cata。txt60.35.1.15www.baidu.com45.46.26.85www.sina.com.cn#awk'{print$2"\t"$1}'a.txtLinux命令使用起来非常熟练,正确使用会大大提高工作效率,同学们一定要仔细研究如何使用每一个命令,然后思考命令的组合