linux常用命令总结->1
文件查看命令
cat //查看文件内容 示例:cat /etc/passwd 示例:cat -n /etc/passwd //-n参数行号 示例:cat >> xuliangwei.txt <<EOF //追加数据 test EOF head //查看文件头部内容,默认前十行 示例:head /etc/passwd 示例:head -n5 /etc/passwd //-n参数指定查看头几行 tail //查看文件尾部内容,默认最后十行 示例:tail /etc/passwd 示例:tail -f /var/log/messages // -f参数跟随尾部输出而变化 more //按空格可翻页查看文件内容,按q可推出 示例:more /etc/passwd less //和more类似 示例:less /etc/passwd
文件下载命令
wget //文件下载 -O //指定下载地址,更改名称 -T //超时时间 -q //安静下载(关闭wget输出) --spider //网络爬虫 示例:wget http://www.baidu.com curl //文件下载 示例:curl -o http://www.baidu.com yum install lrzsz rz //文件上传 sz //文件下载 示例:sz filename
命令查找命令
locate //查找文件或者目录 示例:locate /etc/sh //搜索etc目录下所有以sh开头的文件 示例:locate -i /etc/sh //搜索etc目录下,所有以sh开头的文件,忽略大小写 which //查找系统PATH变量目录下的命令(绝对路径) 示例:which ls whereis //查找文件索引数据库下的命令、源文件、man文件。非PATH变量查找,所以查找的面比which要广 -b,-m 示例:whereis ls 示例:whereis -b ls
字符处理命令
1.使用sort排序
很多情况下需要对无序的数据进行排序, 这时就需要用到sort排序了。 sort [OPTION]... [FILE]... -r:倒序 -n:按数字排序 -t:指定分隔符(默认空格) -k:指定第几列, 指定几列几字符(指定1,1 3.1,3.3) //演示soft的用法, 首先创建一个文件: [root@xuliangwei ~]# cat >> sort.txt <<EOF b:3 c:2 a:4 e:5 d:1 f:11 EOF //下面对输出的内容进行排序: [root@xuliangwei ~]# sort sort.txt a:4 b:3 c:2 d:1 e:5 f:11 //可观察到, sort文件具有一个特点, 第一个字符是字母, 第三个字符是数字, 中间是用冒号隔开。 //这样我们可以使用-t指定分隔符, 使用-k指定用于排序的列了。 [root@xuliangwei ~]# sort -t ":" -k2 sort.txt d:1 f:11 //第二行为什么是11?不应该按照顺序排列? c:2 b:3 a:4 e:5 //按照排序的方式, 只会看到第一个字符,11的第一个字符是1, 按照字符来排序确实比2小。 //如果想要按照数字的方式进行排序, 需要使用 -n参数。 [root@xuliangwei ~]# sort -t ":" -n -k2 p.txt d:1 c:2 b:3 a:4 e:5 f:11 //测试案例,对下面内容进行排序 192.168.3.1 00:0F:AF:81:19:1F 192.168.3.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.1.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.1.12 00:30:15:A2:3A:A1 192.168.1.1 00:0F:AF:81:19:1F 192.168.2.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.2.20 00:0F:AF:85:55:DE 192.168.1.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.0.151 00:0F:AF:85:6C:F6 192.168.1.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.3.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.3.12 00:30:15:A2:3A:A1 //针对第三列的第一个字符,第四列的第一个字符到第三个字符排序才是正确 [root@student tmp]# sort -t. -k3.1,3.1nr -k4.1,4.3nr test.txt
2.使用uniq删除重复内容 如果文件中有多行完全相同的内容, 当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数, 那么就可以使用uniq命令解决这个问题(但是必须配合sort使用)。
uniq [OPTION]... [INPUT [OUTPUT]] -c 计算重复的行 //演示uniq的用法, 首先创建一个文件: [root@xuliangwei ~]# cat uniq.txt abc 123 abc 123 //uniq需要和sort一起使用, 先使用sort排序, 让重复内容连续在一起 [root@xuliangwei ~]# cat uniq.txt |sort 123 123 abc abc //使用uniq去除相邻重复的行 [root@xuliangwei ~]# cat uniq.txt |sort|uniq 123 abc //使用-c参数, 能统计出文件中每行内容重复的次数 [root@xuliangwei ~]# cat uniq.txt |sort|uniq -c 2 123 2 abc
3.使用cut命令截取某一个字段
cut OPTION... [FILE]... -d:指定分隔符 -f:数字,取第几列 –f3,6三列和6列 -c:按字符取(空格也算) //测试数据, 过滤出文件里 xuliangwei以及552408925 #echo “Im xuliangwei, is QQ 552408925” >xuliangwei.com //实践思路 # sed 's#,# #g' xuliangwei.txt | cut -d " " -f2,6 # sed 's#,# #g' xuliangwei.txt | awk -F " " '{print $2 " " $5}' # awk -F '[, ]+' '{print $2,$5}' xuliangwei.txt # awk '{print $2 $5}' xuliangwei.txt | awk -F "," '{print $1" " $2}' # awk -F "[, ]" '{print $2 " " $6}' xuliangwei.txt 此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等 [root@student tmp]# cat web.log http://www.xuliangwei.com/index.html http://www.xuliangwei.com/1.html http://post.xuliangwei.com/index.html http://mp3.xuliangwei.com/index.html http://www.xuliangwei.com/3.html http://post.xuliangwei.com/2.html [root@student tmp]# awk -F '/' '{print $3}' web.log|sort -rn|uniq –c 3 www.xuliangwei.comxuliangwei.com 2 post.xuliangwei.comxuliangwei.com 1 mp3.xuliangwei.comxuliangwei.com [root@student tmp]# cut -d / -f3 web.log|sort -rn|uniq –c 3 www.xuliangwei.comxuliangwei.com 2 post.xuliangwei.comxuliangwei.com 1 mp3.xuliangwei.comxuliangwei.com
4.使用wc统计
wc - print newline, word, and byte counts for each file显示文件的行、单词与字节统计信息 wc [OPTION]... [FILE]... -l:显示文件行数 -c:显示文件字节 -w:显示文件单词 //统计fstab有多少行 [root@student ~]# wc -l /etc/fstab 15 /etc/fstab 显示/etc/services 文件行号 [root@student ~]# wc -l /etc/services 10774 /etc/services //扩展方法 [root@student ~]# grep -n "." /etc/services | tail -1 [root@student ~]# awk '{print NR $0}' /etc/services | tail -1 [root@student ~]# cat -n /etc/services | tail -1 [root@student ~]# sed '=' /etc/services | tail -2