环境变量PATH/cp命令/mv命令/文档查看cat/more/less/head/tail

狂风中的少年 提交于 2021-01-01 03:00:50

环境变量 PATH

学习环境变量PATN前,我们可以先学习一个命令叫:which,which命令是用来查看某个命令的路径,以及是否有其他别名的一个命令,示范如下:

[root@ask-01 Ask]# which rmdir
/usr/bin/rmdir
[root@ask-01 Ask]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@ask-01 Ask]# which ls
alias ls='ls --color=auto'
/usr/bin/ls






在上面我们可以看到rmls命令是两个特殊命令,它们都有相对的别名,前面我们学习alias命令的时候学习过,rm -i中的-i是个安全参数,加上这个参数在执行rm这个命令的时候系统就会询问你是否确定要这样操作。

我们用which命令可以看到rm的绝对路径为/usr/bin/rmdir,这时你可能就会好奇,为什么在使用命令的时候,只用直接打出命令,而没有使用命令的绝对路径呢,这就是因为环境变量PATH起了作用,我们可以用echo命令来看下:

[root@ask-01 Ask]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

因为/bin目录在PATH的设定中,所以自然可以找到ls,但是如果ls的命令文件不在PATH设定的目录下,则执行ls命令是就会失败,提示“没有那个文件或目录”,请看如下结果:

[root@ask-01 Ask]# mv /usr/bin/ls /root/
[root@ask-01 Ask]# ls
-bash: /usr/bin/ls: 没有那个文件或目录

那么有什么办法可以解决呢,以下我们有两种方法,一种是将/root这个路径加入到$PATH当中:

[root@ask-01 Ask]# PATH=$PATH:/root
[root@ask-01 Ask]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root
[root@ask-01 Ask]# ls
1 2 3 4 5 asklinux



另外一种方法就是输入绝对路径,如下:

[root@ask-01 Ask]# /root/ls
1 2 3 4 5 asklinux

好了,为了不影响系统使用,我们还是将ls文件还原:

[root@ask-01 Ask]# mv /root/ls /usr/bin/

cp命令

cp是copy(复制)的递归简写,命令的格式为:cp [参数][来源文件][目的文件],打比方我们要将hello1.txt复制成hello2.txt我们就可以这么操作:

[root@ask-01 asklinux]# touch hello1.txt
[root@ask-01 asklinux]# ls
hello1.txt
[root@ask-01 asklinux]# cp hello1.txt hello2.txt
[root@ask-01 asklinux]# ls
hello1.txt hello2.txt




-r:如果要复制一个目录我们则要加-r这个参数,没有这个参数我们就不能复制目录,这类似rm命令

[root@ask-01 Ask]# cp -r asklinux asklinux1
[root@ask-01 Ask]# ls -ld asklinux asklinux1
drwxr-xr-x. 2 root root 42 12月 19 16:53 asklinux
drwxr-xr-x. 2 root root 42 12月 20 00:35 asklinux1


mv命令

mv是move的简写,该命令的格式为:mv [选项][源文件或目录][目标文件或目录],该命令有一下几种情况。

* 目标文件是目录,但该目录不存在。
* 目标文件是目录,且该目录存在。
* 目标文件是文件,且该文件不存在。
* 目标文件是文件,但该文件不存。

当目标文件是目录时,该目录存在,则会把源文件或者目录移动到该目录中。如果该目录不存在,则会把源目录重命名为给定的目录文件名。
当目标文件是文件时,如果文件存在,则会询问是否覆盖,如果文件不存在是,则会把源文件重命名为给顶的目标文件名

[root@ask-01 Ask]# mv asklinux asklinux2
[root@ask-01 Ask]# ls
asklinux1 asklinux2

这里我的目标文件是asklinux2,且该文件不存在,相当于把目录asklinux重命名为asklinux2.

[root@ask-01 Ask]# mv asklinux2 asklinux1
[root@ask-01 Ask]# ls
asklinux1

在这个示例当中我的目标文件是asklinux1目录,且该目录存在,则会把目录asklinux2移动到目录asklinux1里

下列显示mv 123.txt 456.txt 的目标文件是456.txt且这个文件不存在,相当于把文件123.txt重命名为456.txt。mv 456.txt asklinux1该命令则会将更名后的文件456.txt移动到目录asklinux1里面。

[root@ask-01 Ask]# touch 123.txt
[root@ask-01 Ask]# ls
123.txt asklinux1
[root@ask-01 Ask]# mv 123.txt 456.txt
[root@ask-01 Ask]# ls
456.txt asklinux1
[root@ask-01 Ask]# mv 456.txt asklinux1
[root@ask-01 Ask]# ls
asklinux1
[root@ask-01 Ask]# ls asklinux1
456.txt asklinux2









文档查看cat/more/less/head/tail

接下来我们在认识几个与文档有关的命令

命令cat
cat是一个比较常用的命令,使用来查看一个文件的内容并将其显示在屏幕上,cat后面可以不加任何参数,直接跟文件名。

[root@ask-01 Ask]# echo 'hello world' > asklinux1/456.txt
[root@ask-01 Ask]# echo 'my name is Askd' >> asklinux1/456.txt
[root@ask-01 Ask]# cat asklinux1/456.txt
hello world
my name is Askd



-n:查看文件时可以把行号也显示到屏幕上

[root@ask-01 Ask]# cat -n asklinux1/456.txt
1 hello world
2 my name is Ask

上面示例中,出现了符号>>,它跟符号>类似,其作用也是重定向,即把前面的内容输入到后面的文件中,但是>>是“追加”的意思,当使用>时,如果文件有内容,则会删除原有的内容,而使用>>则不会删除。

命令tac
和cat命令一样,只不过tac是将文件内容倒序显示在屏幕上

[root@ask-01 Ask]# tac asklinux1/456.txt
my name is Ask
hello world

命令more
当文件内容太多时,使用cat文件就会看不全,这时我们就可以使用more命令看,当我们看完一屏时可以按空格键看下一屏,内容看完就会退出,按ctrl+d可以向上翻屏,ctrl+f向下翻屏,想要提前退出按q键即可。

命令less
less命令和more一样,但less要比more功能多,按空格键可以翻页,按j键可以向下移动(一下移动一行),按k向上移动,在使用less或者more查看文件的时候我们想要快速查找到某个字符串时,我们可以通过按一下/键,再输入一个字符串比如hello,这样就可以查找到hello,如果有多个hello的我们还可以按先n键显示下一个hello,同样号键也一样,只不过不同的是,/是向下查找字符串,是向上查找字符串。

命令head
head的命令是用来显示文件的前10行,如果加个参数-n,则显示文件的前几行,示例:

[root@ask-01 Ask]# head asklinux1/456.txt
hello world
my name is Ask1
hello world2
my name is Ask3
hello world4
my name is Ask5
hello world6
my name is Ask7
hello world8
my name is Ask9
[root@ask-01 Ask]# head -n 1 asklinux1/456.txt
hello world
[root@ask-01 Ask]# head -n 2 asklinux1/456.txt
hello world
my name is Ask1














命令tail
和head命令一样,只是它是显示文件的后10行,使用参数-n也是一样的

[root@ask-01 Ask]# tail asklinux1/456.txt
hello world6
my name is Ask7
hello world8
my name is Ask9
hello world10
my name is Ask11
hello world12
my name is Ask13
hello world14
my name is Ask15
[root@ask-01 Ask]# tail -n2 asklinux1/456.txt
hello world14
my name is Ask15












另外tail命令还有一个常用的参数-f,它可以动态显示文件的最后10行,如果文件内容在不断的更新,使用tail -f可以实时地查看文件中的内容。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!