码迷,mamicode.com
首页 > 系统相关 > 详细

Linux学习笔记10

时间:2016-07-30 15:09:22      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:显示器   linux   数据流   程序   定向   

一、杂项知识整理

1、程序的数据流有三种:

    输入的数据流,标准输入stdin(键盘)

    输出的数据流,标准输出stdout(显示器)

    错误输出流,标准输出stderr(显示器)

    fd 文件描述符:标准输入0 标准输出1 错误输出2

2、重定向:输出重定向 >  特性:覆盖输出

         输出重定向 >>  特性:追加输出,保留内容

        错误输出重定向 2>   2>> 

    合并正常输出流和错误输出流

    &> 覆盖重定向  &>>追加重定向

    2 > &1 合并错误和标准输出

    (  COMMAND;COMMAND)合并多个程序的stdout。例如:

    ls 2>1 将ls的错误输出重定向到1文件中,ls并没有报错因此正常输出并建立空文件1:  

    [root@localhost copytest]# ls 2>1    
   1  7.txt
   [root@localhost copytest]# cat 1

    ls xxx 2>1 将没有xxx这个文件的错误输出到文件1中

    [root@localhost copytest]# cat aaa 2>1    
   [root@localhost copytest]# ls
   1  7.txt
   [root@localhost copytest]# cat 1
   cat: aaa: 没有那个文件或目录

    ls xxx 2>&1 不会生成1这个文件,不过错误跑到标准输出了  

    [root@localhost copytest]# ls xxx 2>&1    
   ls: 无法访问xxx: 没有那个文件或目录
   [root@localhost copytest]# ls
   7.txt

    ls xxx > out1.txt 2>&1 合并错误和标准输出至out1

    [root@localhost copytest]# ls xxx >out1.txt 2>&1    
   [root@localhost copytest]# ls
   7.txt  out1.txt
   [root@localhost copytest]# cat out1.txt 
   ls: 无法访问xxx: 没有那个文件或目录
   [root@localhost copytest]# ls /etc/issue > out2.txt 2>&1
   [root@localhost copytest]# ls
   7.txt  out1.txt  out2.txt
   [root@localhost copytest]# cat out2.txt 
   /etc/issue
   [root@localhost copytest]# (ls /;cat aaaaa) > out4.txt 2>&1
   [root@localhost copytest]# ls
   7.txt  out1.txt  out2.txt  out3.txt  out4.txt
   [root@localhost copytest]# cat out4.txt 
   bin boot dev etc home lib lib64 media mnt opt(省略)
   cat: aaaaa: 没有那个文件或目录

3、set命令:用于设置shell。

    -C 当前shell进程有效,设置使文件不能被覆盖,防止误操作;

    +C 取消文件不能被覆盖

    -f 取消使用通配符

    -n 只读取指令而不执行

    -v 显示shell所读取的输入值

    -l 记录for循环的变量名称

二、详细命令及事例

1、tr命令:对位转换,tr [OPTION]... SET1 [SET2] [< FILE]把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通转换为SET2中出现的字符;

    -d 删除文件中所有在set1中出现的内容  

    [root@localhost copytest]# tr -d ‘a-z‘ < /etc/issue    
    COS 7.2 
    K \           #tr命令只是读取文件,不会修改源文件

    -c 用set1中字符的补集替换set1,这里的字符集为ASCII。

    [root@localhost copytest]# tr -c ‘a-z‘ < /etc/issue    
    tr: "a-z" 后缺少操作数
    当进行替换操作时必须给定两组字符串。
    Try ‘tr --help‘ for more information.    
    [root@localhost copytest]# tr -c ‘a-z‘ ‘*‘ < /etc/issue
    *ent*********ernel**r*on*an**m**d**l**n**r**s**v**t**o*[root@localhost copytest]#

        此处给定格式后,a-z的补集是所有非小写字母,全部替换为*,支持通配符glob。

    -s 删除文件中在set1的出现的重复的字符,只保留一个  

    [root@localhost testdir]# cat tr    
    lsglalsjgllkksajldkglklkjfjfjjd
    asgaaasdjdjjdjdjdddjjkk
    aaaa
    [root@localhost testdir]# tr -s [[:alpha:]] < tr
    lsglalsjglksajldkglklkjfjfjd
    asgasdjdjdjdjdjk
    a

2、mail命令:用于收发邮件;

    mail -s "标题" 地址或用户名 <<EOF(终止符)

    mail -s "标题" 地址或用户名 < 文件(重定向输入至内容)

    管道也可以将内容传递给mail,例如: 

     [root@localhost testdir]# cat /etc/issue | mail -s "hello" root

三、作业及练习(第一部分:课件第五部分重定向和管道)

1、cat /etc/issue | tr ‘a-z‘ ‘A-Z‘ > /tmp/issue.out

2、who | tr ‘a-z‘ ‘A-Z‘ > /tmp/who.out

3、[root@localhost copytest]# mail -s "help" root <<EOF    
    > hello 
    > i‘m $(whoami)
    > the system version is here,please help me to check it
    > thanks
    > $(uname -a)
    > EOF
    您在 /var/spool/mail/root 中有邮件
    [root@localhost copytest]# mail
    Heirloom Mail version 12.5 7/5/10.  Type ? for help.
    "/var/spool/mail/root": 6 messages 1 new 2 unread
     U  1 user@localhost.local  Tue Jul 26 10:01 138/5231  "[abrt] full crash report"
        2 root                  Sat Jul 30 11:28  28/665   "hello"
        3 root                  Sat Jul 30 12:57  22/800   "help"
        4 root                  Sat Jul 30 12:58  22/800   "help"
        5 root                  Sat Jul 30 12:58  22/800   "help"
    >N  6 root                  Sat Jul 30 13:00  22/792   "help"
    & 6
    Message  6:
    From root@localhost.localdomain  Sat Jul 30 13:00:06 2016
    Return-Path: <root@localhost.localdomain>
    X-Original-To: root
    Delivered-To: root@localhost.localdomain
    Date: Sat, 30 Jul 2016 13:00:06 +0800
    To: root@localhost.localdomain
    Subject: help
    User-Agent: Heirloom mailx 12.5 7/5/10
    Content-Type: text/plain; charset=us-ascii
    From: root@localhost.localdomain (root)
    Status: R
    hello 
    i‘m root
    the system version is here,please help me to check it
    thanks
    Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015     x86_64 x86_
    64 x86_64 GNU/Linux

4、将root下文件列表显示成一行并用,隔开:

    [root@localhost copytest]# ls /root | tr ‘\n‘ ‘ ‘    
    aaa.txt aa.txt abc.txt anaconda-ks.cfg mypython vimrc [root@localhost copytest]#

5、file1文件中的内容求和:

    [root@localhost testdir]# cat file1.txt     
    1 2 3 4 5 6 7 8 9 10 
    [root@localhost testdir]# cat file1.sh 
    #!/bin/bash
    #
    declare num_count=0
    for num in $(cat file1.txt)
    do
    num_count=$[$num_count+$num]
    done
    echo "num_count1 = $num_count"
    #
    [root@localhost testdir]# bash file1.sh
    num_count1 = 55

6、删除windows文本文件中的^M字符:两种方法:

    [root@localhost testdir]# cat -A test.txt | tr ‘^M$‘ ‘  $‘    
    weh  $
    asdlgh  $
    qwethl  $
    qwl lwwhet  $
    kweeh   $
     llhwet    $

    dos2unix  直接转换格式

7、只保留字符串中的数字和空格

    [root@localhost testdir]# cat string.txt     
    xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 
    [root@localhost testdir]# cat string.txt | tr -d ‘[[:alpha:]][[:punct:]]‘
     1  2  3  4


本文出自 “静轩丶” 博客,谢绝转载!

Linux学习笔记10

标签:显示器   linux   数据流   程序   定向   

原文地址:http://jingxuan.blog.51cto.com/11808130/1832016

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!