输出重定向
 
场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
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高级命令进阶(week1_day2)的更多相关文章

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

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

  2. Linux高级命令进阶

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

  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. GIT 工作流程常用用命令大全

    一.Git基本工作流程 1.Git工作区域   2.向仓库中添加文件流程 二.Git初始化及仓库创建和操作 1.Git安装之后需要进行一些基本信息设置 a.设置用户名:git  config -- g ...

  2. MySQL数据库MyISAM存储引擎转为Innodb

    MySQL数据库MyISAM存储引擎转为Innodb  之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,所以一直都没什么问题.但是最近出现了MySQL数据表经常被锁的情况,直接导 ...

  3. java常用数据类型转换

    在Java开发过程中经常会涉及到数据类型的转换问题,比如数字型转字符型,字符型转日期型,字符串转数组等等,以及其他类型的强制转换等.经常出现,所以有必要总结一下. 1.如何将字串 String 转换成 ...

  4. FTP服务器安装配置

    1.安装:yum install vsftpd -y 2.修改配置文件:cd /etc/vsftpd/ cat vsftpd.conf | grep -Ev '^$|^#' listen_port= ...

  5. docker的数据管理

    容器中管理数据主要有两种方式: 1.数据卷:容器内数据直接映射到本地宿主机. 2.数据卷容器:使用特定容器维护数据卷 数据卷: 数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器. ...

  6. Linux-expect脚本-编写一个expect脚本

    1.声明expect #!/usr/bin/expect -f 2.设置超时时间,获取参数 set ip [lindex $argv 0 ] //接收第一个参数,并设置IP set password ...

  7. 线程系列1--Java创建线程的几种方式及源码分析

    线程--创建线程的几种方式及源码分析 开始整理下线程的知识,感觉这块一直是盲区,工作中这些东西一直没有实际使用过,感觉也只是停留在初步的认识.前段时间一个内推的面试被问到,感觉一脸懵逼.面试官说,我的 ...

  8. LeetCode 238. 除自身以外数组的乘积( Product of Array Except Self)

    题目描述 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输 ...

  9. WARNING: inbound connection timed out (ORA-3136)

    WARNING: inbound connection timed out (ORA-3136) WARNING: inbound connection timed out (ORA-3136) Ta ...

  10. Torvalds的linux

    1991年,芬兰人林纳斯•托瓦兹在赫尔辛基大学上学,对操作系统很好奇,并且对MINIX只允许在教育上使用很不满(其不允许任何商业使用),于是开始写他自己的操作系统,这就是后来的Linux内核. 199 ...