三期第五讲 -高级文件管理
1.输入输出重定向
  ls -l /dev/stdin -> /proc/self/fd/0
  标准输入 设备:键盘 标记:0
  ls -l /dev/stdout -> /proc/self/fd/1
  标准输出 设备:屏幕 标记:1
  ls -l /dev/stderr -> /proc/self/fd/2
  错误输出 设备:屏幕 标记:2

  ls /etc/passwd /etc/passwd1 1>1.log 2>2.log
  将正确输出1 写入1.log ,将错误输出写入2.log
  ls /etc/passwd /etc/passwd1 &>all.log
  将正确输出和错误输出一同写入all.log
  ls /etc/passwd /etc/passwd1 1>lei.log 2>&1
  将正确输出和错误输出一同写入lei.log
  ls /etc/passwd /etc/passwd1 /dev/null 2>&1
  系统的黑洞:不占用磁盘空间

  dd if=/dev/zero of=aaa.log bs=1 count=1M
  零发射器,将1M数据写入文件

  echo "aaa" > aaa.log
  将字符写入文件
  echo "bbb" >>aaa.log
  将字符追加写入文件

  cat < aaa.log
  将文件的内容作为cat 的输入

| 管道妙用
  将上一个命令的标准输出,传递给下一个命令做标准输入
  cat /etc/passwd | head -n 3 | cut -d: -f 1,3,7 |sort -rt: -k 2 |tr [a-z] [A-Z]

--通配符
  *:匹配任意长度的任意字符
  ?:匹配任意一个字符
  []:任意属于字符组的字符
  {}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
  >>:附加到指定文件的结尾
  >:输出重定向
  <:输入重定向
  |:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
  ||:逻辑或
  &&:逻辑与
  &:在后台执行

2.wc: Word Count
 作用:计算文件的单词数,行数,字符数,并将统计结果显示输出
 参数:-c 统计字节数。
  -l 统计行数。
  -m 统计字符数。这个标志不能与 -c 标志一起使用。
  -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
  -L 打印最长行的长度。
  -help 显示帮助信息
  --version 显示版本信息
 语法:wc fileNM
  7 8 70 test.txt
  行数 单词数 字节数 文件名

3.grep :http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html
 作用:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活
 参数:-a --text #不要忽略二进制的数据。
  -c --count #计算符合样式的列数。
  -i --ignore-case #忽略字符大小写的差别。
  -v --revert-match #显示不包含匹配文本的所有行。
  -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。

规则表达式:^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
  $ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
  . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
  * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
  .* #一起用代表任意字符。
  [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
  [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
  \(..\) #标记匹配字符,如'\(love\)',love被标记为1。
  \< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
  \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
  x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
  x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
  x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
  \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
  \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
  \b #单词锁定符,如: '\bgrep\b'只匹配grep。
 语法: grep '^string' file
  grep 'string$' file
  grep -c 'string' file

4. tr
 作用:标准输入中通过替换或删除操作进行字符转换
 语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
 参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
  -d 删除字符串1中所有输入字符。
  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
 字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
  [a-z] a-z内的字符组成的字符串。
  [A-Z] A-Z内的字符组成的字符串。
  [0-9] 数字串。
  \octal 一个三位的八进制数,对应有效的ASCII字符。
  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
 tr中特定控制字符的不同表达方式
  速记符含义八进制方式
  \a Ctrl-G 铃声\007
  \b Ctrl-H 退格符\010
  \f Ctrl-L 走行换页\014
  \n Ctrl-J 新行\012
  \r Ctrl-M 回车\015
  \t Ctrl-I tab键\011
  \v Ctrl-X \030
 语法:cat file | tr "abc" "xyz" > new_file
  将文件中的abc 替换为 xyz
  cat file | tr -d "Snail" > new_file
  凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -s [a-zA-Z] > new_file
  删除“连续着的”重复字母,只保留第一个
  cat file | tr -s "\n" > new_file
  删除空行

5.sort
 作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序
 参数: -b 忽略每行前面开始出的空格字符。
  -c 检查文件是否已经按照顺序排序。
  -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f 排序时,将小写字母视为大写字母。
  -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -k 选择以哪个区间进行排序。
  -m 将几个排序好的文件进行合并。
  -M 将前面3个字母依照月份的缩写进行排序。
  -n 依照数值的大小排序。
  -o<输出文件> 将排序后的结果存入指定的文件。
  -r 以相反的顺序来排序。
  -t<分隔字符> 指定排序时所用的栏位分隔字符。
  -u 去除重复行

  +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
 语法:sort -n -t 'ch' -k num file
  ch 字符的第num 段按照数值排序

6.cut
 作用:按列提取文件
 参数: -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
  -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  -c :以字符为单位进行分割。
  -d :自定义分隔符,默认为制表符。
  -f :与-d一起使用,指定显示哪个区域。
  -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除
 语法: cut -b 8,3-5
  3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦
  cut -b -3
  -3表示从第一个字节到第三个字节
  cut -b 3-
  3-表示从第三个字节到行尾
  cut -b -3,3-
  输出整行,不会出现连续两个重叠的
  cut -c
  -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,

  cut -d : -f 1,3-5

  提取按照:分割的第一列,第三列到第五列
  sed -n l file
  空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母

7.which
  作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
  参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
     -p  与-n参数相同,但此处的包括了文件的路径。
     -w  指定输出时栏位的宽度。
       -V  显示版本信息

  语法: which 命令

8.whereis
  作用:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
  参数:-b 定位可执行文件。
      -m 定位帮助文件。
     -s 定位源代码文件。
      -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
      -B 指定搜索可执行文件的路径。
      -M 指定搜索帮助文件的路径。
      -S 指定搜索源代码文件的路径。

9.locate :http://www.cnblogs.com/peida/archive/2012/11/12/2765750.html
  作用:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,是最近才建立或刚更名的数据,可能会找不到,执行updatedb则会更新数据库。
  参数:-e 将排除在寻找的范围之外。
    -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。     实际搜寻硬盘查询文件名称
    -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
    -q 安静模式,不会显示任何错误讯息。
    -n 至多显示 n个输出。
    -r 使用正规运算式 做寻找的条件。
    -o 指定资料库存的名称。
    -d 指定资料库的路径
    -h 显示辅助讯息
    -V 显示程式的版本讯息

10.find
  作用:用于在文件树种查找文件,并作出相应的处理 (硬盘)
  格式:find pathname -options [-print -exec -ok ...]
  格式参数:pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  命令选项:-name 按照文件名查找文件。
    -perm 按照文件权限来查找文件。
    -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
    -user 按照文件属主来查找文件。
    -group 按照文件所属的组来查找文件。
    -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,
    -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
    -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
    -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
    -type 查找某一类型的文件,诸如:
      b - 块设备文件。
      d - 目录。
      c - 字符设备文件。
      p - 管道文件。
      l - 符号链接文件。

      f - 普通文件。 
    -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 
    -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
    -mount:在查找文件时不跨越文件系统mount点。
    -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
    -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
    另外,下面三个的区别:
    -amin n 查找系统中最后N分钟访问的文件
    -atime n 查找系统中最后n*24小时访问的文件
    -cmin n 查找系统中最后N分钟被改变文件状态的文件
    -ctime n 查找系统中最后n*24小时被改变文件状态的文件
    -mmin n 查找系统中最后N分钟被改变文件数据的文件
    -mtime n 查找系统中最后n*24小时被改变文件数据的文件
  语法   :find -atime -2 :查找指定时间内修改过的文件
      find -name "*.log" :根据关键字查找
      find /opt/soft/test/ -perm 777:按照目录或文件的权限来查找文件
      find -type f -name "*.log":按类型查找
      find -type d | sort:查找当前所有目录并排序
      find -size +1M -print:按大小查找文件并输出
      find -name "*.log" |xargs rm -rf: 删除查找文件
      find -name "*.log" -exec ls -l {}; 以长格式显示查找文件
      find -name "*.log" -exec rm -f {}; 删除查找文件
      find -name "*.log" -ok rm -f {}; 交互删除文件

Linux第六节随笔 输入输出重定向 、管道、通配符、wc / grep / tr / sort / cut / which /whereis /locate /find /的更多相关文章

  1. 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)

    主要内容 1.标准输入输出和错误 2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep 标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0, ...

  2. Linux Shell系列教程之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  3. Linux学习之管道符、重定向、通配符、转义符、环境变量

    Linux学习之管道符.重定向.通配符.转义符.环境变量 1. 输入输出重定向 输入重定向是指把文件导入命令中. 输出重定向是指把原本要输出到屏幕的数据信息写入指定文件中. a 标准输入重定向(STD ...

  4. linux学习(三)输入输出重定向和管道功能、cat命令、more命令

    目录 输入输出重定向 输出重定向 管道功能 cat命令 more命令 @(输入输出重定向和管道功能) 输入输出重定向 输入重定向可以让用户将某个文件作为输入设备,输出重定向可以把某个文件作为输出设备, ...

  5. Linux第五节随笔 /file / vim / suid /sgid sbit

    三期第四讲1.查询文件类型与文件位置命令 file 作用:查看文件类型(linux下的文件类型不以后缀名区分) 语法举例: [root@web01 ~]# file passwd passwd: AS ...

  6. Linux第七节随笔-中 /date / ln /

    4.date link 作用:显示或设定系统的日期与时间 参数: -d<字符串> 显示字符串所指的日期与时间.字符串前后必须加上双引号. -s<字符串> 根据字符串来设置日期与 ...

  7. Linux第七节随笔 diff /uniq /stat

    linux第七讲(上)1.diff link 作用:diff命令能比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处. 如果指定比较的是 ...

  8. Linux第七节随笔-下磁盘管理

    baidubaike 磁盘管理物理磁盘---> RAID--->文件系统--->用户使用LVM概念简述Raid详细解说                0                ...

  9. Linux第六节课学习笔记

    if条件测试语句可以让脚本根据实际情况自动执行相应的命令,可以分为单分支.双分支与多分支. /dev/null为无回收功能的垃圾箱. read是用来读取用户输入信息的命令,-p用来显示提示信息. fo ...

随机推荐

  1. 阿里云Https部署网站

    0.开始之前 文章图片很多,注意流量 首先你得准备好一个已经备案成功的域名,并且有一个在阿里云的服务器部署了的网站. 然后就是你迫切的希望升级网站为HTTPS部署. 那么我们开始吧! 1.申请CA证书 ...

  2. 拆分字符and读取properties文件

    在方法里面建立properties对象 Properties pps = new Properties(); 调用.load()方法 pps.load(new FileInputStream(&quo ...

  3. UWP Flyout浮动控件

    看见没,点击"Options"按钮,浮动出来一个界面,这个界面可以用xaml自定义. 如果要点击的控件又Flyout属性那么,可以直接按照下面用 <Button Conten ...

  4. 在Github上面搭建一个自己域名的Hexo博客

    前言 在一次看到别人的博客主页,觉得设计很漂亮.但是由于自己对于前台这块没什么办法,煞是羡慕.偶然中发现这种样式是在Github上面搭建的,使用的是Next主题.于是便想自己也搭建一个,于是便去就去查 ...

  5. 【Codeforces 837D】Round Subset

    http://codeforces.com/contest/837/problem/D 分解质因数,即第i个数的因子2的个数为c2[i],因子5的个数为c5[i],末尾零的个数就是min{Σc2[i] ...

  6. java并发编程的艺术——第四章总结

    第四章并发编程基础 4.1线程简介 4.2启动与终止线程 4.3线程间通信 4.4线程应用实例 java语言是内置对多线程支持的. 为什么使用多线程: 首先线程是操作系统最小的调度单元,多核心.多个线 ...

  7. ML学习分享系列(2)_计算广告小窥[中]

    原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ...

  8. 看看android基础知识,谁帮我作答

    无论怎么着,了解一点android的基本知识还是有必要的,就当开阔一些自己的眼界吧. .. . android的四大功能组件是_activity_,_service_,_BroadcastReceiv ...

  9. JS排序

    冒泡排序 https://sort.hust.cc/1.bubbleSort.html 选择排序 https://sort.hust.cc/2.selectionSort.html 插入排序 http ...

  10. 【SqlServer】【问题收集】阻止保存要求重新创建表的更改

    1   概述 阻止保存要求重新创建表的更改,场景是这样的:假设数据库中有一张员工表EmployeeInfo,如下所示: 其中有个字段EmployeeBirthday,在设计表时,其类型误设为VARCH ...