输出重定向

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

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

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

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

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

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

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

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

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

错误输出重定向(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 原路径 目标路径

特点:

1、就是相当于win中的快捷方式

2、删除链接文件,源文件无影响

3、删除源文件,链接文件失效

4、修改源文件\链接文件,内容都发生改变

硬链接

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

总结:

1、删除链接文件,源文件无影响

2、删除源文件,链接文件无影响

3、修改源文件\链接文件,内容都发生改变

一切从“/”开始

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

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

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系统中另外还有一个重要的概念—路径。

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

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

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

Linux高级命令进阶的更多相关文章

  1. Linux高级命令进阶(week1_day2)

    Linux高级命令进阶(week1_day2)--技术流ken   输出重定向   场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候 ...

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

    输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术. >:覆盖输出,会覆盖掉原先的文件内容 ...

  3. 20190402Linux高级命令进阶(week1_day2

    Linux高级命令进阶(week1_day2) 输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技 ...

  4. Linux mount 命令进阶

    笔者在<Linux mount 命令>一文中介绍了 mount 命令的基本用法,本文我们接着介绍 mount 命令的一些高级用法,比如 bind mounts(绑定挂载)和 shared ...

  5. 逼格高又实用的Linux高级命令,开发运维都要懂!

    在运维的坑里摸爬滚打好几年了,我还记得我刚开始的时候,我只会使用一些简单的命令,写脚本的时候,也是要多简单有多简单,所以有时候写出来的脚本又长又臭. 像一些高级点的命令,比如说 Xargs 命令.管道 ...

  6. Linux高级命令及mysql数据安装

    Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...

  7. linux系统高级命令进阶

    输出重定向 >:覆盖文件内容 echo "123" > test:把原来的内容覆盖 echo "123" >> test:把原来的存在( ...

  8. Linux之命令进阶

    Linux系统的启动过程 1.开机自检 BIOS2.MBR引导3.GRUB菜单4.加载内核5.运行init进程6.从/etc/inittab读取运行级别7.根据/etc/rc.sysinit 初始化系 ...

  9. linux高级命令组合

    ps -auxww | grep httpd 快速找到正在运行的apache服务安装目录 find / -path  'sina_app_v3*' 快速找到根目录下面的sina_app_v3目录 fi ...

随机推荐

  1. unity探索者之iOS微信登录、分享

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8405700.html iOS接入微信的SDK相对于安卓要麻烦一点,除了核心功能代码 ...

  2. Jmeter 常用函数(8)- 详解 __MD5

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 将指定的字符串 MD5 加密并返回,加 ...

  3. You are using pip version 10.0.1, however version 20.2.2 is available.

    在安装第三方库时,出现如下提示: You are using pip version 10.0.1, however version 20.2.2 is available.You should co ...

  4. HM16.0之帧间预测——xCheckRDCostInter()函数

    参考:https://blog.csdn.net/nb_vol_1/article/category/6179825/1? 1.源代码: #if AMP_MRG Void TEncCu::xCheck ...

  5. 也谈基于Web的含工作流项目的一般开发流程

    项目包含的通用模块代码等我有时间一并剥离贡献出来(基于WebSocket的通知引擎,工作流整合模块,自定义表单,基于RBAC权限设计),最近太忙了,Web项目有一段时间没碰,有点生疏的感觉,主要在忙G ...

  6. 你懂RocketMQ 的架构原理吗?

    前言 前面我们跟大家聊了聊什么是消息中间件,以及哪些场景使用哪些消息中间件更加合适. 我们了解到RocketMQ是java语言开发的,我们能更深入的阅读源码了解它的底层原理,而且它具有优秀的消息中间件 ...

  7. MD5加密,java String 转变成MD5 String 详细代码,工具类Android开发必备

    /** * MD5加码.32位 * @param inStr * @return */ public static String MD5(String inStr) { MessageDigest m ...

  8. The Data Warehouse Toolkit 阅读笔记

    前言 这篇笔记的主要内容来至于The Data Warehouse Toolkit,该书可以称为数仓建模的圣经 什么是星型模型 以一个业务实时为主表.比如一笔订单就是一个业务事实.订单有商品的SKU信 ...

  9. sdf文件可以通过database net4工具升级版本

    用database .net4工具打开数据库后,右键数据库->数据库工具->upgrade to->to 4.0 or to 3.5; 可以用来判断数据库版本及是否要升级.

  10. 《我想进大厂》之mysql夺命连环13问

    想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里? 1. 能说下myisam 和 innodb的区别吗? myisam引擎是5.1版本之前的默认引擎,支持全文检索.压缩 ...