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 取消高亮