Linux高级命令进阶(week1_day2)
发布时间:2020-12-13 22:34:31 所属栏目:Linux 来源:网络整理
导读:Linux高级命令进阶(week1_day2)--技术流ken ? 输出重定向 ? 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。 :覆盖输出,会覆盖掉原先的文件内容 :
Linux高级命令进阶(week1_day2)--技术流ken
?
输出重定向
?
场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
2>:错误输出,会覆盖掉原先的文件内容
2>>:错误追加输出,会覆盖掉原始文件内容,会在原始内容末尾继续添加
&>:将标准输出与错误输出共同写入到文件中。覆盖原有内容
&>>:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
?
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
?
案例1:使用覆盖输出(覆盖原文内容)
[
[email?protected] ~]# vim test
[ [email?protected] ~]# cat test this is ken [ [email?protected] ~]# echo "this is oscar" > test [ [email?protected] ~]# cat test this is oscar
?
案例2:使用追加输出(原文中追加)
[
[email?protected] ~]# cat test
this is oscar [ [email?protected] ~]# echo "this is ken" >> test [ [email?protected] ~]# cat test this is oscar this is ken
?
案例3:使用错误输出重定向
默认错误输出会输出倒终端之上
[
[email?protected] ~]# cat klkl > test???????????? #使用输出重定向无法使错误输出导入到文本中
cat: klkl: No such file or directory [ [email?protected] ~]# cat klkl 2> test???????????? #需要使用2>错误输出重定向 [ [email?protected] ~]# cat test cat: klkl: No such file or directory
?
案例4:将标准输出与错误输出共同写入到文件中
[
[email?protected] ~]# cat klkl &> test
[ [email?protected] ~]# cat test cat: klkl: No such file or directory
?
输入重定向
?
工作中用到的比较少,了解即可,输入重定向的作用是把文件直接导入到命令中。
案例:统计文本行数
[
[email?protected] ~]# wc -l < /etc/passwd
28
?
管道符
?
管道命令符(|)的作用是把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。
例如我们需要统计passwd文件包含root的行数
[
[email?protected] ~]# cat /etc/passwd | grep "root"? | wc -l
2
把搜索命令的输出值传递给统计命令,即把原本要输出到屏幕的用户信息列表再交给wc命令作进一步的加工,因此只需要把管道符放到两条命令之间即可
?
通配符
?
为Linux运维人员,我们有时候也会遇到明明一个文件的名称就在嘴边但就是想不起来的情况。如果就记得一个文件的开头几个字母,想遍历查找出所有以这个关键词开头的文件,该怎么操作呢?
通配符就是通用的匹配信息的符号,比如
案例1:查看dev目录下所有以sda开头的文件
[
[email?protected] ~]# ls /dev/sda*
/dev/sda? /dev/sda1? /dev/sda2
?
案例2:查看dev目录下以sda开头,后面有一个字符的文件
[
[email?protected] ~]# ls /dev/sda?
/dev/sda1? /dev/sda2
加上问号之后/dev/sda就匹配不到了
?
案例3:查看dev下以sda开头,后面跟上数字的文件
匹配不到sda
[
[email?protected] ~]# ls /dev/sda[0-9]
/dev/sda1? /dev/sda2
?
案例4:查看dev下以sda开头,后面跟上字母的文件
[
[email?protected] ~]# ls /dev/sda[a-z]
ls: cannot access /dev/sda[a-z]: No such file or directory
匹配不到任何文件,也匹配不到/dev/sda,后面跟上字符必须存在才能匹配到。
?
三种引号的作用
?
?
案例1:单引号,不解释变量即所见即所得
[
[email?protected] ~]# age=10
[ [email?protected] ~]# echo ‘my age is $age‘ my age is $age
?
案例2:双引号,解释变量
[
[email?protected] ~]# age=10
[ [email?protected] ~]# echo "my age is $age" my age is 10
?
案例3:反引号,用来执行命令
[
[email?protected] ~]# name=`ls /root`
[ [email?protected] ~]# echo $name 10.txt 11.txt 12.txt 13.txt 14.txt 1.txt 2.txt 3.txt 4.txt 5 =5 5.txt 6.txt 7.txt 8.txt 9.txt anaconda-ks.cfg elasticsearch-6.4.0.tar.gz elasticsearch-6.4.0.tar.gz.1 ken kenken nohup.out redis-manager-1.1 redis-manager-1.1-release.tar.gz test test1.sh test.sh
?
软连接、硬连接
?
软连接
软连接:就是相当于windows下面的快捷方式
【软链接相当于快捷方式,硬链接相当于复制粘贴】
创建完成后,源文件、软链接和硬链接均可以查看到文件内容。
编辑源文件,软、硬链接跟着动。
删除源文件,软链接失效,硬链接无影响。再重新建一个与源文件同名的文件,软链接就直接链接到新的文件,而硬链接不变。因为软链接是按着名称进行链接。
ln -s
-s:指定源文件是谁 ?后面接 连接目标文件
[
[email?protected] ~]# ln -s ken kenken
[ [email?protected] ~]# ls elasticsearch-6.4.0.tar.gz??? ken???? nohup.out????????? redis-manager-1.1-release.tar.gz elasticsearch-6.4.0.tar.gz.1? kenken? redis-manager-1.1
?
往连接文件添加一些内容
[
[email?protected] ~]# echo "this is ken" > kenken
[ [email?protected] ~]# cat kenken this is ken [ [email?protected] ~]# cat ken this is ken
发现源文件内容同步
?
删除连接文件
[
[email?protected] ~]# rm -rf kenken
[ [email?protected] ~]# cat ken this is ken
源文件不变
?
删除源文件
[
[email?protected] ~]# rm -rf ken
[ [email?protected] ~]# cat kenken cat: kenken: No such file or directory
连接文件失效
?
再次创建源文件
[
[email?protected] ~]# touch ken
[ [email?protected] ~]# cat kenken [ [email?protected] ~]# cat ken
再重新建一个与源文件同名的文件,软链接就直接链接到新的文件。因为软链接是按着名称进行链接
?
总结:
软连接
ln - s 原路径 目标路径
特点:
1、就是相当于win中的快捷方式
2、删除链接文件,源文件无影响
3、删除源文件,链接文件失效
4、修改源文件链接文件,内容都发生改变
?
硬链接
ln 源文件 目标文件
[
[email?protected] ~]# ln ken ken1
[ [email?protected] ~]# ls elasticsearch-6.4.0.tar.gz??? ken?? kenken???? redis-manager-1.1 elasticsearch-6.4.0.tar.gz.1? ken1? nohup.out? redis-manager-1.1-release.tar.gz
?
总结:
1、删除链接文件,源文件无影响
2、删除源文件,链接文件无影响
3、修改源文件链接文件,内容都发生改变
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |