linux命令学习

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还有很多宝藏,我给你一个洞,需要你钻进去挖出来黄金。

# coding  linux  shell 
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×