1.系统的输入输出
[root@localhost ~]# dd if=/dev/zero of=/mnt/file bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 16.6429 s, 63.0 MB/s
拓展:
1.if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4.count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
[root@localhost ~]# rm -fr file
[root@localhost ~]# dd if=/dev/zero of=/dev/shm/file bs=1M count=1000
dd: error writing ‘/dev/shm/file’: No space left on device
983+0 records in
982+0 records out
1030627328 bytes (1.0 GB) copied, 1.77531 s, 581 MB/s
##这个命令是将硬盘和内存(dev/shm)内分别写入1G的内容,查看他们的输入速度
**##我们linux的输入与输出原理是:[root@localhost ~]# date
##date是输入,date其实是属于内存的,date命令通过内存输出到cpu,cpu进行运算后,最后输出到/dev/pts里面
Sat May 23 03:24:34 CST 2020
##这个就是dev/pts/0的输出内容(默认是0,新建bash的话进行排序1,2,3)
**
##这个0文件就是我们的的bash,如果我们新建一个bash就再出现一个1文件,这个代表的是新建的bash的输出数据
##关掉bash后他们自然也会隐藏起来,我们现在就来自主控制输出,让旧的bash输出到新的1文件内
##可以看到我们的date本来默认输出为0,但是我们将他的输入修改到1就可以看到他不在0输出了,只在1输出
2.重定向
##重定向里面1为正确,2为错误的意思
[cxg@localhost ~]$ find /etc/ -name passwd
##查找根下的etc下的名字为passwd的文件信息
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/grub.d’: Permission denied
/etc/passwd
find: ‘/etc/yum.repos.d/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/ipsec.d’: Permission denied
/etc/yum.repos.d/pam.d/passwd
find: ‘/etc/yum.repos.d/sudoers.d’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/firewalld’: Permission denied
##可以看到由于我们使用的是普通用户cxg,所以我们使用find命令查找的时候只有三个是有权限相当于正确的输出,而其他的没有权限,相当于错误的输出
[cxg@localhost ~]$ find /etc/ -name passwd > /home/cxg/Desktop/file.out
##将passwd里面正确的输出到桌面的file.out文件(这里面>前面没有1默认是1)
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/ipsec.d’: Permission denied
find: ‘/etc/yum.repos.d/sudoers.d’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/firewalld’: Permission denied
##因为正确的输出已经被保存到file.out文件了,所以这里面的输出只有错误的输出了
[cxg@localhost ~]$ find /etc/ -name passwd 2> /home/cxg/Desktop/file.err
/etc/pam.d/passwd
/etc/passwd
/etc/yum.repos.d/pam.d/passwd
##相应的这个输出只有正确的输出了,错误的被保存到file.err里面了
[cxg@localhost ~]$ find /etc/ -name passwd &> /home/cxg/Desktop/file.all
##所有的都被保存到file.all里面了,所以没有输出了
##重定向文件重定向后覆盖原文件
[cxg@localhost Desktop]$ vim westos
[cxg@localhost Desktop]$ cat westos
hello
##我们新建一个westos文件,里面的内容为hello
[cxg@localhost Desktop]$ find /etc/ -name passwd > /home/cxg/Desktop/westos
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/ipsec.d’: Permission denied
find: ‘/etc/yum.repos.d/sudoers.d’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/firewalld’: Permission denied
##我们将passwd的正确信息输出到
[cxg@localhost Desktop]$ cat westos
/etc/pam.d/passwd
/etc/passwd
/etc/yum.repos.d/pam.d/passwd
[cxg@localhost Desktop]$ > westos
##当我们清空一个文件的时候就可以采用这种方式,就是将空白输出到westos相当于清空文件
[cxg@localhost Desktop]$ wc westos
0 0 0 westos
**##拓展:我们常见的创建文件的方式都有哪些:
**
这几种都可以
##有时候我们在进行重定向的时候,又想保留原文件的内容怎么办
[cxg@localhost Desktop]$ find /etc/ -name passwd >> /home/cxg/Desktop/westos
##将一个>改为两个>>(这个叫追加)
[cxg@localhost Desktop]$ cat westos1 >> westos
##将westos的内容追加到westos1里面1>> 2>> &>>同样适用
3.管道的应用
[cxg@localhost Desktop]$ vim file
[cxg@localhost Desktop]$ wc file
##wc命令查看file文件的行数,字节,单词数目
1 1 7 file
##可以看到file文件内有1行,1个单词,7个字符(七个字节是6个字母加上一个空格(换行符)总共7个)
[cxg@localhost Desktop]$ cat file
westos
[cxg@localhost Desktop]$ vim file
[cxg@localhost Desktop]$ cat file
##给file文件增加两行
westos
[cxg@localhost Desktop]$ wc file
##增加两行相当于增加了两个换行符,字符由7变成9,行数变成3行
3 1 9 file
[cxg@localhost Desktop]$ wc file
3 1 9 file
[cxg@localhost Desktop]$ wc -l file
##查看行数
3 file
[cxg@localhost Desktop]$ wc -w file
查看单词数
1 file
[cxg@localhost Desktop]$ wc -m file
##查看字符数目
9 file
[cxg@localhost Desktop]$ wc -c file
##查看文件文件的字节数
9 file
##中文里面一个字是2个字节,4个字符
[cxg@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[cxg@localhost ~]$ ls |wc -w
##可以看到ls里面有8个字母
8
[cxg@localhost ~]$ ls |wc -l
##因为这个是竖向排列的,所以他们的行数就相当于文件个数
8
[cxg@localhost ~]$ ls /bin |wc -l
##可以看到bin下面有1681个文件
1681
##所以管道就是把前一条命令的输出(ls /bin)当作输入,让后面的(wc -l)直接作用就行了
[cxg@localhost ~]$ ls /bin |wc -l |wc -l
##这个是将上面1681的输出当作输入,再进行一次wc -l ,因为输出只有1681,所以他的个数为1,输入发生改变
1
[cxg@localhost ~]$ find /etc/ -name passwd |wc -l
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/ipsec.d’: Permission denied
find: ‘/etc/yum.repos.d/sudoers.d’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/firewalld’: Permission denied
3
##管道符,不作用错误输出,输出的错误的还是会像原来一样输出
##默认情况下,系统的管道符号只允许正确的通过
假设我们想让错误的和正确的通过管道过去就可以这样
[cxg@localhost ~]$ find /etc/ -name passwd 2>&1 |wc -l
##这个2>&1就是把错误输出的改为正确输出
25
[cxg@localhost ~]$ find /etc/ -name passwd 2>&1 | tee /home/cxg/Desktop/file1| wc -l
##这个命令是保存一份输出到file1文件,然后同时统计通过管道的个数
25
[cxg@localhost Desktop]$ cat file1
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/grub.d’: Permission denied
/etc/passwd
find: ‘/etc/yum.repos.d/grub.d’: Permission denied
find: ‘/etc/yum.repos.d/ipsec.d’: Permission denied
/etc/yum.repos.d/pam.d/passwd
find: ‘/etc/yum.repos.d/sudoers.d’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/firewalld’: Permission denied
4.输入重定向
[cxg@localhost Desktop]$ vim file
[cxg@localhost Desktop]$ tr 'a-z' 'A-Z' <file
##这个命令就是把file文件定向输入到tr命令让其作用,让小写的字母都改为大写字母
DADASDASDSXCXCXDS212123212123212123212123212123212123212123212123212123212123212123212123A
##这是属于单行录入,如何进行多行录入
[cxg@localhost Desktop]$ date
Sat May 23 18:29:59 CST 2020
[cxg@localhost Desktop]$ cal
May 2020
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
[cxg@localhost Desktop]$ vim westos.sh
##我们想让date命令和cal合并,一起输出,就用这个westos.sh(这个sh是shell),这个wetos.sh是脚本,我们在将date和cal竖向写进这个脚本里面
[cxg@localhost Desktop]$ sh westos.sh
##我们运行这个脚本
Sat May 23 18:30:26 CST 2020
May 2020
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
##可以看到date和cal合并输出了,这些都是自动的,有时候我们想批量输入一些命令,但是有些比如手动输入比如passwd命令,需要手动输入新密码,因此我们就这样:
[cxg@localhost Desktop]$ vim westos.sh
date
cal
passwd <<EOF
haha
haha
EOF
##我们输入密码的时候需要输入两次,然后这个(<<EOF里面的内容EOF)这个就代表我们需要在passwd里面输入的内容,其中这个EOF相当于业界规定的一样可以用任何(<<HEHE里面的内容HEHE)这种都可以
[cxg@localhost Desktop]$sh westos.sh
##运行后可以看到我们的密码已经被修改为haha