Linux学习第二节-命令终端字段含义和基础命令讲解

1.命令终端字段含义介绍

[root@localhost ~]#

解释:root表示用户名,localhost表示主机名,~表示当前所在目录为家目录,#表示当前用户身份是超级管理员。

[ls@localhost ~]$

解释:ls表示用户名,localhost表示主机名,~表示当前所在目录为家目录,$表示用户身份是普通用户。

2.Linux系统基本概念

①多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源;

②多任务的系统:允许同时执行多个任务;

③严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写;

④一切皆文件:硬件设备都是以文件的形式存在的;

⑤不管是文件还是目录都是以倒挂的树型结构,存在于系统的“/”根目录下,根目录是Linux系统的起点;

⑥对于Linux系统而言,目录或者文件没有扩展名一说,扩展名如:.log是为了用户方便识别;

⑦没有提示就是最好的提示。

3.Linux下的目录结构

/bin:引导启动所需的命令或普通用户可能用的命令;

/sbin:类似/bin,但不给普通用户使用,虽然如果必要且允许是可以使用,引导启动所需的命令或普通用户可能用的命令;

/etc:特定机器的配置文件;

/root:root用户的家目录;

/lib:根文件系统上的程序所需的共享库;

/lib/modules:核心可加载模块,特别是那些回复损坏系统是引导所需的;

/dev:设备文件;

/home:普通用户家目录;

/mnt;临时挂载点;

/var:可变文件目录,如邮件、日志。

4.命令行一般格式

命令格式:命令字 [-选项...] [-参数...]

解释:

选项表示调整命令功能的;有短选项和长选项之分;

短选项:-l -a -d -h 短选项可以合并使用:-lad -lh;

长选项:--help 长选项通常是不能合并使用的;

参数:命令的执行对象,文件/目录/程序等;

[]:可选的;

...:可以同时有多个选项或参数。

5.ls 查看目录/文件命令

Ls,命令(英文全拼:list):用于查看目录下内容及目录和文件的详细属性信息;

命令格式:ls [-选项...] [-参数...]

常用选项:

① -a 显示目录下所有内容,包含隐藏的内容;

② -l 以长格式显示目录下内容及详细属性;

③ -h 人性化显示目录下内容大小(kb、mb、gb);

④ -d 仅显示目录本身而不显示目录下的内容;

⑤ -i 查看inode号(系统任何的文件或目录都有一个唯一的编号);

⑥ -R 递归查看目录下所有内容。

6.Linux系统文件类型

① - 表示文件;

② d 表示目录;

③ l 表示链接文件;

④ b 表示跨设备文件;

⑤ c 表示字符设备文件;

⑥ p 表示管道设备文件;

⑦ s 表示套接字

7.Linux系统辨别目录与文件的方法

方法一可根据颜色区分:

①蓝色表示目录;

②白色表示文件;

③浅蓝色表示链接文件(类似于windows系统的快捷方式);

④绿色表示可执行文件(如脚本,命令程序文件);

⑤红色表示压缩文件;

⑥黄色表示设备文件(硬盘、键盘、鼠标、网卡、CPU硬件设备都是以文件的形式存在的);

⑦红色闪动文件——>表示链接文件不可用。

8.Linux下命令行编辑技巧

①Ctrl+C :表示取消当前执行的命令;

②Ctrl+L :表示清屏;

③Ctrl+A :表示将光标移动至行首;

④Ctrl+E :表示将光标移动至行尾;

⑤Ctrl+U :表示清空至行首;

⑥Ctrl+W:表示删除一个单词;

⑦tab :表示自动补全;

⑧exit :表示退出系统。

9.linux系统下的归属关系

在Linux系统下,文件给用户分成了三类:

①u 所有者 文件或目录的拥有这,拥有这的权限通常是最大的;

②g 所有组 文件或目录属于哪一个组,所属组的权限略微比所有者小;

③o 其他人 既不是文件或目录的所有者,也不属于文件或目录组内的成员,其他人的权限通常最小的权限。

10.ls命令示例

①查看/dev目录下所有的内容

[root@localhost ~]# ls /dev

②查看目录下所有目录和文件,包括隐藏的内容

[root@localhost ~]# ls -a

以长格式显示目录下所有内容,包括详细的属性信息

[root@localhost ~]# ls -l

解释:

-:文件类型;

rw- --- ---:所有者u、所属组g、其他人o的权限

u  g  o

r 读取权限,w写入权限,x执行权限,-没有任何权限 

1:代表文件的引用次数,只针对与做了硬链接的文件才有效;

root:表示文件的所有者;

root: 表示文件的所属组;

1083:文件的大小,默认以字节为单位显示大小;

Nov 8 11:31 :文件最近一次的修改时间;

anaconda-ks.cfg:文件名。

④以长格式显示目录所有内容,包括详细的属性信息,文件大小以(K,M,G)显示

[root@localhost ~]# ls -l -h

⑤短选项合并使用,显示效果同上

[root@localhost ~]# ls -lh

⑥短选项合并使用,以长格式显示目录所有内容,包括详细的属性信息,文件大小以(K,M,G)显示,包括隐藏的内容

[root@localhost ~]# ls -lha

⑦以长格式显示根目录下所有内容,包括详细的属性信息

[root@localhost ~]# ls -l /

⑧创建hello.txt文件

[root@localhost ~]# touch hello.txt

⑨查看文件的元数据信息

[root@localhost ~]# stat hello.txt

解释:

文件:"hello.txt"

大小:0  块:0  IO块:4096 普通 空    文件

设备:fd00h/64768d  Inode:101867406 硬链接:1

权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:admin_home_t:s0

最近访问:2022-11-08 14:28:22.381194620 +0800

最近更改:2022-11-08 14:28:22.381194620 +0800

最近改动:2022-11-08 14:28:22.381194620 +0800

创建时间:-

查看/root目录本身详细属性信息 

[root@localhost ~]# ls -ld /root

⑪查看当前目录下所有内容的inode号

[root@localhost ~]# ls -i

⑫查看hello.txt文件的inode号

[root@localhost ~]# ls -i hello.txt

⑬查看/etc/目录本身的inode号

[root@localhost ~]# ls -id /etc

⑭ls -R选项可以递归目录下所有内容

[root@localhost ~]# ls -R /opt/a

11.cd 切换当前所在目录命令

①cd (英文全拼:change directory ) 切换目录

②命令格式: cd [ - 选项 ] [ 目录名 ]

③常用的快捷操作:

~ :表示为家目录;

. :表示当前目录;

.. :表示 上一级目录;

- :可在两路径之间来回切换。

12.pwd 打印当前所在目录命令

①pwd (英文全拼:print work directory ) 打印当前所在的工作目 录,执行pwd命令后,可显示当前所在的工作目录的绝对路径名称

②命令格式: pwd [ - 选项 ]

13.pwd 命令演示

①切换到 /opt/a/b/c/d

[root@localhost ~]# cd /opt/a/b/c/d

②切换到用户家目录

[root@localhost d]# cd ~

[root@localhost d]# cd

③“.”表示当前所在目录,对于cd命令而言作用不大

[root@localhost d]# cd . 

④“..”表示切换到当前目录的上一级目录

[root@localhost d]# cd .. 

⑤“-”可在两个路径之间来回切换

[root@localhost d]# cd -

14.绝对路径与相对路径 

①绝对路径:以 / (根)为起点,到达你想去的目标目录称为绝对路径

②相对路径: 以当前路径为起点,到达你想去的目标目录

15.mkdir 创建目录命令 

①mkdir (英文全拼:make directory)用于创建新目录

②命令格式:mkdir [ -选项 ] 目录名

③常用选项:

- p 递归创建多个目录

④注意事项

* 目录还是文件的名字 不可以使用 “ / ” 来命名

* 文件还是目录的名字长度不能超过255个字符

16.mkdir 命令演示

①在当前所在目录创建test目录

[root@localhost ~]# mkdir test

②在当前所在目录同时创建多个目录

[root@localhost ~]# mkdir test1 test2 test3

③指定在/tmp目录下创建abc目录

[root@localhost ~]# mkdir /tmp/abc

④在指定目录下同时创建多个目录

[root@localhost ~]# mkdir /tmp/abc1 /tmp/abc2 /tmp/abc3

⑤在/opt目录下创建student,在当前目录创建student1..3

[root@localhost ~]# mkdir /opt/student student1 student2 student3 ⑥

⑥mkdir默认无法在一个不存在的目录下创建目录,需要通过-p选项

[root@localhost ~]# mkdir -p /opt/xx/oo

17.touch命令 创建文件命令touch 命令用于创建新的空白文件

命令格式: touch [ -选项 ] 文件名

18.touch命令演示

①在当前路径创建空文件

[root@localhost ~]# touch hello

②在当前路径同时创建多个文件

[root@localhost ~]# touch t1 t2 t3 t4

③在指定路径同时创建多个文件

[root@localhost ~]# touch /opt/test1 /opt/test2 /opt/test3

④如果存在同名目录时,无法创建

[root@localhost ~]# mkdir test

mkdir: 无法创建目录"test": 文件已存在

⑤如果存在同名文件时,touch命令没有提示,但原有文件不会被覆盖,更新时间戳

[root@localhost ~]# touch t1

⑥对于目录而言,只有单个目录的时候,“/”可有可无

[root@localhost ~]# ls /opt/

rh student test1 test2 test3 xx

[root@localhost ~]# ls /opt

rh student test1 test2 test3 xx

⑦对于目录而言,查看目录下的内容时,必须要有“/”

[root@localhost ~]# ls /opt/xx

oo

⑧对于文件而言,后边绝对不能有“/”

[root@localhost ~]# ls /opt/test1

/opt/test1

[root@localhost ~]# ls /opt/test1/35 ls: 无法访问/opt/test1/: 不是目录

19.rmdir 删除空目录命令 

rmdir (英文全拼:remove directory ) 删除空目录

命令格式: rmdir [ - 选项 ] 目录名

20.rmdir命令演示

①rmdir只能删除空目录,如果目录下存在数据无法删除

[root@localhost ~]# rmdir /opt/a

rmdir: 删除 "/opt/a" 失败: 目录非空

21.cp 复制命令

①cp (英文全拼:copy file ) 用于复制文件或目录,cp命令在复制时也可以修改目录或名字

②命令格式:cp [ - 选项 ] 源文件或目录 目标目录

③常用选项:

-p 保留源文件属性不变 (如: 修改时间,归属关系,权限 )

-r 复制目录 ( 包含该目录下的所有子目录和文件 )

22.cp 命令演示

①复制当前目录文件到/opt目录(相对路径方式复制)

[root@localhost ~]# cp t1 /opt/

②复制文件到/opt目录(绝对路径方式复制)

[root@localhost ~]# cp /root/t2 /opt/ 

③同时复制多个文件

[root@localhost ~]# cp t3 t4 /opt/

④使用-r对目录执行复制

[root@localhost ~]# cp -r abc /opt/ 

⑤同时复制多个目录

[root@localhost ~]# mkdir abc1 abc2 abc3

[root@localhost ~]# cp -r abc1 abc2 abc3 /opt/ 

⑥复制hello文件到/opt并改名为hello.txt

[root@localhost ~]# cp hello /opt/hello.txt

⑦复制xxxx目录到/opt并改名xxoo

[root@localhost ~]# mkdir xxxx

[root@localhost ~]# cp -r xxxx /opt/xxoo

⑧使用“.”配合cp命令执行复制

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# pwd

/etc/sysconfig/network-scripts

[root@localhost network-scripts]# cp /root/t1 .

⑨操持属性不变复制文件 

[root@localhost ~]# cp -p anaconda-ks.cfg /opt

cp:是否覆盖"/opt/anaconda-ks.cfg"? y

[root@localhost ~]# ls -l /opt/anaconda-ks.cfg

-rw-------. 1 root root 1800 3月 13 17:34 /opt/anaconda-ks.cfg

#对比以上两个文件的详细属性信息(最后一次修改时间)

[root@localhost ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1800 3月 13 17:34 anaconda-ks.cfg53

23.mv移动命令

mv (英文全拼:move file )用于移动文件或目录到其他位置,也可用于修改目录或文件名

命令格式: mv [ -选项 ] 源文件.....目标路径

24.mv命令演示

①移动当前路径hello文件到/mnt目录

[root@localhost ~]# mv hello /mnt

②同时移动多个文件

[root@localhost ~]# mv t1 t2 t3 t4 /mnt

③移动/opt目录下文件到/mnt

root@localhost ~]# mv /opt/test1 /opt/test2 /opt/test3 /mnt/  

④移动目录

[root@localhost ~]# mv student1 /mnt

⑤移动文件并改名

[root@localhost ~]# mv hello.txt /media/hello

⑥移动目录并改名

[root@localhost ~]# mv test /media/testxx

25.cat 查看文件内容命令

cat (英文全拼: concatenate ) 命令用于查看文本文件内容

命令格式:cat [ -选项 ] 文件名

常用选项:

①查看文件内容

[root@localhost ~]# cat anaconda-ks.cfg

[root@localhost ~]# cat initial-setup-ks.cfg

[root@localhost ~]# cat /etc/hosts

②查看网卡文件内容,网卡配置文件

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32  

③查看当前系统主机名配置文件内容

[root@localhost ~]# cat /etc/hostname

④查看当前系统版本信息文件内容

[root@localhost ~]# cat /etc/redhat-release

⑤查看当前系统开机自动挂载配置文件内容

[root@localhost ~]# cat /etc/fstab

⑥查看系统组基本信息文件内容

[root@localhost ~]# cat /etc/group

⑦使用“-n”以行号形式显示文件内容

[root@localhost ~]# cat -n /etc/passwd

[root@localhost ~]# cat -n /etc/hostname

[root@localhost ~]# cat -n /etc/fstab

[root@localhost ~]# cat -n /etc/group

[root@localhost ~]# cat -n /etc/services

26.less命令

less工具是对文件的输出进行分页显示的工具,常用于查看内容量较大的文件

命令格式: less [ -选项 ] 文件

常用选项:

①-n  #以行号形式显示文件内容

使用技巧:

①键盘上下键逐行查看;

②pgdn:向下翻页 (Fn + 下键);

③pgup: 向上翻页 (Fn + 上键);

④/ 字符串: 搜索指定字符串(n从上向下搜索,N从下向上搜索)

⑤G:直接跳转到最后一行

⑥gg: 直接跳转到文件行首

⑦q: 退出

27.head与tail命令 

head命令: 用来显示文件开头部分内容,默认显示文件开头10行内容

命令格式: head [ 选项 ] 参数

常用选项:

①-n  #< 行数 > 指定显示行数

范例:

[root@localhost ~]# head /etc/passwd

[root@localhost ~]# head /etc/fstab

[root@localhost ~]# head /etc/group

[root@localhost ~]# head /etc/hostname

[root@localhost ~]# head /etc/hosts

[root@localhost ~]# head /etc/sysconfig/network-scripts/ifcfg-ens32

①查看存放DNS配置文件信息

[root@localhost ~]# head /etc/resolv.conf

②使用-n指定显示文件前多少行内容

[root@localhost ~]# head -n 5 /etc/passwd

[root@localhost ~]# head -n 6 /etc/passwd

[root@localhost ~]# head -n 15 /etc/passwd

[root@localhost ~]# head -n 20 /etc/passwd

tail命令:用来显示文件末尾部分内容,默认显示文件末尾10行内容

命令格式: tail [ 选项 ] 参数

常用选项:

①-n  #< 行数 > 指定显示的行数

②-f  #动态显示

范例:

[root@localhost ~]# tail /etc/passwd

①使用“-n”指定显示文件末尾多少行内容

[root@localhost ~]# tail -n 5 /etc/passwd

[root@localhost ~]# tail -n 5 /etc/sysconfig/network-scripts/ifcfg-ens32

②动态查看文件内容

root@localhost ~]# tail -f t1

③另开一个终端向文件写入内容

[root@localhost ~]# echo 123 > >t1

28.rm 删除命令

rm (英文全拼:remove )命令用于删除文件或者目录

命令格式: rm [ -选项 ....] 目录或文件......

常用选项:

①-f 强制删除

②-r 删除目录

③“*”特殊字符:系统常用符号,用来代表任意所有字符

29.rm命令演示

①删除指定目录下文件

[root@localhost ~]# rm /opt/anaconda-ks.cfg

rm:是否删除普通文件 "/opt/anaconda-ks.cfg"?y    #默认需要确认(y|n)

②同时删除目录下指定文件

[root@localhost ~]# rm /opt/t1 /opt/t2 /opt/t3 /opt/t4

rm:是否删除普通空文件 "/opt/t1"?y

rm:是否删除普通空文件 "/opt/t2"?y

rm:是否删除普通空文件 "/opt/t3"?y

rm:是否删除普通空文件 "/opt/t4"?y

③使用“-f”强制删除文件(无需确认,直接删除)

[root@localhost ~]# rm -f /mnt/hello

④同时强制删除多个文件

[root@localhost ~]# rm -f /mnt/t1 /mnt/t2 /mnt/t3 /mnt/t4

⑤删除目录

[root@localhost ~]# rm -r /opt/abc

⑥同时删除多个目录

[root@localhost ~]# rm -r /opt/abc1 /opt/abc2 /opt/abc3

⑦同时强制删除多个目录

[root@localhost ~]# rm -rf /opt/home /opt/student /opt/xx /opt/xxoo

⑧使用“*”通配任意所有字符,删除/mnt目录下所有数据

[root@localhost ~]# rm -rf /mnt/*

30.wc统计命令 

wc用于统计文件的字节数,行数,并将统计的结果输出到屏幕

命令格式:wc [ -选项 ] 文件名

常用选项:

①-c  #统计字节数

②-l  #统计行数

wc命令示例:

①[root@test ~]# wc /etc/passwd

43 87 2259 /etc/passwd

行数 单词 字节 文件名

②统计文件字节数

[root@test ~]# wc -c /etc/passwd

2259 /etc/passwd

③统计文件行数

[root@test ~]# wc -l /etc/passwd

43 /etc/passwd

[root@test ~]# wc -l /etc/fstab

11 /etc/fstab

31.管道符

管道符 "| " : 将命令的输出结果交给另外一条命令作为参数继续处理

①显示6-10行内容

[root@test ~]# head -10 /etc/passwd |tail -5

②统计6-10行的文件行数

[root@test ~]# head -10 /etc/passwd |tail -5 |wc -l

5

③以行号显示查看6-10行的内容

[root@test ~]# cat -n /etc/passwd |head -10|tail -5

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8 halt:x:7:0:halt:/sbin:/sbin/halt

9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10 operator:x:11:0:operator:/root:/sbin/nologin

④显示ifconfig ens160 命令的结果的前两行的内容

[root@test ~]# ifconfig ens160 |head -2

ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.66  netmask 255.255.255.0  broadcast 192.168.1.255

32.find文件/目录查找命令

find命令:根据预设的条件递归文件或目录所在的位置。

命令格式: find 查找路径 查找条件1 查找条件2 ......[-exec 处理命令 {} \; ]

解释:

①-exec  代表可接受额外的命令来处理查找到的结果

②{}   代表find查找到的内容被放置{} 中

③\;   代表额外处理命令结束

常用的查找条件: 

①-type     #类型(f 文件 d 目录 l 连接文件 );

②-name    #"文件名" ;

③-iname   #按文件名查找忽略大小写 ;

④-size     #文件大小 (k,M,G +大于 -小于 ) ;

⑤- user    #用户名 ;

⑥-mtime   #按日期查找 (+ 代表多少天前 -代表多少天之内,0代表24小时 之内) 。

33.find命令示范

①按照类型查找,类型为文件

[root@localhost ~]# find /var/log -type f

[root@localhost ~]# ll boot.log-20210417

[root@localhost ~]# ll /var/log/boot.log-20210417

[root@localhost ~]# ll /var/log/vmware-network.2.log

②按照类型查找,类型为目录

[root@localhost ~]# find /var/log -type d

[root@localhost ~]# ll -d /var/log/tuned

[root@localhost ~]# ll -d /var/log/qemu-ga13

③按照类型查找,类型为链接文件

[root@localhost ~]# find /var/log -type l

[root@localhost ~]# find /etc/ -type l

[root@localhost ~]# find /etc/ -type l

[root@localhost ~]# ll /etc/scl/conf

④按照名字查找

[root@localhost ~]# find /etc/ -name passwd

/etc/passwd

/etc/pam.d/passwd

⑤按照名字查找,类型为文件

[root@localhost ~]# find /etc/ -name passwd -type f

[root@localhost ~]# find /etc/ -name '*tab' -type f

⑥按照名字查找,以pass开头,类型为文件

[root@localhost etc]# find . -name '*.conf' -type f

[root@localhost ~]# find /etc/ -name '*tab*' -type f

⑦按照名字忽略大小写查找,类型为文件

[root@localhost ~]# find /etc/ -iname FSTAB -type f

/etc/fstab

[root@localhost ~]# find /etc/ -name FSTAB -type f

⑧查找大于10k的文件

[root@localhost ~]# find /var/log -size +10k -type f

[root@localhost ~]# du -h /var/log/boot.log-20210417

16K /var/log/boot.log-20210417

⑨查找大于1M的文件

[root@localhost ~]# find /var/log -size +1M -type f

[root@localhost ~]# du -h /var/log/audit/audit.log

2.4M

/var/log/audit/audit.log

[root@localhost ~]# find /home -size +1M -type f

⑩查找小于1M的文件

[root@localhost ~]# find /var/log -size -1M -type f

[root@localhost ~]# du -h /var/log/spooler

0 /var/log/spooler

查找大于10k并且小于20k,类型为文件

[root@localhost ~]# find /var/log -size +10k -a -size -20k -type f

-o或者,当有多个条件时,满足任意其中一个即可

[root@thinkmo ~]# find /var/log -name "*.log" -o -size -10k -type f

⑬查找属于lisi用户的文件/目录

[root@localhost ~]# find /home -user lisi

⑭查找30天之前被修改过,类型为文件

[root@localhost ~]# find /var/log -mtime +30 -type f

[root@localhost ~]# find /var/log -mtime +10 -type f

⑮查找10天之内被修改过,类型为文件

[root@localhost ~]# find /var/log -mtime -10 -type f

root@localhost ~]# find /var/log -mtime -30 -type f

查找30之前被修改过,类型为文件,拷贝到/opt目录下

[root@localhost ~]# find /var/log -mtime -30 -type f -exec cp {} /opt \;

34.常用特殊符号的使用

linux系统下特殊符号起到了很大作用,特殊符号可以完成一些特殊的功能。

①* 常用的特殊符号,在文件名上,用来代表任意多个字符;

②?常用的特殊符号,在文件名上,用来代表任意单个字符;

③[ 0-9 ]  #在文件名上,用来代表多个字符或连续范围中的一个,若无则忽略

④{a,b,cd,abcd}   #在文件名上,用来代表多组不同的字符串,全匹配。

命令示范: 

①查找以tab结尾的文件

[root@localhost ~]# ls /etc/*tab

[root@localhost ~]# ls /etc/*wd

[root@localhost ~]# ls /etc/*.conf

[root@localhost ~]# ls /etc/redhat*

[root@localhost ~]# ls /etc/*ss*

②查找以tty开头的文件,结尾以一个任意字符结尾

[root@localhost ~]# ls /dev/tty?

[root@localhost ~]# ls /etc/host?

[root@localhost ~]# ls /etc/pass??

③查找tty开头结尾以1-5连续字符结尾

[root@localhost ~]# ls /dev/tty[1-5]

[root@localhost ~]# ls /dev/tty[4-9]

[root@localhost ~]# ls /dev/tty[1,3,5,7,9,15,20,30]

④查找tty开头结尾为不连续字符结尾

[root@localhost ~]# ls /dev/tty{1,3,5,7,9,15,20,30}

[root@localhost ~]# ls /dev/tty{1..9}

[root@localhost ~]# ls /dev/tty{1..10}

[root@localhost ~]# ls /dev/tty[1-10]

35.grep文件内容过滤

grep命令:用于查找文件中符合条件的字符串,它能利用正则表达式搜索文件中的字符串,并把匹配到的字符串的行打印出来。

命令格式: grep [- 选项 ] “查找条件” 目标文件

常用选项:

①-n  # 以行号的方式输出;

②-i   # 忽略字符串大小;

③-v  # 显示不包含匹配的行(排除)常用正则表达式;

④^字符串  #显示以该字符串开头的行(匹配以什么什么开头的行);

⑤$字符串  # 显示以该字符串结尾的行 ( 匹配以什么什么结尾的行);

⑥^$       #显示空行。

36.grep命令演示

①过滤包含root关键字的行

[root@localhost ~]# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

②以行号形式过滤包含root关键字的行

[root@localhost ~]# grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

10:operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# grep -n bash /etc/passwd

[root@localhost ~]# grep -n : /etc/passwd

③忽略大小写过滤

[root@localhost ~]# grep -i -n ssh /etc/passwd

38:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

④排除包含#号的行

[root@localhost ~]# grep -n -v '^#' /etc/fstab

⑤过滤以root开头的行

[root@localhost ~]# grep ^root /etc/passwd

⑥过滤以root结尾的行

[root@localhost ~]# grep -n 'root$' /etc/passwd

[root@localhost ~]# grep -n 'bash$' /etc/passwd

#语法错误示范

[root@localhost ~]# grep -n -v '^#' ^$ /etc/fstab

grep: ^$: 没有那个文件或目录

/etc/fstab:1:

/etc/fstab:9:/dev/mapper/centos-root / xfs defaults 0 0

/etc/fstab:10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot xfs defaults 0 0

/etc/fstab:11:/dev/mapper/centos-swap swap

#语法错误示范

[root@localhost ~]# grep -n -v '^#' /etc/fstab | grep -v ^$

1:

9:/dev/mapper/centos-root / xfs defaults 0 0

10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot xfs defaults 0 0

11:/dev/mapper/centos-swap swap swap defaults 0 0

⑦正确语法

[root@localhost ~]# grep -v '^#' /etc/fstab | grep -v ^$ -n

2:/dev/mapper/centos-root / xfs defaults 0 0

3:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot xfs defaults 0 0

4:/dev/mapper/centos-swap swap swap defaults 0 0

⑧显示该文件内有效配置的行

[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v ^$ -n | wc -l

36.alias别名管理

alias命令用于设置命令别名,用户可以使用alias自定义命令别名来简化命令的复杂度

①.bashrc  #文件存放命令别名

②命令格式:alias [别名]=[命令] #注意事项:等号 (=) 前后不能有空格

③unalias 别名 #取消别名

④定义别名:

[root@test ~]# alias lsnet='ls /etc/sysconfig/network-scripts/'

[root@test ~]# lsnet

[root@test ~]# alias myls='ls -ldh'

[root@test ~]# myls /opt

⑤查看当前系统可用命令别名

[root@test ~]# alias

alias cp='cp -i'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias lsnet='ls /etc/sysconfig/network-scripts/'

alias mv='mv -i'

alias myls='ls -ldh'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

⑥两条命令效果相同

[root@test ~]# ls -l hello

-rw-r--r--. 1 root root 426 3月 28 15:00 hello

[root@test ~]# ll hello

-rw-r--r--. 1 root root 426 3月 28 15:00 hello

[root@test ~]# which ls

alias ls='ls --color=auto'

/usr/sbin/ls

[root@test ~]# /usr/sbin/ls

[root@test ~]# ls

⑦取消本次命令的别名功能“\”

[root@test ~]# \ls

⑧取消命令别名

[root@test ~]# unalias myls

[root@test ~]# myls

bash: myls: 未找到命令...

⑨定义别名不要跟系统命令发生冲突

[root@test ~]# alias ls=hostname

[root@test ~]# ls

test

⑩取消命令别名

[root@test ~]# unalias ls

[root@test ~]# alias

⑪重新定义别名

[root@test ~]# alias ls='ls --color=auto'

[root@test ~]# ls

37.history管理历史 

history命令:用于显示历史记录和执行过的命令,登录shell是会读取 ~/.bash_history历史文件中记录下的命令,当退出或登出shell时,会自动保存到历史命令文件,改命令单独使用时,仅显示历史命令历史命令默认只能存储1000条,可以通过/etc/profile文件修改。

命令格式: history [ -选项 ] [ 参数 ]

常用选项:

①-a  #追加本次新执行的命令至历史命令文件中

②-d  #删除历史命令中指定的命令

③-c  #清空历史命令列表

快捷操作:

①!   #调用命令历史中第N条命令

②!string  #调用命令历史以string开头的命令

③!!  #重复执行上一条命令

④获取命令帮助

[root@test ~]# help history

⑤查看历史命令

[root@test ~]# history

⑥查看记录历史命令文件

[root@test ~]# cat .bash_history 9

⑦将历史命令同步至历史命令配置文件中

[root@test ~]# history -a

[root@test ~]# cat .bash_history

⑧删除历史命令中655条命令历史

[root@test ~]# history -d 655

[root@test ~]# history -d 637

⑨清空缓存中所有历史命令

[root@test ~]# history -c

[root@test ~]# history

1 history

⑩删除历史命令配置文件(该文件删除后系统会再次自动创建)

[root@test ~]# rm -rf .bash_history

⑪快速调用历史命令中第1条

[root@test ~]# !1

⑫调用历史命令中以cat开头的命令(只调用最近使用的cat历史命令)

[root@test ~]# !cat

⑬重复执行上一条命令

[root@test ~]# !!

⑭历史命令默认只能记录1000条,可以通过/etc/profile文件修改

[root@test ~]# vim /etc/profile

...

46 HISTSIZE=100

38.重定向操作 

重定向操作:将前面命令的输出结果,写入到其他的文本文件中重定向的表示符号

①>   #重定向输出 (覆盖);

②>>  #重定向输出 (追加);

③>  #只收集正确的输出结果;

④2>  #只收集错误的输出结果;

⑤&>  #正确错误都收集。

命令示例:

①将命令的输出结果以覆盖的方式重定向到文件中,(>附带创建文件功能)

[root@test ~]# ifconfig ens32 |head -2 > /opt/ens32.bak

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255

[root@test ~]# cat /etc/hostname > /opt/ens32.bak

[root@test ~]# cat /opt/ens32.bak

test

[root@test ~]# free -h > /opt/free.bak

[root@test ~]# cat /opt/free.bak

total used free shared buff/cache available

Mem: 972M 414M 123M 15M 435M 336M

Swap: 2.0G 0B 2.0G

②将命令的输出结果以追加的方式重定向到文件中

[root@test ~]# cat /etc/hostname >> /opt/free.bak

[root@test ~]# cat /opt/free.bak

“>”只收集正确的输出结果,不收集错误的输出结果 

[root@test ~]# ls xxooooxx > /opt/xx.txt

ls: 无法访问xxooooxx: 没有那个文件或目录

④“2>”只收集错误的输出结果,不收集正确的输出结果

[root@test ~]# ls xxooooxx 2> /opt/xx.txt

[root@test ~]# cat /opt/xx.txt

ls: 无法访问xxooooxx: 没有那个文件或目录

⑤“2>”以覆盖的方式将输出结果重定向到文件中

[root@test ~]# cat /etc/abc 2> /opt/ens32.bak 31 [root@test ~]# cat /opt/ens32.bak

cat: /etc/abc: 没有那个文件或目录

⑥“2>>”以追加的方式将输出结果重定向到文件中

[root@test ~]# ls /etc/abcd 2>> /opt/ens32.bak

[root@test ~]# cat /opt/ens32.bak

cat: /etc/abc: 没有那个文件或目录

ls: 无法访问/etc/abcd: 没有那个文件或目录

⑦“&>”以覆盖的方式将正确输出与错误输出重定向到文件中

[root@test ~]# lscat &> /opt/abc.txt

[root@test ~]# cat /opt/abc.txt

[root@test ~]# ls /etc/passwd &> /opt/pass.bak

[root@test ~]# cat /opt/pass.bak

[root@test ~]# free -h &> /opt/pass.bak

[root@test ~]# cat /opt/pass.bak

⑧“&>”以追加的方式将正确输出与错误输出重定向到文件中

[root@test ~]# ifconfig ens32 | head -2 &>> /opt/pass.bak

[root@test ~]# cat /opt/pass.bak

⑨以覆盖方式将正确输出与错误输出重定向到不同文件中

[root@test ~]# ll -d /root/ bcd >a.txt 2>b.txt

[root@test ~]# cat a.txt

dr-xr-x---. 24 root root 4096 3月 28 18:07 /root/

[root@test ~]# cat b.txt

ls: 无法访问bcd: 没有那个文件或目录

39.echo命令

echo命令:用于输出指定和字符串变量

命令格式: echo [ -选项 ] [ 参数 ]

命令示例:

[root@test ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@test ~]# echo abc

abc

[root@test ~]# cat /etc/hostname

test

[root@test ~]# echo localhost > /etc/hostname

[root@test ~]# cat /etc/hostname

localhost

40.vi/vim文本编辑器

vim命令:是从vi发展出来的一个文本编辑器,vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性。

vi/vim 共分为三种模式:命令模式,输入模式,底线命令模式(也叫末行模式) 。

①命令模式: 刚刚启动vi/vim 便进入了命令模式

②输入模式:在命令模式下按 a/i/o就进入了输入模式

③ESC ,退出输入模式,切换到命令模式

④底线命令模式: 在命令模式下按下:(英文冒号) 就进入了底线模式

解释:

①命令模式: vim 文件名

* 若目标文件不存在,则新创建文件并编辑

* 若目标文件以存在,则打开文件并编辑

②命令模式: 刚刚启动vi/vim,便进入了命令模式

* i 切换到输入模式,在当前光标所在字符插入

* a 切换到输入模式,在当前光标所在字符后插入

* o 切换到输入模式,在当前光标所在行下插入

* : 切换到底线命令模式,以在最后一行输入命令

* x 在命令模式下删除当前光标所在行

* dd 删除一整行内容,配合数字可删除指定范围内的行

* C 删除当前光标及光标后所有内容并进入输入模式

* u 恢复上一次修改内容,一次回复一个操作,可多次恢复,直到恢复本次操作初始状态为止

* $ 将光标移动至行尾

* 0(零) 将光标移动至行首

* gg 跳转至文件第一行

* G 跳转文件最后一行

* yy 复制当前行,配合数字可以同时复制多行

* p 粘贴当前光标所在行下

* /关键字 搜索文件内关键字,n从上向下快速定位关键字,N从下向上快速定位关键字

③底线命令模式可以输入单个或多个字符命令,可用的命令非常多。

* :w 保存

* : q 退出

* : wq 保存退出

* : q! 强制退出不保存

* :wq! 强制保存并退出

* :set nu 以行号形式显示文件内容

* :set nonu 取消行号显示

* :行号 快速跳转到指定行

* :r 读入另外一个文件的数据,文件内容添加到光标的下一行

* :%s 替换文件内容 g替换全文 默认只替换每一行匹配到的第一个关键字

* :nohl 取消高亮

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shun Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值