系统的输入与输出

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值