linux
作为一名攻城狮,可能最基本的就是用linux的命令来让我们的工作更加高效,这篇博客就是总结博主认为比较实用的几类命令,尽量和需求挂钩。
linux系统想必大家都十分的熟悉,实用linux命令让我们的工作更加简便对于我们来说更加是家常便饭,实现声明这里仅仅是列举一些命令的用法,对于高阶段位的你可以实用
man command
这类命令自行查看用法,只不过很多时候我们更希望获得直白一点的讲解而已。
举很多栗子
可能我更希望大家从实际的需求去实用一些东西,我这里我列举一些场景相关的命令实用
1.去除文件重复行
sort -n filename | uniq
很容易看出sort是将原有文件进行排序,而uniq是将相邻的行进行去重。
进一步需求,如果想看重复行数的次数怎么办呢?
sort -n filename | uniq -c
2.你不知道的ls
ls命令经常用于查看文件文件夹下的文件,但是如果是如下场景如何处理呢?你想按照时间顺序查看目录的文件,因为你新建了一个文件,所以你想看看建成功了没有,这个时候你是不是想按照时间排序这些文件呢?
ls -Sl 从大到小
ls -Slr 从小到大
3 替换文本中的某个字符串
sed -i 's/Misc\.PhysicalAddress/Misc_PhysicalAddress/' * 替换文本中的字符串
简单直接,直接拷贝过来就用哦。
查看端口占用
做web开发你的是不是每次启动都要面临端口占用的苦恼,没差都是重新搜索怎么查看端口占用
netstat -tln 查看端口使用情况
netstat -tln | grep 8083
lsof -i :8083
kill -9 进程id
lsof查看8083这个端口没什么程序占用的,如果没有用直接kill掉,一套命令web开发必备。
不同维度的grep
1、查看统计当前目录下文件的个数
ls -l | grep "^-" | wc -l
2、查看统计当前目录下文件的个数,包括子目录里的。
ls -lR| grep "^-" | wc -l
3、查看某目录下文件夹(目录)的个数,包括子目录里的。
ls -lR| grep "^d" | wc -l
不常用的cut
有个文本的内容是这样的“abc sdf sdf”
cat test.txt|cut -d " " -f 2
使用上述命令就能切分文本并返回指定列,当然你使用awk也能达到相应的效果
可见 cut命令的用法
-d 分隔符
-f 分割之后的第几个元素
文件查找
find dir -name fileName 查找文件目录下的某个文件
find dir -iname fileName 查找文件目录下的某个文件不区分大小写
find dir -iname [ab].sh 查找文件目录下的某个文件带有正则
命令小结
上面是根据具体需求整理的需求用法,下面我们就要介绍每个命令具体的选项,针对复杂的使用场景,你要自己组装了哦
comm
comm 1.txt 2.txt
对二个文件进行对比 分别输出 1独有 和2 独有 已经公共的
使用参数
-1 不显示1个文件总的独有文本行
-2 不显示2个文件总的独有文本行
-3 不显示公共的行
grep
命令说明:按行处理,输出文件中包含搜索字符串的所有行。
格式:grep [-acinv] ‘搜索字符串’ filename
参数说明:
-a:在二进制文件中,以文本文件的方式搜索数据;
-c:计算找到“搜索字符串”的次数;
-i:忽略大小写;
-n:输出行号;
-v:反向选择;
-E:扩展正则表达式
-w 匹配单个单词
-r 不仅搜索当前目录还搜索子目录
cut
命令说明:按行处理,将一行消息的某段切出来。
格式:cut -d '分割字符' -f fields
-b 只选择制定的字节
-c 只选择制定的字节
-d 自定义分隔符
-f 只选择列表中制定的文本列
-n 取消分割多字节字符
-s 输出不包含列分隔符的行
awk
命令说明: 将一行消息分成数个段来处理,适合处理小型的数据。
格式:awk '条件类型 {动作}' file
$n:该行的第n个字段;
NF:每一行拥有的字段总数;
NR:当前行的行号;
FS:分隔符,默认为空格键;
例如:
cat /etc/passwd | awk 'BEGIN {FS=":"} $S3<10 {print $1 "\t" $3}',
打印passwd文件第三栏小于10的行的第1、3栏。
sed
命令说明: 分析STDIN的数据,将数据处理后,输出到STDOUT。
格式:sed [-nefr] 动作
参数说明:
-n:安静模式,仅显示经过sed特殊处理的行;
-e:直接在命令行模式进行sed的操作编辑;
-f file:将sed操作写在一个文件中;
-r:支持扩展正则表达式语法;
动作说明:[n1[, n2]] functions
其中,n1和n2代表“选择进行操作的行数”,function有下面这些操作:
新增
nl /etc/passwd | sed '2a Hello World',在/etc/passwd第2行下面新增一行,写入"Hello World"。
插入
nl /etc/passwd | sed '2i Hello World',在/etc/passwd第2行上面新增一行,写入"Hello World"
替换
nl /etc/passwd | sed '2,5c Hello World',将/etc/passwd第2至5行的内容替换为"Hello Wolrd"
删除
nl /etc/passwd | sed '2,5d',删除/etc/passwd中的第2至5行。
打印
nl -n /etc/passwd | sed '2,5p',仅显示2到5行,注意,如果不加-n,2到5行将重复输出。
搜索
nl /etc/passwd | sed '1,20s/old/new/g'
sort
命令说明:将文本文件的内容按行排序。
格式:sort [-fbMnrtuk] [file or stdin]
参数说明:
-f:忽略大小写;
-b:忽略最前面的空格;
-u:即uniq,重复行仅出现一次;
-M:以月份的名字来排序;
-n:使用“纯数字”来排序;
-r:反向排序;n
-t:分隔符,默认为tab键;
-k:按指定字段排序;例如: cat /etc/passwd | sort -t ':' -k 3,对文件/etc/passwd以第三栏排序。
-o 将排序结果写入文件
sort file1 file2 > test.txt合并文件
uniq
命令说明:如果排序完成了,将重复的行仅显示一次。注意,若文件未排序,该命令失效。
格式:uniq [-ic]
参数说明:
-i:忽略大小写;
-c:统计每行重复的次数;
wc
命令说明:统计文本文件中有多少字,多少行,多少字符。
格式:wc [-lwm]
参数说明:
-l:仅显示行数;
-w:仅显示字数(英文单词个数);
-m:字符数;
tee
命令说明:双向重导向,从标准输入读取数据,输出到屏幕上,同时保存成文件。
格式:tee [-a] file
参数说明:
-a:以累加的方式,将数据加入到file中。
例如:ls -al /home | tee ~/myfile | more,将ls命令的数据存一份到myfile中,同时屏幕也有输出数据。
join
命令说明:处理两个文件中有相同数据的行,将它们加在一起。
格式:join [-ti12] file1 file2
参数说明:
-i:忽略大小写;
-t:分隔符,默认为空格符;
-1 m:指定file1用来比较的字段m,默认值为1;
-2 n:指定file2用来比较的字段n,默认值为1;
paste
命令说明:比较两个文件的数据关联性,直接将“两行贴在一起”,中间以tab键隔开。
格式:paste [-d] file1 file2
-s 将多个文件串行的拼接在一起。后面的文件内容追加到前面文件的后面
参数说明:
-d:后面接分隔符,默认为tab键。
diff命令
命令说明:以“行”为单位进行文件比较,一般用在ASCII纯文本文件。
格式:diff [-bBi] file1 file2
参数:
-b:忽略一行中有多个空白的差异;
-B:忽略空白行的不同;
-i:忽略大小写;
split
命令说明:将一个大文件拆分为几个小文件。
格式:split [-bl] fle
参数说明:
-b:拆分的文件大小,可加单位,如b, k, m等;
-l:按行数进行拆分;
例如:split -b 512k bigfile smallfile,将文件bigfile按512K拆分,拆分后的文件依次为:smallfileaa、smallfileab等。
split -l 10 bigfile smallfile,将文件bigfile中的每10行拆分成一个小文件。
压缩
gzip:只能压缩文件,不能压缩目录 不保留源文件
gzip -d:解压缩的
tar:把目录打包成一个文件 -c:创建一个打包文件 -v:显示打包的过程 -f:指定压缩文件的名字 -z:边打包边压缩 -x:解压 .tar.gz:是打包目录后再压缩
eg:tar -zcf [新的名字] [打包目标]
file: 查看文件的属性 file 文件名字
zip:可以压缩文件和目录 同时保留源文件 和tar 的格式一样 如果是压缩目录 -r
zip -r /opt/abc.zip /opt/abc/ //参数一般只要有-r
unzip:解压缩 直接加文件名字
bzip2:压缩比非常惊人 -k:保留源文件 其他用法见gzip [适合压缩大文件]
bunzip:解压目录
解压,tar,gz实例
tar -xzvf .tar.gz
tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数
结语
上面举出来很多的命令,其实不管你多么努力的想讲明白,到最后计算机的东西都变成api了,所以要尽量使用,尽量找场景,就像很多高深的方法一样,要带有场景的落地,才能保证基础的进步。
最后还是要说下,在linux还有很多宝藏,我给你一个洞,需要你钻进去挖出来黄金。