Linux高级命令进阶(week1_day2)--技术流ken

 

输出重定向

 

场景:通常命令的输出都会显示在终端中,有些时候须要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候须要使用到的输出重定向技术。redis

>:覆盖输出,会覆盖掉原先的文件内容vim

>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加windows

2>:错误输出,会覆盖掉原先的文件内容网络

2>>:错误追加输出,会覆盖掉原始文件内容,会在原始内容末尾继续添加运维

&>:将标准输出与错误输出共同写入到文件中。覆盖原有内容elasticsearch

&>>:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)函数

 

标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其余文件或命令中输入。this

标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。spa

错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。操作系统

 

案例1:使用覆盖输出(覆盖原文内容)

[root@ken ~]# vim test [root@ken ~]# cat test this is ken [root@ken ~]# echo "this is oscar" > test [root@ken ~]# cat test this is oscar

 

案例2:使用追加输出(原文中追加)

[root@ken ~]# cat test this is oscar [root@ken ~]# echo "this is ken" >> test [root@ken ~]# cat test this is oscar this is ken

 

案例3:使用错误输出重定向

默认错误输出会输出倒终端之上

[root@ken ~]# cat klkl > test #使用输出重定向没法使错误输出导入到文本中 cat: klkl: No such file or directory [root@ken ~]# cat klkl 2> test #须要使用2>错误输出重定向 [root@ken ~]# cat test cat: klkl: No such file or directory

 

案例4:将标准输出与错误输出共同写入到文件中

[root@ken ~]# cat klkl &> test [root@ken ~]# cat test cat: klkl: No such file or directory

 

输入重定向

 

工做中用到的比较少,了解便可,输入重定向的做用是把文件直接导入到命令中。

案例:统计文本行数

[root@ken ~]# wc -l < /etc/passwd 28

 

管道符

 

管道命令符(|)的做用是把前一个命令本来要输出到屏幕的标准正常数据看成是后一个命令的标准输入。

例如咱们须要统计passwd文件包含root的行数

[root@ken ~]# cat /etc/passwd | grep "root"  | wc -l 2

把搜索命令的输出值传递给统计命令,即把本来要输出到屏幕的用户信息列表再交给wc命令做进一步的加工,所以只须要把管道符放到两条命令之间便可

 

通配符

 

为Linux运维人员,咱们有时候也会遇到明明一个文件的名称就在嘴边但就是想不起来的状况。若是就记得一个文件的开头几个字母,想遍历查找出全部以这个关键词开头的文件,该怎么操做呢?

通配符就是通用的匹配信息的符号,好比

  1. 星号(*)表明匹配零个或多个字符(能够为0个)
  2. 问号(?)表明匹配单个字符(单个字符必须存在)
  3. 中括号内加上数字[0-9]表明匹配0~9之间的单个数字的字符,
  4. 中括号内加上字母[abc]则是表明匹配a、b、c三个字符中的任意一个字符。

案例1:查看dev目录下全部以sda开头的文件

[root@ken ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2

 

案例2:查看dev目录下以sda开头,后面有一个字符的文件

[root@ken ~]# ls /dev/sda?
/dev/sda1  /dev/sda2

加上问号以后/dev/sda就匹配不到了

 

案例3:查看dev下以sda开头,后面跟上数字的文件

匹配不到sda

[root@ken ~]# ls /dev/sda[0-9] /dev/sda1  /dev/sda2

 

案例4:查看dev下以sda开头,后面跟上字母的文件

[root@ken ~]# ls /dev/sda[a-z] ls: cannot access /dev/sda[a-z]: No such file or directory

匹配不到任何文件,也匹配不到/dev/sda,后面跟上字符必须存在才能匹配到。

 

三种引号的做用

 

  1. 单引号(''):转义其中全部的变量为单纯的字符串。
  2. 双引号(""):保留其中的变量属性,不进行转义处理。
  3. 反引号(``):把其中的命令执行后返回结果。

 

案例1:单引号,不解释变量即所见即所得

[root@ken ~]# age=10 [root@ken ~]# echo 'my age is $age' my age is $age

 

案例2:双引号,解释变量

[root@ken ~]# age=10 [root@ken ~]# echo "my age is $age" my age is 10

 

案例3:反引号,用来执行命令

[root@ken ~]# name=`ls /root` [root@ken ~]# 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:指定源文件是谁  后面接 链接目标文件

[root@ken ~]# ln -s ken kenken [root@ken ~]# 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

 

往链接文件添加一些内容

[root@ken ~]# echo "this is ken" > kenken [root@ken ~]# cat kenken this is ken [root@ken ~]# cat ken this is ken

发现源文件内容同步

 

删除链接文件

[root@ken ~]# rm -rf kenken [root@ken ~]# cat ken this is ken

源文件不变

 

删除源文件

[root@ken ~]# rm -rf ken [root@ken ~]# cat kenken cat: kenken: No such file or directory

链接文件失效

 

再次建立源文件

[root@ken ~]# touch ken [root@ken ~]# cat kenken [root@ken ~]# cat ken

再从新建一个与源文件同名的文件,软连接就直接连接到新的文件。由于软连接是按着名称进行连接

 

总结:

软链接

ln - s 原路径 目标路径

特色:

一、就是至关于win中的快捷方式

二、删除连接文件,源文件无影响

三、删除源文件,连接文件失效

四、修改源文件\连接文件,内容都发生改变

 

硬连接

ln 源文件 目标文件

[root@ken ~]# ln ken ken1 [root@ken ~]# 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

 

总结:

一、删除连接文件,源文件无影响

二、删除源文件,连接文件无影响

三、修改源文件\连接文件,内容都发生改变

 

一切从“/”开始

 

在Linux系统中,目录、字符设备、块设备、套接字等都被抽象成了文件,Linux系统中一切都是文件。既然平时咱们打交道的都是文件,那么又应该如何找到它们呢?在Windows操做系统中,想要找到一个文件,咱们要依次进入该文件所在的磁盘分区(假设这里是D盘),而后在进入该分区下的具体目录,最终找到这个文件。可是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。另外,Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均表明不一样的目录,而且文件名称中不得包含斜杠(/)。Linux系统中的

文件存储结构如图6-1所示。

第6章 存储结构与磁盘划分。第6章 存储结构与磁盘划分。

 

FHS是根据以往无数Linux系统用户和开发者的经验而总结出来的,是用户在Linux系统中存储文件时须要遵照的规则,用于指导咱们应该把文件保存到什么位置,以及告

诉用户应该在何处找到所需的文件。可是,FHS对于用户来说只能算是一种道德上的约束,有些用户就是懒得遵照,依然会把文件处处乱放,有些甚至历来没有据说过它。

 

                          Linux系统中常见的目录名称以及相应内容

目录名称

应放置文件的内容

/boot

开机所需文件—内核、开机菜单以及所需配置文件等

/dev

以文件形式存听任何设备与接口

/etc

配置文件

/home

用户主目录

/bin

存放单用户模式下还能够操做的命令

/lib

开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数

/sbin

开机过程当中须要的命令

/media                                         

用于挂载设备文件的目录                                                                                 

/opt

放置第三方的软件

/root

系统管理员的家目录

/srv

一些网络服务的数据文件目录

/tmp

任何人都可使用的“共享”临时目录

/proc

虚拟文件系统,例如系统内核、进程、外部设备及网络状态等

/usr/local

用户自行安装的软件

/usr/sbin

Linux系统开机时不会使用到的软件/命令/脚本

/usr/share

帮助与说明文件,也可放置共享文件

/var

主要存放常常变化的文件,如日志
/lost+found

当文件系统发生错误时,将一些丢失的文件片断存放在这里

 

绝对路径vs相对路径

 

在Linux系统中另外还有一个重要的概念—路径。

路径指的是如何定位到某个文件,分为绝对路径与相对路径。

绝对路径指的是从根目录(/)开始写起的文件或目录名称

相对路径则指的是相对于当前路径的写法。

相关文章
相关标签/搜索