Linux基础(day7)

时间:2022-04-27
本文章向大家介绍Linux基础(day7),主要内容包括2.10 环境变量PATH、which例子、2.11 cp命令、cp例子、cp拷贝目录加/、总结、2.12 mv命令、mv例子、总结、2.13 文档查看cat/more/less/head/tail、>> 追加重定向/more、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

2.10 环境变量PATH

which命令介绍

  • which 可以查看命令所在的路径
  • which查询的路径是通过以下的路径,进行查询
[root@aminglinux-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • 这个路径又以 : 分割 如果命令在以上路径内,可以不用输入绝对路径,真正使用命令是通过绝对路径进行操作

which例子

[root@hf-01 ~]# which ls	查看ls所在路径
alias ls='ls --color=auto'
    /usr/bin/ls
[root@hf-01 ~]# ls /usr/bin/ls	
/usr/bin/ls
[root@hf-01 ~]# cp /usr/bin/ls /tmp/ls2     复制/usr/bin/ls路径到/tmp/ls2下
[root@hf-01 ~]# /tmp/ls2	使用命令/tmp/ls2查看结果,会发现和ls命令出来的结果一样
anaconda-ks.cfg
[root@hf-01 ~]# ls		
anaconda-ks.cfg
[root@ahf-01 ~]# ls2	执行ls2命令,会提示未找到命令,因为这个命令不在上述目录里面
-bash: ls2:未找到命令
[root@hf-01 ~]# PATH=$PATH:/tmp/    若想直接运行ls2命令,需要改变环境变量	重新给PATH赋值
[root@hf-01 ~]# echo $PATH         会发现多出了/tmp/
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@hf-01 ~]# ls2	这时在运行发现就可以执行了
anaconda-ks.cfg
[root@hf-01 ~]# which ls2	
/tmp/ls2

新建的环境变量在终端失效了

  • 这时,在终端,复制SSH渠道,打开一个终端,执行ls2命令,会发现又失效了 (打开终端方法,鼠标右击-复制SSH渠道)
  • 若想一直生效,

解决方法

1.在系统 vi /etc/profile		(在开机、打开终端都会加载这个命令)
2.结尾处加上PATH=$PATH:/tmp/ 并保存退出
3.在使用cat /etc/profile查看下是否加载成功
4.这时echo $PATH会得到/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
现在不管哪一个终端都可以执行ls2命令,都会执行成功

解除ls2命令,方法

若不想要这个ls2命令了,有两种方法。

  1. 方法一:重新赋值 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin (去除:/tmp/) 这时在执行ls2命令,就会失效
  2. 方法二:重新编辑文件/etc/profile 快捷键dd命令,删除PATH=$PATH:/tmp/并:wq保存 在去新建终端,执行echo $PATH 就会发现/tmp/目录消失了

2.11 cp命令

cp = copy

使用方法

将源文件 拷贝成目标文件
cp -r 拷贝目录
统一约定, 使用cp 和其他命令的时候,把 路径后的/补充完整
!$  上一条命令中最后的一个参数,以空格或叹号分割

[root@hf-01 ~]# which cp
alias cp='cp -i'
	/usr/bin/cp
这里会看到cp  命令默认带有一个 -i 选项,
它是属于安全选项,询问操作是否进行下一步操作

若不想复制的时候,每天去询问,可以按如下复制
[root@hf-01 ~]# /usr/bin/cp /etc/passwd /tmp/1.txt

cp例子

[root@hf-01 ~]# cp /etc/passwd /tmp/1.txt      拷贝文件直接复制即可
cp:是否覆盖"/tmp/1.txt"? y
[root@hf-01 ~]# cp -r /tmp/aminglinux/ /tmp/amning       拷贝目录需要加-r选项
[root@hf-01 ~]# cp -r /tmp/aminglinux/ /tmp/aming1/
[root@hf-01 ~]# tree !$     这表示上一条命令的最后一条参数
tree /tmp/aming1/
/tmp/aming1/
└── 2
    └── 2.txt

1 directory, 1 file
[root@hf-01 ~]# !tree
tree /tmp/aming1/
/tmp/aming1/
└── 2
    └── 2.txt

1 directory, 1 file
[root@hf-01 ~]# tree /tmp/aming1/
/tmp/aming1/
└── 2
    └── 2.txt

1 directory, 1 file
[root@hf-01 ~]# cp -r /tmp/aminglinux/ /tmp/aming1/
[root@hf-01 ~]# ls /tmp/aming1/
2  aminglinux   这说明,当目标目录已经存在的时候,他会把源目录放在目标目录下面去,
如果目标目录不存在,他会把源目录拷贝过来,并修改名称
[root@hf-01 ~]# tree /tmp/aming1/
/tmp/aming1/
├── 2
│   └── 2.txt
└── aminglinux
    └── 2
        └── 2.txt

3 directories, 2 files
[root@hf-01 ~]# cp -r /tmp/aminglinux/ /tmp/aming1/
cp:是否覆盖"/tmp/aming1/aminglinux/2/2.txt"? n
当再次拷贝相同目录的时候,就会提示是否需要覆盖,这时因为源目录已经存在

!$和!tree命令的含义

  • !$ 执行上一条命令的最后一条参数
  • !tree 执行历史中,最后一次执行tree的命令

cp拷贝目录加/

在cp拷贝目录的时候,在目录后面统一加上/,因为在后面有一种命令中加/和不加/是有很大区别的

总结

  • 当目标目录已经存在的时候,他会把源目录放在目标目录下面去,如果目标目录不存在,他会把源目录拷贝过来,并修改名称
  • 当再次拷贝相同目录的时候,就会提示是否需要覆盖,这时因为源目录已经存在

2.12 mv命令

mv介绍

  • mv = move
  • mv 相当于把文件挪动地方,如果在同一个目录就是更改文件名
  • 可以使用这个命令实现,移动到一个目录下,同时更改文件名
  • mv 同样,默认使用命令的时候 ,带有一个 -i 选项,就是也安全选项
    • 若想不需要提示,则可使用绝对路径
  • 假如,挪动的目录是挪动到一个不存是目录下是,就会变成,等同于改名字

mv例子

[root@hf-01 ~]# mv anaconda-ks.cfg anaconda-ks.cfg.1   这里就是直接修改文件名
[root@hf-01 ~]# ls
anaconda-ks.cfg.1
[root@hf-01 ~]# cd /tmp/
[root@hf-01 tmp]# ls
1.txt  aming1  aminglinux  amning  mysql.sock

[root@hf-01 tmp]# mv aming1/ aming/  
[root@hf-01 tmp]# ls
aming  aminglinux  amning  mysql.sock
[root@hf-01 tmp]# mv aming/ aming2/     若把目录移动到当前一个不存在的目录,则会修改名称
[root@hf-01 tmp]# ls
aming2  aminglinux  amning  mysql.sock
[root@hf-01 tmp]# mv aming2/ aminglinux/     如果目标目录存在了,就会把源目录放到目标目录下面去
[root@hf-01 tmp]# ls aminglinux/
2  aming2

总结

  • 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;
  • 如果“目标文件”是目录名则将源文件移动到“目标文件”下。
  • 如果源是目录,目标也是目录,且目标目录中已经存在一个与源相同的目录,则移动失败。
  • 若目标与源同名且都是文件时,则目标文件会被覆盖

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

cat/tac/more/wc用法

cat 这个查看文件内容的
    -A 显示文件的所有文件(包括字符)
    -n 显示行号
tac 倒序查看文件内容,与cat相反
more 也是用来查看文件内容,但是不会像cat一样一下全部显示出来,他的显示方式为一屏一屏的显示,
    (可使用空格键查看下一行或ctrl+b 可以往前看,内容查看完以后会自动结束命令的运行)
wc -l 可以查看文件的行数
[root@localhost ~]# wc -l anaconda-ks.cfg.1
51 anaconda-ks.cfg.1    显示改文件的行数

>> 追加重定向/more

  • 追加重定向就是把文件中的内容增加到另一个文件中去
[root@localhost ~]# wc -l anaconda-ks.cfg.1
51 anaconda-ks.cfg.1
[root@localhost ~]# cat /etc/passwd >> anaconda-ks.cfg.1    这就是把/etc/passwd中的文件内容增加到anaconda-ks.cfg.1文件中去
[root@localhost ~]# cat /etc/passwd >> anaconda-ks.cfg.1
[root@localhost ~]# wc -l anaconda-ks.cfg.1
93 anaconda-ks.cfg.1
[root@localhost ~]# cat /etc/passwd >> anaconda-ks.cfg.1
[root@localhost ~]# cat /etc/passwd >> anaconda-ks.cfg.1

more例子

  • more命令查看文本内容
    • 当内容较多时,可以“空格键”,一页一页的往下翻看,直到内容结束,会自动退出。
    • ,若想向上翻看之前的看过的内容,使用“快捷键ctrl+b”去查看
[root@localhost ~]# more anaconda-ks.cfg.1   
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
此处省略....

less用法

  • less刚开欧式进去和more类似
    • 支持“空格键”一屏一屏的翻看
      • 快捷键ctrl+B向前查看
      • 快捷键ctrl+F向后查看
    • 支持方向键 “上下键”查看
    • 当查看结束,退出时,需按“q键”(quit)退出
    • 还可以在文档中查找,用 斜杠/加查找的内容,并==高亮显示==出来,比如/==root==在文档中查找并标记出来
      • 按 n键 往下查找下一个,并高亮显示
      • 快捷键shift+n 往前查找
      • 总结:其实就是大写N键,向前查看,小写n键向后查看
    • 使问号?加查找内容,搜索?==chrony==是到文章最后
      • 按 n键 从后往前 查找
    • 按 shift+g键 定位到行尾
    • 按 g 定位到行首

总结

  • less命令的用法中包括了more命令所有功能,所以完全可以使用less

head和tail用法

head 查看文件的前 10行 (默认10行)
    -n 数字     (指定查看文件的多少行)
tail   查看文件的尾部,最后 10行
    -f 动态显示文件
    -n 数字     显示文件以数字为单位的行数(头几行,为几行)

head和tail例子

[root@localhost ~]# head anaconda-ks.cfg.1
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
[root@localhost ~]# head -n 2 anaconda-ks.cfg.1
#version=DEVEL
# System authorization information
[root@localhost ~]# tail -n 2 anaconda-ks.cfg.1
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin

tail -f用法

  • tail -f命令,动态显示文件
  • 一般在查看日志会用到
  • 按ctrl+c退出