特殊权限及重定向相关

特殊权限

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/

 

原文地址:https://www.cnblogs.com/backz/p/13393392.html