Linux基本常用命令大全(附案例实战)(三)

简介: Linux基本常用命令大全(附案例实战)(三)

4、文本操作命令

4.1 touch

touch 已存在的文件,抹平各个时间


touch 不存在的文件,则创建文件


[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月  17 01:33 anaconda-ks.cfg
[root@node1 ~]# touch anaconda-ks.cfg
[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月  17 17:51 anaconda-ks.cfg
[root@node1 ~]# touch names.txt
[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月  17 17:51 anaconda-ks.cfg
-rw-r--r--  1 root root    0 8月  17 17:51 names.txt
[root@node1 ~]# rm -f names.txt

4.2 cat

直接查看一个文件的内容可以使用cat,tac,nl这几个指令 cat是concatenate的缩写,其功能时间一个文件的内容连续的输出。 该命令适合看行数较少的文件。另外,需要查看一般DOS文件时,可以 通过-A选项来显示换行符和[tab]。

[root@node1 ~]# cat /etc/issue
\S
Kernel \r on an \m

tac(反向输出):

[root@node1 ~]# tac /etc/issue
Kernel \r on an \m
\S

与上面的cat命令进行比较,是由最后一行先显示。


tac功能与cat类似,但是是由文件最后一行反向连续输出到屏幕上。


nl(添加行号打印):



nl可以将输出的文件内容自动的加上行号。


[root@node1 ~]# nl /etc/issue
     1 \S
     2 Kernel \r on an \m
[root@node1 ~]# nl -b a /etc/issue
     1 \S
     2 Kernel \r on an \m
     3 
[root@node1 ~]# nl -b t /etc/issue
     1 \S
     2 Kernel \r on an \m
[root@node1 ~]#

4.3 head

格式:head [-n number] 文件


默认获取前10行(省略 -n number)

number>0,取出前面number行。

number<0,除了最后number行外的所有行。

4.4 tail

命令格式:tail [ -n number] 文件


选项与参数:


-n:后面接数字,代表显示几行的意思


-f:表示持续侦测后面文件内容的改变,知道按下Ctrl+c才会结束tail 的侦测。


#默认情况下显示最后10行:
[root@node1 ~]# tail /etc/profile
#如果先要显示最后20行,就要如下:
[root@node1 ~]# tail -n 20 profile
#检测文件变化,一般用于边测试,边查看日志
[root@node1 ~]# tail -f profile

4.5 管道|

管道左侧的输出作为右侧的输入


[root@node1 ~]# ps aux |grep ssh
[root@node1 ~]# yum list |grep mysql
如何显示文件中间的几行?
[root@node1 ~]# head -n 20 profile |tail -n 10
可以省略为:
[root@node1 ~]# head -20 profile |tail -10
#显示/etc/profile文件中包含if关键字的行
[root@node1 ~]# grep if /etc/profile

echo "/" | ls -l 显示内容错误(不是预期的结果),因为ls不需要输 入,只需要参数


4.6 xargs

将前面输出作为后面命令的参数


1 echo "/" | xargs  ls  -l  

4.7 cut

cut:显示切割的行数据


- s:不显示没有分隔符的行


- d:指定分隔符对源文件的行进行分割


- -f 选定显示哪些列


m-n m列到n列

-n 第一列到n列

m- 第m列到最后一列

n 第n列

x,y,z获取第x,y,z列

案例实战:


#以:作为分隔符,切割passwd,输出从第3个字段到第5个字段
[root@node1 ~]# cut -d ":" -f 3-5 
/etc/passwd
0:0:root
1:1:bin
2:2:daemon
3:4:adm
4:7:lp
......
#输出前两列内容:
[root@node1 ~]# cp /etc/passwd ./
[root@node1 ~]# cut -d ":" -f -2 passwd
root:x
bin:x
daemon:x
adm:x
......
#输出字段3到最后一个字段
[root@node1 ~]# cut -d ":" -f 3- passwd
0:0:root:/root:/bin/bash
1:1:bin:/bin:/sbin/nologin
2:2:daemon:/sbin:/sbin/nologin
3:4:adm:/var/adm:/sbin/nologin
......
#指定输出的分隔符:
[root@node1 ~]# cut -d ":" -f 3- --outputdelimiter=".." passwd
0..0..root../root../bin/bash
1..1..bin../bin../sbin/nologin
2..2..daemon../sbin../sbin/nologin
......
#输出第7个字段
[root@node1 ~]# cut -d ":" -f 7 passwd
/bin/bash
/sbin/nologin
/sbin/nologin
......
#如果有的行没有分隔符,则输出会包含脏数据
[root@node1 ~]# echo helloworld 1>> passwd
[root@node1 ~]#
[root@node1 ~]# cut -d ":" -f1 passwd
root
bin
......
ntp
helloworld
#可以使用-s选项:不打印没有分隔符的行:
[root@node1 ~]# cut -sd ":" -f1 passwd
root
bin
daemon
adm
......
#显示1,3,7列
[root@node1 ~]# cut -sd ":" -f 1,3,7  
passwd
#显示1,3,7列 -- output-delimiter指定输出的时候
的各字符分隔符
[root@node1 ~]# cut -sd ":" -f 1,3,7   --
output-delimiter="|" passwd
root|0|/bin/bash
bin|1|/sbin/nologin
......


4.8 sort

sort排序:字典序和数值序


- n:按数值排序


- r:倒序 reverse


- t:自定义分隔符


- k:选择排序列


- f:忽略大小写


sort.txt内容如下

a b 1
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11

案例实战:

#1.默认字典序排序
[root@node1 ~]# sort sort.txt
aa dd 10
a b 1
dfdsa fdsa 15
fda s 9
fdsa fdsa 8
fds fds 6
h h 11
#2指定字段分隔符,按照第2个字段的字典序排序
[root@node1 ~]# sort -t ' ' -k 2 sort.txt
a b 1
aa dd 10
fds fds 6
dfdsa fdsa 15
fdsa fdsa 8
h h 11
fda s 9
#3.指定字段分隔符,按照第3个字段字典序排序
[root@node1 ~]# sort -t ' ' -k 3 sort.txt
a b 1
aa dd 10
h h 11
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
#4.指定字段分隔符,按照第3个字段的数值序排序
[root@node1 ~]# sort -t ' ' -k 3 -n sort.txt
a b 1
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
dfdsa fdsa 15
#可以简短
[root@node1 ~]# sort -t ' ' -nk 3 sort.txt
a b 1
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
dfdsa fdsa 15
#指定字段分隔符,按照第3个字段的值数值倒序
[root@node1 ~]# sort -t ' ' -nrk 3 sort.txt
dfdsa fdsa 15
h h 11
aa dd 10
fda s 9
fdsa fdsa 8
fds fds 6
a b 1


4.9 sed

sed:行编辑器


sed [选项] 'AddressCommand' file…


[选项]


-i:直接修改源文件

-r:表示使用扩展正则表达式

'AddressCommand'


d:删除符合条件的行

a\string:在指定的行后追加新行,内容为string

i\string:在指定行前添加新行,内容是string

s/string1/string2/:查找并替换,默认只替换每行第一次模式匹 配到的字符串

g:行内全局替换

i:忽略大小写  \1\2

4.10 awk

awk概述:


是一个强大的文本分析工具

相对于grep查找,sed编辑,awk在对数据分析并生成报告时更为强大

把文件逐行读入,以空格和制表符作为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk -F [':'] '{pattern + action}' filename


支持自定义分隔符

支持正则表达式匹配

支持自定义变量,数组 a[1] a[tom] map(key)

支持内置变量

NF 浏览记录的域的个数(列数)

NR 已读的记录数(行号)

支持函数

print、split、substr、sub、gsub

支持流程控制语句,类C语言

if、while、do/while、for、break、continue

4.11 wc

wc [选项列表]... [文件名列表]...


对每个文件输出行、单词、和字节统计数,如果指定了多于一个文 件则还有一个行数的总计。


选项:


-c, --bytes, --chars(字符) 输出字节统计数。

-l, --lines 输出换行符统计数。

-L, --max-line-length 输出最长的行的长度。

-w, --words 输出单词统计数。

--help 显示帮助并退出

--version 输出版本信息并退出

#1.默认字典序排序
[root@node1 ~]# sort sort.txt
aa dd 10
a b 1
dfdsa fdsa 15
fda s 9
fdsa fdsa 8
fds fds 6
h h 11
#2指定字段分隔符,按照第2个字段的字典序排序
[root@node1 ~]# sort -t ' ' -k 2 sort.txt
a b 1
aa dd 10
fds fds 6
dfdsa fdsa 15
fdsa fdsa 8
h h 11
fda s 9
#3.指定字段分隔符,按照第3个字段字典序排序
[root@node1 ~]# sort -t ' ' -k 3 sort.txt
a b 1
aa dd 10
h h 11
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
#4.指定字段分隔符,按照第3个字段的数值序排序
[root@node1 ~]# sort -t ' ' -k 3 -n sort.txt
a b 1
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
dfdsa fdsa 15
#可以简短
[root@node1 ~]# sort -t ' ' -nk 3 sort.txt
a b 1
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
dfdsa fdsa 15
#指定字段分隔符,按照第3个字段的值数值倒序
[root@node1 ~]# sort -t ' ' -nrk 3 sort.txt
dfdsa fdsa 15
h h 11
aa dd 10
fda s 9
fdsa fdsa 8
fds fds 6
a b 1

4.12 vi/vim编辑器的使用


模式切换相关


i 进入编辑模式

a 在选定字符后插入字符

o 在当前行下添加新行

O 在当前行上添加新行

I 在当前行首进入编辑模式

A 在当前行末进入编辑模式

ESC 退出编辑模式

: 末行模式

ESC,ESC 退出末行模式

ZZ 在命令模式保存并退出编辑器

:wq 保存并退出编辑器

:w 保存编辑器内容

:q! 不保存退出编辑器

移动光标


h左j下k上l右

w 移动到下一个单词的词首

e:跳至当前或下一个单词的词尾

b:跳至当前或下一个单词的词首

0:绝对行首

^:行首的第一个非空白字符

$:绝对行尾

G:文档末尾

3G:第三行

gg:文档开头

翻页


ctrl-f 向下翻页 forward

ctrl-b 向上翻页 backward

删除替换


x:删除光标位置字符

3x:删除光标开始3个字符

r:替换光标位置字符

dw 删除单词

dd 删除整行

D:删除光标所在位置到行尾

复制粘贴


yw 复制单词

yy 复制1行

nyy 复制n行,n是数字

p 粘贴 paste P

撤销与重做


u:撤销

undo ctrl+r:重做 操作结束后使用u退回到上次操作,则ctrl+r重做

. 重复上一步操作

set:设置


:set nu number 显示行号

:set nonu nunumber 取消行号的显示

:set readonly 设置只读

查找


:/after 向下查找 n 下一个,N 上一个

?向上查找

:! 执行命令

查找并替换


s/str1/str2/gi


/:临近s的第一个为边界字符:/ @ #(为了防止内容和边界字符重复,可以使用@和#做边 界字符)

g:一行内全部替换

i:忽略大小写

末行操作


.:当前光标行

+n:偏移n行

$:末尾行,$-3

%:全文 :%d 删除全文

:.,$-1d 从当前行删除到倒数第二行

:.,+3d 从当前行再往下数三行删除

:.,13d 从当前行到第13行删除

5、文件压缩与打包

压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失 文件的内容。 比如:zip、gzip、tar。


打包:指将多个文件(或目录)合并成一个文件,方便传递或部 署。比如:tar


5.1 zip与unzip

zip [选项] XXX.zip 将要压缩的内容 :压缩文件和目录的命令


       选项说明 -r 压缩目录


unzip [选项] XXX.zip :解压缩文件


       选项说明 -d 指定解压后文件的存放目录  


注意:zip 压缩命令在window/linux都通用,可以压缩目录且保留 源文件。


5.2 gzip和gunzip

gzip 文件 :压缩文件,只能将文件压缩为*.gz文件


gunzip 文件.gz :解压缩文件命令


注意: (1)只能压缩文件不能压缩目录 (2)不保留原来的文件


5.3 tar

压缩文件或打包文件常见的扩展名: *.tar.gz, *.tar.bz2;linux系统 一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须 的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算 法区别较大,根据扩展名能够使用对应的解压算法。


常见文件扩展名:


*.tar.gz tar程序打包的文件,并且经过 gzip 的压缩

*.tar.bz2 tar程序打包的文件,并且经过 bzip2 的压缩

tar命令,选项与参数:


-c :建立打包文件

-t :查看打包文件的内容含有哪些文件

-x :解打包或解压缩的功能,可以搭配-C(大写)在特定到特定目录解开

-j :通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2

-z :通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)

-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个 选项

-p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

注意 -c, -t, -x 不可同时出现在一串指令列中

打包与压缩:


tar –zcvf [/路径/]filename.tar.gz 被压缩的文件或目录


tar –jcvf [/路径/] filename.tar.bz2 被压缩的文件或目录


查询:


tar –ztvf [/路径/] filename.tar.gz


tar –jtvf [/路径/] filename.tar.bz2


备份:


tar –zpcv –f [/路径/]filename.tar.gz 被备份文件或目录


tar –jpcv –f [/路径/]filename.tar.bz2 被备份文件或目录


解压到当前目录:


tar –jxv –f [/路径/] filename.tar.bz2


tar –zxv –f [/路径/] filename.tar.gz


解压到指定目录:


tar -jxv -f [/路径/] filename.tar.bz2 –C 指定目录


tar -zxv -f [/路径/] filename.tar.gz -C 指定目录


注意:filename前带路径表示该路径下的,反之表示当前目录下


案例实战:

#将/etc压缩到/tmp/下etc01.tar.gz
#方式一:filename.tar.gz前不带路径
[root@node1 ~]# cd /tmp/
[root@node1 tmp]# tar -zcvf etc01.tar.gz /etc/
#方式二:filename.tar.gz前带路径
[root@node1 ~]# tar -zcvf /tmp/etc01.tar.gz /etc
#将/tmp/下etc01.tar.gz解压到/tmp/目录下
[root@tedu ~]# cd /tmp/ #首先进入对应目录
[root@tedu tmp]# tar -zxvf etc01.tar.gz
#将/tmp/下etc01.tar.gz解压到/usr/目录下
[root@node1 tmp]# tar -zxvf etc01.tar.gz -C /usr
#或者
[root@node1 tmp]# tar -zxvC /usr -f etc01.tar.gz
目录
相关文章
|
2天前
|
缓存 监控 Linux
|
5天前
|
Linux Shell 数据安全/隐私保护
|
6天前
|
域名解析 网络协议 安全
|
13天前
|
监控 Linux Shell
|
12天前
|
运维 监控 网络协议
|
2天前
|
缓存 Linux 开发者
深入理解Linux命令 `autom4te`
`autom4te` 是 GNU Autotools 中不可或缺的组件,通过高效处理 M4 宏,生成配置脚本并提供强大的调试功能。了解 `autom4te` 的工作机制和常用选项,可以帮助开发者更好地编写和维护配置文件,从而提高软件项目的配置和编译效率。在实际应用中,结合 `autoconf` 等工具,`autom4te` 能够为项目的构建过程提供坚实的基础。
11 2
|
4天前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
20 4
|
4月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
4月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
4月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的