【命令星级】 ★★★★★
【功能说明】
如果使用man less查看less的帮助文档,则会发现官方的解释是less为more的反义词(opposite of more)。但less命令的名称只是一个文字游戏,它是more命令的高级版本(less这个名称来自俗语“越简单就越丰富”,即 less is more)。
less命令的基本功能类似于more命令,可以分页显示文件内容,但比more的功能更强大。less命令在读取文件内容时,并不是想more、vi命令一样,需要一次性将整个文件加载之后再显示,而是会根据需要来加载文件内容,这样打开文件的速度更快。而且less命令支持[page up]、[page down]等按键的功能,可通过该功能往前或往后翻看文件,这样更容易查看一个文件的内容。
【语法格式】
less [option] [file]
less [选项] [文件]
说明: 在less命令及后面的选项和文件里,每个元素直接都至少要有一个空格。
【选项说明】
表7-7针对less命令的参数选项进行了说明。
表7-7 less命令的参数选项及说明
在交互模式下,less命令也是基于more命令和vi命令的,在这里可以使用vi编辑器的部分功能,如搜索功能,还可以切换到vi编辑器。表7-8给出了less命令的交互式子命令。
表7-8 less命令的交互式子命令及说明
7.5.2 使用范例
7.5.2.1 基础范例
范例7-23: 通过less命令查看文件。
[root@centos7 ~]
tcpmux 1/tcp
范例7-24: 显示行号的示例。
[root@centos7 ~]
1
2
4
5
7
8
9
10
11
13
14
15
16
17
19
21
/etc/services
7.5.2.2 技巧性范例
范例7-25: 分页显示命令结果的示例。
[root@centos7 ~]# ls /etc|less #分页查看etc目录文件内容。
adjtime
aliases
aliases.db
alternatives
anacrontab
asound.conf
audisp
audit
bash_completion.d
bashrc
binfmt.d
centos-release
centos-release-upstream
chkconfig.d
cron.d
cron.daily
cron.deny
cron.hourly
cron.monthly
crontab
cron.weekly
crypttab
csh.cshrc
csh.login
dbus-1
7.6 head:显示文件头部内容
7.6.1 命令详解
【命令星级】 ★★★★★
【功能说明】
head命令用于显示文件头部的内容,执行head命令默认会输出文件的开头10行内容。
【语法格式】
head [option] [file]
head [选项] [文件]
【选项说明】
表7-9针对head命令的参数选项进行了说明。
表7-9 head命令的参数选项及说明
7.6.2 使用范例
范例7-26: 显示文件的前10行。
[root@centos7 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
范例7-27: 显示文件的前5行。
[root@centos7 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@centos7 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
范例7-28: 显示文件的前n个字节。
[root@centos7 ~]# head -c 10 /etc/passwd #读取文件的前10个字节。前面的写法是以行为单位的,而-c则是以字节为单位的。该功能不常用。
root:x:0:0
范例7-29: 打印文件除最后21行之外的内容。
[root@centos7 ~]
root:x:0:0:root:/root:/bin/bash
7.7 tail:显示文件内容尾部
7.7.1 命令详解
【命令星级】 ★★★★★
【功能说明】
tail命令用于显示文件尾部的内容,tail命令默认输出文件的最后10行。
【语法格式】
tail [option] [file]
tail [选项] [文件]
【选项说明】
表7-10针对tail命令的参数选项进行了说明。
表7-10 tail命令的参数选项及说明
7.2.2 使用范例
范例7-30: 显示文件最后10行的示例。
[root@centos7 ~]
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000:oldboy:/home/oldboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
范例7-31: 使用tail命令显示文件末尾5行内容。
[root@centos7 ~]
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000:oldboy
:/home/oldboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
[root@centos7 ~]
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000:oldboy:/home/oldboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
范例7-32: 通过tail命令从第15行开始显示文件
[root@centos7 ~]
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000:oldboy:/home/oldboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
范例7-33: 通过tail命令实时监控文件的变化。
[root@centos7 ~]
welcome to Linux
if you like Linux please support me
bye! boys and girls
[root@centos7 ~]
[root@centos7 ~]
welcome to Linux
if you like Linux please support me
bye! boys and girls
tail -f jiankong
^C
7.8 grep:文本过滤工具
7.8.1 命令详解
【命令星级】 ★★★★★
【功能说明】
grep命令是Linux系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据,如果配合正则表达式技术一起使用,则功能会更加强大,它是Linux运维人员要掌握的命令之一!
grep过滤就相当于是一个筛子,有可能筛子里面的东西是要保留的,也有可能是筛出来的需要保留,grep功能的生活形象图解如图7-10所示。
图7-10 grep对应生活中的形象工具--筛子
【语法格式】
grep命令里面的匹配模式,都是你要获取的内容,它们既可以是普通的文字符号也可以是正则表达式,其语法格式如图7-11所示。
图7-11 grep命令的语法结构图
【选项参数】
表7-11是grep命令的常用参数说明。
表7-11 grep的常用参数
7.8.2 使用范例
7.8.2.1 基础范例
范例7-34: 请使用grep过滤不包含neteagle字符串的行(-v参数实战)。
[root@centos7 ~]# cat >test1.txt<<EOF #创建测试的文件。
> liyao
> neteagle
[root@centos7 ~]# grep -v "neteagle" test1.txt #过滤不包含neteagle字符串的行,注意被过滤的字符串,应尽可能使用双引号。
liyao
提示: grep -v 参数的作用是排除,默认是以行为单位排除包含参数后面所接内容的某些行。
范例7-35: 使用grep命令显示过滤后的内容的行号(-n参数实践)。
[root@centos7 ~]
> lisir
> neteagle
> neteagle linux
[root@centos7 ~]
2:neteagle
3:neteagle linux
[root@centos7 ~]
1:lisir
2:neteagle
3:neteagle linux
4:ALEX
提示: -n参数会为grep命令找到内容在开头加上对应的行号。
范例7-36: -i不区分大小写参数实战。
[root@centos7 ~]# grep "alex" test2.txt #过滤小写alex的行,结果没有内容。
[root@centos7 ~]# grep -i "alex" test2.txt #使用-i参数不区分大小写过滤alex。
范例7-37: 同时过滤两个不同的字符串并为过滤的内容显示颜色(-E和--color的参数实践)。
[root@centos7 ~]
neteagle
neteagle linux
[root@centos7 ~]
neteagle
neteagle linux
[root@centos7 ~]
alias grep='grep --color=auto'
范例7-38: 计算匹配的字符串的数量(-c参数实践)。
[root@centos7 ~]# grep "neteagle" test2.txt #-c计算出文本中有几个neteagle字符串。
neteagle
neteagle linux
[root@centos7 ~]# grep -c "neteagle" test2.txt
范例7-39: 只输出匹配的内容(-o参数实践)。
[root@centos7 ~]# grep -o "neteagle" test2.txt
neteagle
neteagle
范例7-40: 利用grep搜索符合要求的用户(-w参数实践)。
准备测试数据:
[root@centos7 ~]
[root@centos7 ~]
[root@centos7 ~]
[root@centos7 ~]
neteagle:x:1001:1001::/home/neteagle:/bin/bash
[root@centos7 ~]
neteagle:x:1001:1001::/home/neteagle:/bin/bash
neteagle1:x:1002:1002::/home/neteagle1:/bin/bash
neteagle2:x:1003:1003::/home/neteagle2:/bin/bash
7.9 tr:替换或删除字符
7.9.1 命令详解
【命令星级】 ★★★★★
【功能说明】
tr命令从标准输入中替换、缩减或者删除字符,并将结果写到标准输出。
【语法格式】
tr [option] [SET1] [SET2]
tr [选项] [字符1] [字符2]
【选项说明】
表7-12针对tr命令的参数选项进行了说明。
表7-12 tr命令的参数选项及说明
7.9.2 使用范例
以下是后面的范例中要用到的实践文本:
[root@centos7 ~]# cat >neteagle.txt<<EOF
> I am neteagle
> I like Linux
> I like badminton ball,billiard ball and chinese chess!
> my web is https://www.neteagles.cn
> our site is http://www.etiantian.org
> my qq num is 19661891.
> not 19000661891.
> my god,i am not girl,iam boy!
范例7-41: 将文件中出现的"abc"替换为“xyz”。
[root@centos7 ~]# tr 'abc' 'xyz' <neteagle.txt #tr命令接文件比较特殊,需要输入重定向符号“<”。
I xm netexgle texzher!
I texzh Linux.
I like yxdminton yxll,yillixrd yxll xnd zhinese zhess!
my ylog is https:
our site is http:
my qq num is 19661891.
not 19000661891.
my god,i xm not nets
,yut NETEAGLE!
提示: 凡是在文本中出现的“a”全部转换成“x”,"b"全部转换成“y”,“c”全部转换成“z”,而不是仅仅将字符串“abc”替换为字符串“xyz”。
范例7-42: 使用tr命令“统一”字母大小写。
[root@centos7 ~]# tr '[a-z]' '[A-Z]' <neteagle.txt #小写转大写。
I AM NETEAGLE TEACHER!
I TEACH LINUX.
I LIKE BADMINTON BALL,BILLIARD BALL AND CHINESE CHESS!
MY BLOG IS HTTPS:
OUR SITE IS HTTP:
MY QQ NUM IS 19661891.
NOT 19000661891.
MY GOD,I AM NOT NETS,BUT NETEAGLE!
#[a-z]是26个小写字母的缩写,[A-Z]是26个大写字母的缩写。因此本例是将a替换为A,b替换为B...z替换为Z。
范例7-43: 将数字0-9替换为a-j。
[root@centos7 ~]# tr '[0-9]' '[a-j]' <neteagle.txt #数字0替换为a,1替换为b ...一一对应。
I am neteagle
I like Linux
I like badminton ball,billiard ball and chinese chess!
my web is https:
our site is http:
my qq num is bjggbijb.
not bjaaaggbijb.
my god,i am not girl,iam boy!
范例7-44: 删除文件中出现的neteagle中的每个字符。
[root@centos7 ~]# tr -d 'neteagle' <neteagle.txt #使用参数-d删除字符。
I m chr!
I ch Liux.
I ik bdmio b,biird b d chis chss!
my bo is hps:
our si is hp:
my qq um is 19661891.
o 19000661891.
my od,i m o s,bu NETEAGLE!
提示: 凡是在文件中出现的“n”、“e”、“t”、“e”、“a”、“g”、“l”、“e”字符都会被删除!而不是仅仅是删除neteagle字符串。
7.10 有关vi/vim/cat/echo及特殊重点符号的考试题
考试题: 在/data目录下创建neteagle.txt,并增加“I am study linux.”一行内容。
试题有多种解题方法,下面就来--分析讲解。
7.10.1 使用vi/vim命令解题及知识点分析
解题步骤具体如下。
1)首先确认/data目录是否存在,如果不存在则建立一个data目录,否则无法在不存在的data目录下创建neteagle.txt文件。示例代码如下:
[root@centos7 ~]# mkdir /data
[root@centos7 ~]# ll -d /data
drwxr-xr-x. 2 root root 6 Oct 9 18:03 /data
2)然后执行vim命令指定路径,并创建和编辑neteagle.txt。示例代码如下:
[root@centos7 ~]# vim /data/neteagle.txt #默认是命令模式。
3)按i键进入INSERT插入模式(及编辑模式),然后按要求输入文本内容。示例代码如下:
I am study linux.
4)编辑完毕后,按Esc键,退出编辑模式(插入模式),再次回到命令模式。
5)报错并退出,代码如下:
:wq
:wq!
:q!
6)检查文件内容,输出内容如下:
[root@centos7 ~]
I am study linux.
图7-12给出了上述过程中相应的转换流程。图7-13则是通过vim命令实现的流程图。
图7-12 vi/vim中不同模式转换流程图
图7-13 通过vi命令打开编辑模式到保存退出的流程图
从该实例中可以得出如下几点结论。
vi相当于Windows记事本,功能够用,但是不够强大。
vim相当于高级编辑器notepad++、emeditor,其功能更多,而且它的操作与vi是一样的,推荐大家都使用vim编辑文件。
7.10.2 使用echo命令解题及知识点分析
解题方法为利用echo命令在neteagle.txt中增加内容,示例代码如下:
[root@centos7 ~]# echo "I am studying CentOS." #显示内容到屏幕上,这是echo的基本功能。
I am studying CentOS.
[root@centos7 ~]# echo "I am studying CentOS." >>/data/neteagle.txt #借用追加符号">>"将内容写入到neteagle.txt结尾,此操作不改变源文件已有的内容。
[root@centos7 ~]# cat /data/neteagle.txt
I am study linux. #这是vim命令添加的。
I am studying CentOS. #这是echo命令添加的。
[root@centos7 ~]# echo "I am studying CentOS." >/data/neteagle.txt #借用重定向符号“>”先清空文件的所有内容,然后将内容写入到neteagle.txt结尾。
[root@centos7 ~]# cat /data/neteagle.txt
I am studying CentOS.
[root@centos7 ~]# echo "I an studying CentOS." >/data/neteagle2.txt
#借用重定向符号“>”将内容写入到neteagle2.txt结尾,不改变源文件已有的内容。
特殊符号“重定向符号(漏斗)”的说明
“>”为重定向符号,表示清除原文件里面的所有内容,然后将内容追加到文件的末尾(很危险的操作,慎用!)。
">>"为追加重定向符号,即追加内容到文件的尾部(文件的最后一行)。
对于echo命令,需要补充的知识点具体如下。
下面来思考一下,echo命令通过重定向符号是否只能追加一行?
答并非如此,重定向符号可以追加多行内容到文件的结尾,示例代码如下:
[root@centos7 ~]
> 4444">>neteagle2.txt
[root@centos7 ~]
7.10.3 使用cat命令解题及知识点分析
在向多行追加文件内容时,也可以利用cat再加上追加重定向符号实现与echo相同的功能,示例代码如下:
[root@centos7 ~]
> I am studing Linux cat.
> for example.
> EOF
[root@centos7 ~]
I am studing Linux cat.
for example.
7.10.4 重定向符号的核心知识
7.10.4.1 重定向简介
重定向是Linux里的一个重要名词,对于它的作用,直白点说,就是类似于如图7-14所示的漏斗,使用重定向符号,可以让数据从一个地方(文件或工具)无损失地流到另一个地方(文件或工具)。
图7-14 重定向符号的形象图解
7.10.4.2 标准输入/输出/错误输出
标准输入时一个名称,它表示数据的一个流入方向,通常表示数据从文件等流入到处理的工具或命令中,用代码0表示,使用"<"或“<<”符号来指示数据朝箭头所指的方向流动。
标准输出也是一个名称,也表示数据的一个流入方向,通常用代码1表示,使用">"或">>"符号来指示数据朝箭头的方向流动。与标准输入不同的是,1表示将命令等处理的一般信息输出到文件。
标准错误输出是另一个名称,也是表示数据的一个流入方向,通常用代码2表示,使用">"或">>"符号来指示数据朝箭头的方向流动。与标准输出不同的是,标准错误输出2表示将错误的信息输出到文件等,而不是输出正确的普通信息(仅输出错误信息)。
为了让读者能够清晰掌握重定向的相关知识,下面总结了一个表,如表7-13所示。
表7-13 重定向符号总结
7.10.4.3 标准输出示例范例
标准输出的实际操作示例代码如下:
[root@centos7 ~]# echo "123" 1>neteagle.txt
[root@centos7 ~]# cat neteagle.txt
[root@centos7 ~]# echo "123" 1>a.txt 2>b.txt #echo "123"为正确输出,因此会重定向到a.txt。
[root@centos7 ~]# cat a.txt
123 #echo "123"可以正确执行,因此会输出到a.txt。
[root@centos7 ~]# cat b.txt #echo "123"可以正确执行,因此不会输出到b.txt。
7.10.4.4 错误输出案例
错误输出实际操作示例代码如下:
[root@centos7 ~]# cho "123" 1>a.txt 2>b.txt #故意输入的错误命令cho。
[root@centos7 ~]# cat a.txt
[root@centos7 ~]# cat b.txt #cho "123"执行会报错输出,因此,会重定向到b.txt。
-bash: cho: command not found
7.10.4.5 输入重定向的示例
输入重定向的实际操作如下。
范例7-45: 将neteagle.txt内容输出到屏幕。
[root@centos7 ~]# echo 1 2 3 >neteagle.txt #将数据输出到neteagle.txt
[root@centos7 ~]# cat <neteagle.txt #读取neteagle.txt文件输出到屏幕。
1 2 3
[root@centos7 ~]# cat 0<neteagle.txt #读取neteagle.txt文件输出到屏幕,0可以省略。
1 2 3
范例7-46: 将neteagle.txt内容输出到指定命令进行处理,最后再输出到屏幕。
[root@centos7 ~]# tr " " "\n" 0< neteagle.txt #遇到空格,替换为回车(\n),0可以省略。
[root@centos7 ~]# xargs -n 1 <neteagle.txt #分组显示,0可以省略。
提示: tr和xargs命令的详解参见后文。
范例7-47: Linux下使用输入重定向发邮件命令示例:
mail -s '邮件标题' 邮件地址 <邮件内容(文件)
[root@centos7 ~]# mail -s 'tranning' 19661891@qq.com </etc/hosts
提示: 此功能需要开启邮件服务或配置邮件代理,这里只介绍"<"的应用。
7.10.4.6 追加输入重定向的示例
范例7-48: 读入数据,然后输出到屏幕。
[root@centos7 ~]# cat <<EOF
> neteagle
neteagle
范例7-49: 读入数据,然后输出到neteagle.txt文件。
[root@centos7 ~]# cat >neteagle.txt<<EOF
> neteagle
[root@centos7 ~]# cat neteagle.txt
neteagle
#相当于cat neteagle >neteagle.txt
7.11 有关grep/head/sed/awk及特殊重点符号的考试题
考试题: 已知文件test.txt内容为:
liyao
neteagle
请给出在屏幕上输出test.txt内容时,不包含neteagle字符的命令。
对于该题,相应的解答如下。
7.11.1 使用grep命令解题及知识分析
解题步骤如下。
1)利用前文学到的知识,模拟生成要处理的数据文件,命令如下:
[root@centos7 ~]# cat >neteagle.txt<<EOF
> liyao
> neteagle
[root@centos7 ~]# cat neteagle.txt
liyao
neteagle
2)使用grep方法实现相应的功能,代码如下:
[root@centos7 ~]
liyao
提示: -v表示排除,后面接的内容是不希望输出的字符串,此处使用grep命令后,过滤的字符串为neteagle,对于该字符串,也可以用单引号或双引号引起来。
7.11.2 使用head命令解题
解题示例如下:
[root@centos7 ~]
liyao
7.11.3 通过更多命令解题的方法
下面的几种方法为扩展方法,基础弱的读者在学完第9章的内容之后,再回头来看这几个方法就简单了。
示例代码如下:
[root@centos7 ~]
liyao
[root@centos7 ~]
liyao
[root@centos7 ~]
liyao
命令中提到的三剑客是指grep、awk、sed,它们都具有过滤字符串的功能,grep最擅长,awk比较擅长按列过滤文件内容,sed则擅长在文件中删除、修改、替换和添加内容。三剑客配合正则表达式,是处理文件内容的杀手锏,读者必须掌握,后面的章节还会重点讲解这些内容,此处读者如果有不懂之处可以暂时忽略。
7.12 有关mkdir命令的考试题
考试题: 请用一条命令完成创建目录/neteagle/test,即创建/neteagle目录及/neteagle/test目录。
解答命令如下:
mkdir -p /neteagle/test
实践过程如下:
[root@centos7 ~]
[root@centos7 ~]
/neteagle/
└── test
1 directory, 0 files
提示:如果tree命令不存在,则可以使用yum install tree -y安装。
7.13 有关cp/alias/unalias命令的考试题
考试题: 已知/tmp目录下已经存在了test.txt文件,如何执行命令才能将/mnt/test.txt复制到/tmp下,并覆盖掉/tmp/test.txt,且让Linux系统不提示是否覆盖(root权限下)。
在解答该题之前,首先要建立测试数据,具体如下:
[root@centos7 ~]# touch /tmp/test.txt
[root@centos7 ~]# touch /mnt/test.txt
[root@centos7 ~]# cp /mnt/test.txt /tmp
cp: overwrite ‘/tmp/test.txt’? ^C
[root@centos7 ~]# /bin/cp /mnt/test.txt /tmp
[root@centos7 ~]# \cp /mnt/test.txt /tmp
采用这种方法解答此题的思路就是屏蔽掉系统默认的对应命令别名,执行cp的操作默认是调用了别名来执行的,所以会提示覆盖。
【详细说明】
cp命令默认是不会提示overwrite的,但是cp的-i选项会提示,在Linux的用户环境文件~/.bashrc中一般会将cp命名成alias cp='cp -i',示例代码如下:
[root@centos7 ~]
alias cp='cp -i'
这样,在Linux下输入cp命令实际上运行的是cp -i,再加上一个""符号,或者写cp全路径/bin/cp,就是让此次的cp命令不使用别名(cp -i)运行。
解法三: (不推荐使用)
[root@centos7 ~]# unalias cp
[root@centos7 ~]# cp /mnt/test.txt /tmp/test.txt
提示: 命令行处理别名仅在当时生效,重启系统后就无效了。
具体处理过程的演示代码如下:
[root@centos7 ~]# unalias cp #提示:此法仅为临时取消别名方法,重新登录后就不再生效。
[root@centos7 ~]# alias |grep cp
[root@centos7 ~]# cp /mnt/test.txt /tmp/ #不提示确认了。
[root@centos7 ~]# cp -i /mnt/test.txt /tmp/ #只有主动加-i参数才会提示确认。
cp: overwrite ‘/tmp/test.txt’? ^C
解法四: (禁止使用)
[root@centos7 ~]
在“alias cp='cp -i'”前加上“
[root@centos7 ~]
[root@centos7 ~]
这种解法为杀鸡取卵的方法,蛋取出来了,鸡一命呜呼了。
此处涉及alias和unalias两种命令的用法,同时请读者思考一下别名的好处,以及怎么样利用这个特性为我们服务。
提示: 同样的命令还有mv、rm等。希望读者做事也能尽量低举一反三,由此及彼,拓宽思路和视野。
需要特别说明的是,在脚本里直接写命令也可以逃避别名,但是我们在习惯上还是使用全路径。
Linux别名的作用
对危险命令加一些保护参数等,以防止人为误操作。
将很多复杂的字符串或命令变成一个简单的字符串或命令。
Linux别名对应的命令
alias:查看和设置别名。
unalias:取消别名。
下面来看一下Linux别名的用途示例。
范例7-50: 相应的系统示例就是最好的例子。
[root@centos7 ~]
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
范例7-51: 保护危险命令(此为生产案例)
[root@centos7 ~]# alias rm='echo "rm cmd is not allowd to use."'
[root@centos7 ~]# rm
rm cmd is not allowd to use.
[root@centos7 ~]# rm -rf /tmp/
rm cmd is not allowd to use. -rf /tmp/
**范例7-52:**简化命令操作(此为生产案例)
[root@centos7 ~]
[root@centos7 ~]
[root@centos7 ~]
alias neteagle='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
[root@centos7 ~]
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.201
PREFIX=24
GATEWAY=10.0.0.254
IPV6_PRIVACY=no
DNS1=223.5.5.5
Linux系统中别名配置所在的位置具体如下:
[root@centos7 ~]
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
if [ -f /etc/bashrc ]; then
. /etc/bashrc
若希望定义的别名永久生效,则必须放到配置文件里,可以放到如下文件中:
a./etc/profile 全局生效,即所有登录的用户都生效。
b.~/.bashrc 当前用户生效,如果是root,就是登录root生效。
提示:一定要用source或者“.”(点号)。
以下是设置别名永久生效的例子。
[root@centos7 ~]
[root@centos7 ~]
alias rm='echo "rm cmd is not allowd to use."'
[root@centos7 ~]
[root@centos7 ~]
alias rm='echo "rm cmd is not allowd to use."'
7.14 本章知识总结
1)重点命令:vi/vim/echo/cat/more/less/head/tail/grep/tr
2)普通命令:alias/unalias,提及的新命令sed/awd
3)重要知识:别名知识、复制后直接覆盖知识、多行文本追加知识、重定向符号知识