zoukankan      html  css  js  c++  java
  • 特殊权限及重定向相关

    特殊权限

    1. setuid


    setuid  #权限位作用于属主的位置   可执行的权限位   执行这条命令的时候,相当于这条命令的所有者 root
           #数字 4xxx 表示

    #用 s 表示
    [root@CentOS7 ~]#ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
    [root@CentOS7 ~]#ll /usr/bin/rm
    -rwxr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm

    #普通用户没有权限用删除命令删除目录
    [root@CentOS7 ~]#su - zzc
    Last login: Fri Jul 24 12:09:44 CST 2020 on pts/0
    [zzc@CentOS7 ~]$rm -rf /opt
    rm: cannot remove ‘/opt’: Permission denied
    [zzc@CentOS7 ~]$logout
    #root用户给删除命令加上setuid权限,普通用户可以随意删除
    [root@CentOS7 ~]#chmod u+s /usr/bin/rm
    [root@CentOS7 ~]#su - zzc
    Last login: Fri Jul 24 15:00:35 CST 2020 on pts/1
    [zzc@CentOS7 ~]$rm -rf /opt
    [zzc@CentOS7 ~]$ll /opt
    ls: cannot access /opt: No such file or directory


    #普通用户不能使用yum,命令,即使添加了setuid的权限也不行
    [root@CentOS7 ~]# ll /usr/bin/yum
    -rwxr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
    [root@CentOS7 ~]# su - zzc
    Last login: Fri Jul 24 15:55:33 CST 2020 on pts/0
    [zzc@CentOS7 ~]$ yum install -y sl
    Loaded plugins: fastestmirror
    You need to be root to perform this command.
    [zzc@CentOS7 ~]$ yum install -y vim
    Loaded plugins: fastestmirror
    You need to be root to perform this command.
    [zzc@CentOS7 ~]$ logout
    [root@CentOS7 ~]# chmod u+s /usr/bin/yum
    [root@CentOS7 ~]# ll /usr/bin/yum
    -rwsr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
    [root@CentOS7 ~]# su - zzc
    Last login: Fri Jul 24 16:02:12 CST 2020 on pts/0
    [zzc@CentOS7 ~]$ yum install -y sl
    Loaded plugins: fastestmirror
    You need to be root to perform this command.
    [zzc@CentOS7 ~]$ yum install -y vim
    Loaded plugins: fastestmirror
    You need to be root to perform this command.


    # setuid 权限是以4开头
    [root@CentOS7 ~]# ll /usr/bin/cd
    -rwxr-xr-x. 1 root root 26 Oct 31  2018 /usr/bin/cd
    [root@CentOS7 ~]# stat /usr/bin/cd
    File: ‘/usr/bin/cd’
    Size: 26       Blocks: 8         IO Block: 4096   regular file
    Device: 803h/2051d Inode: 50334565   Links: 1
    Access: (0755/-rwxr-xr-x) Uid: (    0/   root)   Gid: (    0/   root)
    Access: 2018-10-31 01:07:12.000000000 +0800
    Modify: 2018-10-31 01:07:12.000000000 +0800
    Change: 2020-07-06 09:29:42.649290051 +0800
    Birth: -

    [root@CentOS7 ~]# ll /usr/bin/yum
    -rwsr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
    [root@CentOS7 ~]# stat /usr/bin/yum
    File: ‘/usr/bin/yum’
    Size: 801       Blocks: 8         IO Block: 4096   regular file
    Device: 803h/2051d Inode: 50610581   Links: 1
    Access: (4755/-rwsr-xr-x) Uid: (    0/   root)   Gid: (    0/   root)
    Access: 2020-07-24 16:04:05.042980493 +0800
    Modify: 2018-11-05 09:53:57.000000000 +0800
    Change: 2020-07-24 16:03:30.146981288 +0800
    Birth: -


    #大S 和 小s的区别  
    #拥有x执行权限,设置setuid之后是小s
    [root@CentOS7 ~]# ll file.txt
    -rwxr--r-- 1 root root 16 Jul 24 11:51 file.txt
    [root@CentOS7 ~]# chmod u+s file.txt
    [root@CentOS7 ~]# ll file.txt
    -rwsr--r-- 1 root root 16 Jul 24 11:51 file.txt

    #没有x执行权限,设置setuid之后是大S
    [root@CentOS7 ~]# ll 123.txt
    -rw-r--r-- 1 root root 389 Jul 24 12:06 123.txt
    [root@CentOS7 ~]# chmod u+s 123.txt
    [root@CentOS7 ~]# ll 123.txt
    -rwSr--r-- 1 root root 389 Jul 24 12:06 123.txt

    2.setgid

    setgid   #权限为作用在属组的x为    使用 s 表示   有大S 和小s  

            #用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组
            #当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了
            #默认的组就是这个目录的所属组       让多个用户能够共享一个目录  
            #数字 2xxx 表示


    # setgid 权限以2开头
    [root@CentOS7 ~]# ll -d /data
    drwxrws--- 2 root test 64 Jul 24 16:32 /data
    [root@CentOS7 ~]# stat /data
    File: ‘/data’
    Size: 64       Blocks: 0         IO Block: 4096   directory
    Device: 803h/2051d Inode: 16614       Links: 2
    Access: (2770/drwxrws---) Uid: (    0/   root)   Gid: ( 1001/   test)
    Access: 2020-07-24 16:36:52.439935688 +0800
    Modify: 2020-07-24 16:32:12.201942070 +0800
    Change: 2020-07-24 16:33:55.405939720 +0800
    Birth: -


    [root@CentOS7 ~]# mkdir /data
    [root@CentOS7 ~]# ll -d /data
    drwxr-xr-x 2 root root 6 Jul 24 16:26 /data
    [root@CentOS7 ~]# chmod 770 /data
    [root@CentOS7 ~]# ll -d /data
    drwxrwx--- 2 root root 6 Jul 24 16:26 /data
    [root@CentOS7 ~]# chgrp test /data
    [root@CentOS7 ~]# ll -d /data
    drwxrwx--- 2 root test 6 Jul 24 16:26 /data
    [root@CentOS7 ~]# useradd zzc01
    [root@CentOS7 ~]# useradd zzc02
    [root@CentOS7 ~]# useradd zzc03
    [root@CentOS7 ~]# id zzc03
    uid=1004(zzc03) gid=1005(zzc03) groups=1005(zzc03)
    [root@CentOS7 ~]# usermod -aG test zzc01
    [root@CentOS7 ~]# usermod -aG test zzc02
    [root@CentOS7 ~]# usermod -aG test zzc03
    [root@CentOS7 ~]# id zzc03
    uid=1004(zzc03) gid=1005(zzc03) groups=1005(zzc03),1001(test)

    [root@CentOS7 ~]# su - zzc01
    [zzc01@CentOS7 ~]$ touch /data/oldboy.txt
    [zzc01@CentOS7 ~]$ ll /data/oldboy.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 /data/oldboy.txt
    [zzc01@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - zzc02
    [zzc02@CentOS7 ~]$ touch /data/oldboy02.txt
    [zzc02@CentOS7 ~]$ ll /data/oldboy02.txt
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 /data/oldboy02.txt
    [zzc02@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - zzc03
    [zzc03@CentOS7 ~]$ touch /data/oldboy03.txt
    [zzc03@CentOS7 ~]$ ll /data/oldboy03.txt
    -rw-rw-r-- 1 zzc03 zzc03 0 Jul 24 16:32 /data/oldboy03.txt
    [zzc03@CentOS7 ~]$ logout
    [root@CentOS7 ~]# ll /data
    total 0
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 oldboy02.txt
    -rw-rw-r-- 1 zzc03 zzc03 0 Jul 24 16:32 oldboy03.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 oldboy.txt

    [root@CentOS7 ~]# chmod g+s /data
    [root@CentOS7 ~]# ll -d /data
    drwxrws--- 2 root test 64 Jul 24 16:32 /data
    [root@CentOS7 ~]# ll /data
    total 0
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 oldboy02.txt
    -rw-rw-r-- 1 zzc03 zzc03 0 Jul 24 16:32 oldboy03.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 oldboy.txt

    [root@CentOS7 ~]# echo "hello" > /data/zzc.log
    [root@CentOS7 ~]# ll /data
    total 4
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 oldboy02.txt
    -rw-rw-r-- 1 zzc03 zzc03 0 Jul 24 16:32 oldboy03.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 oldboy.txt
    -rw-r--r-- 1 root test  6 Jul 24 16:40 zzc.log
    [root@CentOS7 ~]# su - zzc01
    Last login: Fri Jul 24 16:30:24 CST 2020 on pts/0
    [zzc01@CentOS7 ~]$ echo "hi" > /data/zzc01
    [zzc01@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - zzc02
    Last login: Fri Jul 24 16:31:13 CST 2020 on pts/0
    [zzc02@CentOS7 ~]$ echo "word" > /data/zzc02
    [zzc02@CentOS7 ~]$ ll /data
    total 12
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 oldboy02.txt
    -rw-rw-r-- 1 zzc03 zzc03 0 Jul 24 16:32 oldboy03.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 oldboy.txt
    -rw-rw-r-- 1 zzc01 test  3 Jul 24 16:42 zzc01
    -rw-rw-r-- 1 zzc02 test  5 Jul 24 16:43 zzc02
    -rw-r--r-- 1 root test  6 Jul 24 16:40 zzc.log
    [zzc02@CentOS7 ~]$ vi /data/zzc01
    [zzc02@CentOS7 ~]$ cat /data/zzc01
    hi
    [zzc02@CentOS7 ~]$ umask
    0002


    [zzc02@CentOS7 ~]$ ll -d /data
    drwxrws--- 2 root test 54 Jul 24 16:53 /data
    [zzc02@CentOS7 ~]$ ll /data
    total 12
    -rw-rw-r-- 1 zzc02 zzc02 0 Jul 24 16:31 oldboy02.txt
    -rw-rw-r-- 1 zzc01 zzc01 0 Jul 24 16:30 oldboy.txt
    -rw-rw-r-- 1 zzc01 test  3 Jul 24 16:42 zzc01
    -rw-rw-r-- 1 zzc02 test  5 Jul 24 16:43 zzc02
    -rw-r--r-- 1 root test  6 Jul 24 16:40 zzc.log
    [zzc02@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - zzc01
    Last login: Fri Jul 24 16:41:51 CST 2020 on pts/0
    [zzc01@CentOS7 ~]$ cat /data/zzc02
    word
    [zzc01@CentOS7 ~]$ vi /data/zzc02
    [zzc01@CentOS7 ~]$ cat oldboy02.txt
    cat: oldboy02.txt: No such file or directory
    [zzc01@CentOS7 ~]$ rm -f /data/oldboy02.txt
    [zzc01@CentOS7 ~]$ ll /data
    total 8
    -rw-rw-r-- 1 zzc02 test 10 Jul 24 16:57 zzc02
    -rw-r--r-- 1 root test  6 Jul 24 16:40 zzc.log

    3. sticky 粘滞位

    sticky    #权限作用于 others 的x为    使用 t  表示    小t   大T 

    #给目录设置, 一个目录所有用户都拥有管理的权限   777   针对此目录设置一个粘滞位  

    #所有用户都可以在这个目录进行创建、删除文件的权利 但是只能管理自己的文件 或者管理员拥有管理所有文件的权限 root  

    # 数字 1xxx 表示
    [root@CentOS7 ~]# ll -d /tmp/
    drwxrwxrwt. 27 root root 4096 Jul 24 16:59 /tmp/
    [root@CentOS7 ~]# stat /tmp
    File: ‘/tmp’
    Size: 4096     Blocks: 8         IO Block: 4096   directory
    Device: 803h/2051d Inode: 16777288   Links: 27
    Access: (1777/drwxrwxrwt) Uid: (    0/   root)   Gid: (    0/   root)
    Access: 2020-07-24 15:49:59.873999740 +0800
    Modify: 2020-07-24 16:59:56.911904158 +0800
    Change: 2020-07-24 16:59:56.911904158 +0800
    Birth: -


    [root@CentOS7 ~]# mkdir /test
    [root@CentOS7 ~]# chmod 777 /test
    [root@CentOS7 ~]# ll -d /test
    drwxrwxrwx 2 root root 18 Jul 24 17:24 /test
    [root@CentOS7 ~]# echo "root" > /test/root
    [root@CentOS7 ~]# su - zzc01
    Last login: Fri Jul 24 17:24:25 CST 2020 on pts/0
    [zzc01@CentOS7 ~]$ echo "hello" > /test/zzc01
    [zzc01@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - oldboy
    Last login: Fri Jul 24 17:21:37 CST 2020 on pts/0
    [oldboy@CentOS7 ~]$ echo "word" > /test/oldboy
    [oldboy@CentOS7 ~]$ ll /test
    total 12
    -rw-rw-r-- 1 oldboy oldboy 5 Jul 24 17:27 oldboy
    -rw-r--r-- 1 root   root   5 Jul 24 17:24 root
    -rw-rw-r-- 1 zzc01 zzc01  6 Jul 24 17:26 zzc01
    [oldboy@CentOS7 ~]$ rm -f /test/root
    [oldboy@CentOS7 ~]$ ll /test
    total 8
    -rw-rw-r-- 1 oldboy oldboy 5 Jul 24 17:27 oldboy
    -rw-rw-r-- 1 zzc01 zzc01  6 Jul 24 17:26 zzc01
    [oldboy@CentOS7 ~]$ cat /test/zzc01
    hello

    #给目录设置sticky权限,普通用户只能在此目录下管理自己的文件
    [root@CentOS7 ~]# chmod o+t /test
    [root@CentOS7 ~]# ll -d /test
    drwxrwxrwt 2 root root 33 Jul 24 17:28 /test
    [root@CentOS7 ~]# su - zzc02
    Last login: Fri Jul 24 17:17:01 CST 2020 on pts/0
    [zzc02@CentOS7 ~]$ echo "hello" > /test/zzc02
    [zzc02@CentOS7 ~]$ ll /test
    total 12
    -rw-rw-r-- 1 oldboy oldboy 5 Jul 24 17:27 oldboy
    -rw-rw-r-- 1 zzc01 zzc01  6 Jul 24 17:26 zzc01
    -rw-rw-r-- 1 zzc02 zzc02  6 Jul 24 17:30 zzc02
    [zzc02@CentOS7 ~]$ logout
    [root@CentOS7 ~]# su - oldboy
    Last login: Fri Jul 24 17:26:47 CST 2020 on pts/0
    [oldboy@CentOS7 ~]$ rm -f /test/zzc02
    rm: cannot remove ‘/test/zzc02’: Operation not permitted
    [oldboy@CentOS7 ~]$ cat /test/zzc02
    hello
    [oldboy@CentOS7 ~]$ vi /test/zzc02
    [oldboy@CentOS7 ~]$ cat /test/zzc02
    hello


    特殊属性



    特殊属性不受普通权限的限制  


    lsattr #显示特殊属性


    chattr #设置特殊属性


    a #这个文件只能追加内容和查看   别的什么都做不了

    i #什么都操作不了

    [root@qls ~]# touch test.txt
    [root@qls ~]# touch test.log
    [root@qls ~]# ll
    total 0
    -rw-r--r-- 1 root root 0 Jul 24 10:08 test.log
    -rw-r--r-- 1 root root 0 Jul 24 10:08 test.txt

    [root@qls ~]# lsattr test.log
    ---------------- test.log
    [root@qls ~]# lsattr test.txt
    ---------------- test.txt

    [root@qls ~]# echo "test" > test.log
    [root@qls ~]# echo "test" > test.txt
    [root@qls ~]# ll
    total 8
    -rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
    -rw-r--r-- 1 root root 5 Jul 24 10:09 test.txt


    [root@qls ~]# chattr   +a test.log
    [root@qls ~]# ll test.log
    -rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
    [root@qls ~]# lsattr test.log
    -----a---------- test.log
    [root@qls ~]# cat test.log
    test
    [root@qls ~]# vim test.log
    [root@qls ~]# vim test.log
    [root@qls ~]# echo "hello" > test.log
    -bash: test.log: Operation not permitted
    [root@qls ~]# echo "hello" >> test.log
    [root@qls ~]# cat test.log
    test
    hello
    [root@qls ~]# rm -f test.log
    rm: cannot remove ‘test.log’: Operation not permitted
    [root@qls ~]# mv test.log /tmp/
    mv: cannot move ‘test.log’ to ‘/tmp/test.log’: Operation not permitted
    [root@qls ~]# cp test.log /tmp/



    [root@qls ~]# chattr +i test.txt
    [root@qls ~]# lsattr test.txt
    ----i----------- test.txt
    [root@qls ~]# cat test.txt
    test
    [root@qls ~]# rm -f test.txt
    rm: cannot remove ‘test.txt’: Operation not permitted
    [root@qls ~]# mv test.txt /tmp/
    mv: cannot move ‘test.txt’ to ‘/tmp/test.txt’: Operation not permitted
    [root@qls ~]# cp test.txt /tmp/
    [root@qls ~]# echo "hello" > test.txt
    -bash: test.txt: Permission denied
    [root@qls ~]# echo "hello" >> test.txt
    -bash: test.txt: Permission denied

    重定向的概述


    将原本要输出到屏幕上面的内容,重定向到一个指定的文件中

    将原本从键盘上面输入的内容,改为从命令或者文件当中读取


    为什么要用重定向

    1. 数据非常重要,需要保存  

    2. 后台程序的输出重定向到一个文件中

    3. 定时任务的执行结果

    4. 把一些错误的输出定向到空  

    5. 把正确和错误的信息都需要保存



    stdin #标准输入 0 #从键盘上面读取输入的内容,或者从命令及文件中读取输入的内容

    stdout #标准输出 1 #默认将正确的信息标准输出到屏幕上方  

    stderr #错误输出 2 #默认将错误的信息标准输出到屏幕上方


    [root@qls ~]# ll /dev/std*
    lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stderr -> /proc/self/fd/2
    lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stdin -> /proc/self/fd/0
    lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stdout -> /proc/self/fd/1



    [root@qls ~]# cat
    hello #标准输入
    hello #标准输出



    [root@qls ~]# tail -f passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    ^Z
    [1]+ Stopped                 tail -f passwd
    [root@qls ~]# ps
      PID TTY         TIME CMD
    10861 pts/0    00:00:00 bash
    10879 pts/0    00:00:00 bash
    10958 pts/0    00:00:00 su
    10980 pts/0    00:00:00 su
    10981 pts/0    00:00:00 bash
    10998 pts/0    00:00:00 su
    11020 pts/0    00:00:00 su
    11021 pts/0    00:00:00 bash
    11039 pts/0    00:00:00 su
    11040 pts/0    00:00:00 bash
    14928 pts/0    00:00:00 tail
    14930 pts/0    00:00:00 ps
    [root@qls ~]# ll /proc/14928/fd
    total 0
    lrwx------ 1 root root 64 Jul 24 10:51 0 -> /dev/pts/0
    lrwx------ 1 root root 64 Jul 24 10:51 1 -> /dev/pts/0
    lrwx------ 1 root root 64 Jul 24 10:51 2 -> /dev/pts/0
    lr-x------ 1 root root 64 Jul 24 10:51 3 -> /root/passwd
    lr-x------ 1 root root 64 Jul 24 10:51 4 -> anon_inode:inotify


    [root@qls ~]# jobs
    [1]+ Stopped                 tail -f passwd
    [root@qls ~]# fg %1
    tail -f passwd
    ^C
    [root@qls ~]# jobs
    [root@qls ~]# ll /proc/14928/fd
    ls: cannot access /proc/14928/fd: No such file or directory
    [root@qls ~]# ps
      PID TTY         TIME CMD
    10861 pts/0    00:00:00 bash
    10879 pts/0    00:00:00 bash
    10958 pts/0    00:00:00 su
    10980 pts/0    00:00:00 su
    10981 pts/0    00:00:00 bash
    10998 pts/0    00:00:00 su
    11020 pts/0    00:00:00 su
    11021 pts/0    00:00:00 bash
    11039 pts/0    00:00:00 su
    11040 pts/0    00:00:00 bash
    14933 pts/0    00:00:00 ps


    输出重定向


    将原本要输出到屏幕上面的内容,重定向到一个指定的文件中

    符号


    > #标准覆盖正确输出重定向 #将正确的内容覆盖源文件的   当文件不存在时,会自动创建

    >> #标准追加正确输出重定向 #将正确的内容追加到指定文件的底部 当文件不存在时,会自动创建

    2> #标准覆盖错误输出重定向 #将错误的信息覆盖到指定的文件中

    2>> #标准追加错误输出重定向 #将错误的信息追加到文件的底部  


    案例:

    [root@qls ~]# echo "hello" > 123.txt


    [root@qls ~]# ip a s eth0 > ip.txt
    [root@qls ~]# cat ip.txt
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
      link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
      inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
          valid_lft forever preferred_lft forever
      inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
          valid_lft forever preferred_lft forever

    #合并文件
    [root@qls ~]# cat /etc/hosts /etc/resolv.conf   > new.txt
    [root@qls ~]# cat new.txt
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    # Generated by NetworkManager
    nameserver 223.5.5.5

    [root@qls ~]# cat 123.txt
    hello
    [root@qls ~]# echo "test" >> 123.txt
    [root@qls ~]# cat 123.txt
    hello
    test



    [root@qls ~]# ls /roott
    ls: cannot access /roott: No such file or directory
    [root@qls ~]# ls /roott 2>err.txt
    [root@qls ~]# cat err.txt
    ls: cannot access /roott: No such file or directory



    [root@qls ~]# ls /roott 2>>err.txt
    [root@qls ~]# ls /roott 2>>err.txt
    [root@qls ~]# ls /roott 2>>err.txt
    [root@qls ~]# cat err.txt
    ls: cannot access /roott: No such file or directory
    ls: cannot access /roott: No such file or directory
    ls: cannot access /roott: No such file or directory
    ls: cannot access /roott: No such file or directory



    #把正确的和错误的信息都保存到一个文件中


    [root@qls ~]# ls /roott   > file.txt 2>&1 #不推荐
    [root@qls ~]# cat file.txt
    ls: cannot access /roott: No such file or directory
    [root@qls ~]# mkdir /roott
    [root@qls ~]# ls /roott   > file.txt 2>&1
    [root@qls ~]# cat file.txt


    [root@qls ~]# ls /roott   &>file.txt
    [root@qls ~]# ls /roottt   &>file.txt
    [root@qls ~]# cat file.txt
    ls: cannot access /roottt: No such file or directory

    #将正确的信息和错误的信息重定向到空

    [root@qls ~]# ls /roottt   &> /dev/null


    #把正确的和错误的放在不同的文件中

    [root@qls ~]# ls /rooot >> file1.txt 2>> file2.txt
    [root@qls ~]# ll
    total 4
    -rw-r--r-- 1 root root  0 Jul 24 11:14 file1.txt
    -rw-r--r-- 1 root root 52 Jul 24 11:14 file2.txt
    [root@qls ~]# cat file1.txt
    [root@qls ~]# cat file2.txt
    ls: cannot access /rooot: No such file or directory
    [root@qls ~]# ls /root >> file1.txt 2>> file2.txt
    [root@qls ~]# ll
    total 8
    -rw-r--r-- 1 root root 20 Jul 24 11:15 file1.txt
    -rw-r--r-- 1 root root 52 Jul 24 11:14 file2.txt
    [root@qls ~]# cat file1.txt
    file1.txt
    file2.txt
    [root@qls ~]# cat file2.txt
    ls: cannot access /rooot: No such file or directory

    输入重定向


    将原本从键盘上面输入的内容,改为从命令或者文件当中读取

    符号

    < #标准输入重定向 #将原本从默认的键盘中读取数据改为由命令或者文件中读取


    << #标识符限定输入重定向 #从键盘中读取内容,直到遇到标识符的分解符为止



    案例:

    [root@qls ~]# grep 'root'   /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@qls ~]# grep 'root' < /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@qls ~]# grep root
    oldboy
    root
    root
    rottttroot
    rottttroot



    [root@qls ~]# dd if=/dev/zero of=/root/test.log bs=1M count=50
    50+0 records in
    50+0 records out
    52428800 bytes (52 MB) copied, 0.0362247 s, 1.4 GB/s
    [root@qls ~]# ll
    total 51208
    -rw-r--r-- 1 root root       20 Jul 24 11:15 file1.txt
    -rw-r--r-- 1 root root       52 Jul 24 11:14 file2.txt
    -rw-r--r-- 1 root root 52428800 Jul 24 11:45 test.log
    [root@qls ~]# ll -h
    total 51M
    -rw-r--r-- 1 root root  20 Jul 24 11:15 file1.txt
    -rw-r--r-- 1 root root  52 Jul 24 11:14 file2.txt
    -rw-r--r-- 1 root root 50M Jul 24 11:45 test.log


    [root@qls ~]# dd </dev/zero   >/root/oldboy.log bs=10M count=100
    100+0 records in
    100+0 records out
    1048576000 bytes (1.0 GB) copied, 21.3836 s, 49.0 MB/s
    [root@qls ~]# ll -h
    total 1.1G
    -rw-r--r-- 1 root root    20 Jul 24 11:15 file1.txt
    -rw-r--r-- 1 root root    52 Jul 24 11:14 file2.txt
    -rw-r--r-- 1 root root 1000M Jul 24 11:48 oldboy.log
    -rw-r--r-- 1 root root   50M Jul 24 11:45 test.log

    [root@qls ~]# cat file1.txt
    file1.txt
    file2.txt
    [root@qls ~]# tr 't' 'T' < file1.txt
    file1.TxT
    file2.TxT




    数据库导入表  

    [root@qls ~]# mysql -uroot -p123 < all.sql


    [root@qls ~]# cat >>file3.txt
    123
    345
    678
    456
    EOF
    123
    ^C
    [root@qls ~]# cat file3.txt
    123
    345
    678
    456
    EOF
    123
    [root@qls ~]# cat >>file4.txt<<EOF
    > 123
    > dfer
    > rghrt
    > gergrtg
    > EOF
    [root@qls ~]# cat file4.txt
    123
    dfer
    rghrt
    gergrtg



    [root@qls ~]# cat 123.sh
    cat<<EOF
    1. rge
    2. fgo
    3. jfrio
    4. hfoih
    EOF
    [root@qls ~]# sh 123.sh
    1. rge
    2. fgo
    3. jfrio
    4. hfoih

    管道技术


    | 管道

    连接左右两个命令的使用     把前面的命令作为标准输出通过管道交给后面的命令 作为标准输入


    只能把正确的信息交给后面的命令,错误的信息的不会传递


    [root@qls ~]# head passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@qls ~]# head passwd | cat -n
        1 root:x:0:0:root:/root:/bin/bash
        2 bin:x:1:1:bin:/bin:/sbin/nologin
        3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
        4 adm:x:3:4:adm:/var/adm:/sbin/nologin
        5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
        6 sync:x:5:0:sync:/sbin:/bin/sync
        7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
        8 halt:x:7:0:halt:/sbin:/sbin/halt
        9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
       10 operator:x:11:0:operator:/root:/sbin/nologin


    [root@qls ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
          inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
          inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
          ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
          RX packets 99054 bytes 61039138 (58.2 MiB)
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 55989 bytes 5452694 (5.2 MiB)
          TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@qls ~]# ifconfig eth0 | awk 'NR==2'
          inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
    [root@qls ~]# ifconfig eth0 | awk 'NR==2' | awk '{print $2}'
    10.0.0.100


    [root@qls ~]# awk -F: '{print $3}' passwd | sort -rn | head
    1046
    1045
    1044
    1043
    1042
    1041
    1040
    1039
    1038
    1037


    #管道技术中的tee技术

    需要保存一些标准输出的内容

    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-8 | tee pass.txt   |passwd --stdin qls01
    Changing password for user qls01.
    passwd: all authentication tokens updated successfully.
    [root@qls ~]# cat pass.txt
    100ada15


    -a #追加


    tee 和 重定向的区别  



    重定向 #把要输出到屏幕上面的内容重定向到指定的文件中


    tee #把要输出到屏幕上面的内容重定向到指定的文件中 ,并且可以继续输出一份到屏幕上面  



    #管道中xargs技术

    让一些不支持管道的命令支持管道   把前面命令的执行结果以文件的参数传递方式传递给后面的命令作为参数


    [root@qls ~]# ls | xargs sed -i 's#root#oldboy#g'


    [root@qls ~]# find /var/log/ -type f -name "*.log" |xargs cp -t /opt


    [root@qls ~]# find /var/log/ -type f -name "*.log" |xargs -I {}   cp {} /mnt/

     

  • 相关阅读:
    非洲出现新蓝海,他们抓住机遇将产品加工反向送入国内市场
    npm ERR! code ERR_STREAM_WRITE_AFTER_END
    程序默认不自动重连oracle
    一份超详细的MySQL高性能优化实战总结
    佩奇送福利:Eygle系列书籍免费下载
    解决waiting for target deviceto come online的做法
    Android真机运行闪退问题
    他是如何将小店铺打造成餐饮品牌的?
    用两张图告诉你,为什么你的App会卡顿?
    用两张图告诉你,为什么你的App会卡顿?
  • 原文地址:https://www.cnblogs.com/backz/p/13393392.html
Copyright © 2011-2022 走看看