class-5   IO重定向(二)及用户组(一)

一、IO重定向(二)

1、tr 命令

tr –  转换和删除字符

tr [OPTION]... SET1 [SET2]

选项:

-c 或——complerment :取字符集的补集

[[email protected] ~]#  tr -c ‘abc‘ ‘1‘ << end
> abcdefghijklmn
> end
abc111111111111[[email protected] ~]#

-d 或——delete :删除所有属于第一字符集的字符(可以用八进位制数代替);

[[email protected] ~]# tr -cd ‘[1-9]‘ < a1
1234565678[[email protected] ~]#
[[email protected] ~]# tr -d ‘\141‘ << end ##a的八进位制为141
> abcdr
> end
bcdr

-s 或—squeeze-repeats:把连续重复的字符以单独一个字符表示压缩

[[email protected] ~]# tr -s ‘se‘ << end
> asssssssssssdeeeeeeeeeeeeef
> end
asdef

-t 或--truncate-set1:先删除第一字符集较第二字符集多出的字符

# echo  abcde |tr -t ‘abcde‘ ‘xyz‘   ##-t,模式下,对第一字符集较第二字符集多的内容不做转换
 xyzde
# echo  abcdef |tr  ‘abcde‘ ‘xyz‘ ##一般情况下,第一字符集多的将按第二字符集最后一个字符处理
  xyzzzf
[[email protected] ~]# tr ‘abc‘ ‘xyzw‘ << end    ##当第二字符集比第一字符集多时,去掉第二字符集多的内容
> abcqsdfg123
> end
xyzqsdfg123

特殊字符:

\r  :^M

\n :$

# cat a.txt |tr -d ‘\r‘   ###将win中的文本转换为linux中的文本文件

2、从文件中导入STDIN

使用< 来重定向标准输入

某些命令能够接受从文件中导入的STDIN:

$ tr ‘a-z’ ‘A-Z’< /etc/issue

[[email protected] ~]# tr ‘[:lower:]‘ ‘[:upper:]‘< /etc/issue
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
cat  >

该命令会把/etc/issue 中的小写字符都转换成写写字符

tr –d abc < /etc/fstab  删除fstab 文件中的所有abc 中任意字符

按ctrl+d 离开,可以使用文件来代替键盘的输入

[[email protected] ~]# cat  > d
abc
def
dhff        ###ctrl+d退出,回到命令提示符
[[email protected] ~]# cat d
abc
def
dhff

#Cat > e < d

[[email protected] ~]# cat d
abc
def
dhff
[[email protected] ~]# cat > e < d
[[email protected] ~]# cat e
abc
def
dhff

3、把多行发送给STDIN

使用“<< 终止词”命令从键盘把多行重导向给STDIN

直到 终止词 位置的所有文本都发送给STDIN

有时被称为就地文本(heretext)

# mail -s "Please Call" [email protected] <<END

> Hi Wang,

> Zhang

> END

#echo "redhat"| passwd --stdin apple

[[email protected] ~]# cat > c << end
> my
> name
> is
> lvasu.
> end
[[email protected] ~]# cat c
my
name
is
lvasu.

4、管道

管道(使用符号“| ”表示)用来连接命令

命令1 |  命令2 |  命令3 | …

将命令1 的STDOUT 发送给命令2 的STDIN ,命令2的 的

STDOUT 发送到命令3 的STDIN

STDERR 默认不能通过管道转发,可利用2>&1 或 或 |&  实现

最后一个命令会在当前shell 进程的子shell 进程中执行用来

组合多种工具的功能

ls | tr ‘a-z‘ ‘A-Z‘

less :一页一页地查看输入:

$ ls -l /etc | less

mail:通过电子邮件发送输入:

$ echo "test email" | mail \

-s "test" [email protected]

lpr :把输入发送给打印机

$ echo "test print" | lpr -P printer_name

# echo  abcdefg | tr ‘a-z‘ ‘A-Z‘

[[email protected] ~]# echo  abcdefg | tr ‘a-z‘ ‘A-Z‘
ABCDEFG

# Xecho  abcdefg 2>&1 | tr ‘a-z‘ ‘A-Z‘

[[email protected] ~]# Xecho  abcdefg 2>&1 | tr ‘a-z‘ ‘A-Z‘
-BASH: XECHO: COMMAND NOT FOUND

# Xecho  abcdefg |&  tr ‘a-z‘ ‘A-Z‘

[[email protected] ~]# Xecho  abcdefg  |&  tr ‘a-z‘ ‘A-Z‘
-BASH: XECHO: COMMAND NOT FOUND

5、重定向到多个目标(tee)

$ 命令1 | tee 名 文件名 |  命令2

把命令1 的STDOUT保存在文件名中,然后管道输入给命令2

使用:

保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

[[email protected] ~]# cat d |tee a.txt
abc
def
dhff
[[email protected] ~]# cat a.txt
abc
def
dhff

二、用户组(一)

1、基本知识

1.1介绍安全3A   资源分派:

Authentication :认证

Authorization :授权

Accouting|Audition :审计

1.2、用户user

令牌token,identity

Linux 用户:Username/UID

管理员:root, 0

普通用户:1-65535

系统用户:1-499 (CENTOS6 ), 1-999,对守护进程获取资源进行权限分配

登录用户:500 (CENTOS6 )+, 1000+交互式登录

查看用户信息命令:

#finger

[[email protected] 桌面]# finger root
Login: root           Name: root
Directory: /root                    	Shell: /bin/bash
On since 二 8月  2 08:50 (CST) on tty1 from :0
   6 hours 12 minutes idle
On since 二 8月  2 08:52 (CST) on pts/0 from :0.0
  4 hours 1 minute idle
On since 二 8月  2 08:53 (CST) on pts/1 from 10.1.250.77
On since 二 8月  2 14:43 (CST) on pts/2 from 10.1.250.77
  18 minutes 25 seconds idle
New mail received 二 8月  2 09:48 2016 (CST)
    Unread since 一 8月  1 09:49 2016 (CST)
No Plan.

1.3组group

Linux 组:Groupname/GID

管理员组:root, 0

普通组:

系统组:1-499, 1-999

普通组:500+, 1000+

###用户和组的ID和名字可以相同的

1.4、安全上下文  Linux 安全上下文   security context

运行中的程序:进程 (process)

以进程发起者的身份运行:

root: /bin/cat

mage: /bin/cat

进程所能够访问资源的权限取决于进程的运行者的身份

1.5、组的类别

Linux 组的类别:

用户的主要组( 主组):

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户:私有组

用户的附加组( 辅助组):

一个用户可以属于零个或多个辅助组

2、用户和组的配置文件及其格式

2.1、用户和组的配置文件及文件格式

Linux 用户和组的主要配置文件:

/etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)

login name :登录用名(wang)

passwd :密码 (x)

UID号 :用户身份编号 (1000)

GID :登录默认所在组编号 (1000)

GECOS :用户全名或注释

home directory录 :用户主目录 (/home/wang)

shell :用户默认使用shell (/bin/bash)

/etc/group :组及其属性信息

[[email protected] ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash

/etc/shadow :用户密码及其相关属性

用户名:登录用名

加密密码:一般用sha512 加密

密码最近一次修改时间:1970 年1 月1日起到密码最近一次被更改的时间

=0 用户下次登陆后必须修改时间

密码最短修改时间:密码再过几天可以被变更

=0 没有密码最短使用时间,(0 表示随时  可被变更)

密码最长修改时间:密码再过几天必须被变更

<最短修改时间时,则被禁止修改密码  (99999 表示永不过期)

密码警告时间:密码过期前几天系统提醒用户

(默认为一周)

账号非活动时间:密码过期几天后帐号会被锁定

账户过期时间:从1970 年1 月1 日算起,多少天后帐号失效。

[[email protected] ~]# getent shadow root
root:$6$yE.b6vYZm3r2giVr$U9M5ROSqW0GgKYw/Q4wQF3AqasBPX1dtQZah9PdcznYv4od3eYNFRJ7r06teBsJPxD50NRRlvFsSrD72.JvuE.::0:99999:7:::

/etc/group;组及其用户属性、

群组名称:就是群组名称

群组密码:通常不需要设定,密码是被记录在

GID的 :就是群组的 ID

以当前组为附加组的用户列表( 分隔符为逗号)

[[email protected] ~]# getent group root
root:x:0:

/etc/gshadow:组密码及其相关属性

群组名称:就是群组名称

群组密码:

组管理员列表:组管理员的列表,更改组密码和成员

以当前组为附加组的用户列表:( 分隔符为逗号)

[[email protected] ~]# getent gshadow root
root:::

2.2密码加密及复杂性策略

加密机制:

加密:明文-->  密文

解密:密文-->  明文

对称加密:加密和解密使用同一个密码

公钥加密:每个密码成对出现,一个为私钥(secret key),一个为公钥(public key)

单向加密(指纹加密):散列加密,提取数据特征码 ,常用于数据完  整性校验

单向加密:哈希算法,原文不同,密文必不同

相同算法定长输出,获得密文不可逆推出原始数据

雪崩效应:初始条件的微小改变,引起结果的巨大改变

加密算法:

md5: message digest, 128bits              ###    $1

sha1: secure hash algorithm, 160bits

sha224: 224bits

sha256: 256bits                        ###   $5

sha384: 384bits

sha512: 512bits       ###目前centos6之后只用的加密算法 $6

(salt加盐):$1后两个$符之间的即为salt

  lv:$1$vBgtHhcL$S0a/60DF0dTcfbE/HpLDT1:17015:0:99999:7:::

更改加密算法 authconfig --passalgo=sha256 -- update

      [[email protected] 桌面]# authconfig --passalgo=md5 --update
[[email protected] 桌面]# useradd lv
[[email protected] 桌面]# getent shadow lv
lv:!!:17015:0:99999:7:::
[[email protected] 桌面]# passwd lv
更改用户 lv 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] 桌面]# getent shadow lv
lv:$1$vBgtHhcL$S0a/60DF0dTcfbE/HpLDT1:17015:0:99999:7:::

更改密码存放的位置:

早期密码存放在/etc/passwd中,现在一般存放在中/etc/shadow,即转换存放位置。

#pwunconv  pw passwd unconvert  不转换密码位置,存放在/etc/passwd

#pwconv                   转换密码位置,存放在中/etc/shadow

      [[email protected] 桌面]# head -1 /etc/shadow
root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:17002:0:99999:7:::
[[email protected] 桌面]# pwunconv
[[email protected] 桌面]# head -1 /etc/shadow
head: 无法打开"/etc/shadow" 读取数据: 没有那个文件或目录
[[email protected] 桌面]# head -1 /etc/passwd
root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:0:0:root:/root:/bin/bash
[[email protected] 桌面]# pwconv
[[email protected] 桌面]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

2.3文件操作

vipw :编辑/etc/passwd  同时检查账户完整性

[[email protected] ~]# vipw root
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

vigr :编辑/etc/group       同时检查账户的完整性

[[email protected] ~]# vigr
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

pwck :检查/etc/passwd

[[email protected] ~]# pwck
用户“ftp”:目录 /var/ftp 不存在
用户“avahi-autoipd”:目录 /var/lib/avahi-autoipd 不存在
用户“saslauth”:目录 /run/saslauthd 不存在
用户“pulse”:目录 /var/run/pulse 不存在
用户“gnome-initial-setup”:目录 /run/gnome-initial-setup/ 不存在
pwck:无改变

grpck:检查/etc/group

[[email protected] ~]# grpck

3、用户和组管理命令

3.1、用户创建:useradd

useradd [options] LOGIN

-u  UID :  [UID_MIN, UID_MAX] 定义在/etc/login.defs

-o  配合-u  选项,不检查UID 的唯一性

-g  GID :指明用户所属基本组,可为组名,也可以GID

-c  "COMMENT" :用户的注释信息

-d  HOME_DIR: 以指定的路径( 不存在) 为家目录

-s  SHELL :  指明用户的默认shell 程序可用列表在/etc/shells 文件中

-G  GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存在

-N  不创建私用组做主组,使用users 组做主组 (users  UID:100)

-r:  创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000

-m (-k):强制创建家目录

(-k):创建用户默认把/skel目录下的文件复制到用户家目录下

-M: 拒绝为影虎创建家目录

      [[email protected] ~]# useradd -u 1234 -G root,ftp -s /bin/csh  -d /testdir/testuser testuser

默认值设定:/etc/default/useradd 文件中

显示或更改默认设置:

#useradd -D

useradd –D -s SHELL

[[email protected] 桌面]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

默认配置文件:

/etc/default/useradd

/etc/skel/*

/etc/login.defs

批量创建用户:

newusers passwd 格式文件 批量创建用户

user1:x:3000:::/testdir/user1:/bin/csh
user2:x:3001:::/testdir/user2:/bin/csh
user3:x:3002:::/testdir/user3:/bin/csh
user4:x:3003:::/testdir/user4:/bin/csh
newusers  a

chpasswd 批量修改用户口令

[[email protected] ~]# cat b
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
chpasswd  b

3.2用户属性修改usermod,chfn

usermod [OPTION] login

-u UID:  新UID

-g GID:  新基本组

-G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加

组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append;

-s SHELL :新的默认SHELL;

-c ‘COMMENT‘ :新的注释信息;

-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移

动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m 选项

-l login_name:  新的名字;

-L: lock 指定用户, 在/etc/shadow  密码栏的增加 !

-U: unlock 指定用户,将 /etc/shadow 的 密码栏的 !  拿掉

-e YYYY-MM-DD:  指明用户账号过期日期;

-f INACTIVE:  设定非活动期限;

-o:忽略检查,而直接修改用户UID   -u -o

chfn:修改、添加附加信息

[email protected] 桌面]# chfn lvasu
Changing finger information for lvasu.
Name []: lvasu
Office []: class1
Office Phone []: 911
Home Phone []: ****
Finger information changed.
[[email protected] 桌面]# finger lvasu
Login: lvasu          	Name: lvasu
Directory: /home/lvasu              	Shell: /bin/bash
Office: class1, 911	Home Phone: ****
Last login 一 8月  1 18:09 (CST) on pts/2 from 10.1.250.77
Mail last read 日 7月 31 22:21 2016 (CST)
No Plan.

chsh:修改用户shell类型

[[email protected] 桌面]# chsh -s /bin/csh  lvasu
Changing shell for lvasu.
Shell changed.
[[email protected] 桌面]# getent passwd lvasu
lvasu:x:1001:500:lvasu,class1,911,****:/home/lvasu:/bin/csh

3.3、删除用户userdel

userdel [OPTION]... login

-r:  删除用户家目录;

[[email protected] 桌面]# userdel -r lv
[[email protected] 桌面]# ls /home
ha1  ha2  ha3  lvasu  test
[[email protected] 桌面]# useradd app
[[email protected] 桌面]# userdel app
[[email protected] 桌面]# ls /home
app  ha1  ha2  ha3  lvasu  test

3.4查看用户相关的ID 信息

id [OPTION]... [USER]

-u: UID

-g: GID

-G: Groups

-n: Name

[[email protected] 桌面]# id -u lvasu
1001
[[email protected] 桌面]# id -g lvasu
500
[[email protected] 桌面]# id -G lvasu
500
[[email protected] 桌面]# id -un lvasu
lvasu
[[email protected] 桌面]# id -gn lvasu
lvasu
[[email protected] 桌面]# id -Gn lvasu
lvasu

3.5  组修改

groupmems   用户组管理

groupmems -a user_name | -d user_name | [-g group_name] | -l | -p

-a :添加组用户

-d:删除组用户

-p:删除组内的所有用户(当组内没有其他用户的时候)

[[email protected] 桌面]# groupmems -a lvasu
[[email protected] 桌面]# id lvasu
uid=1001(lvasu) gid=500(lvasu) 组=500(lvasu),0(root)
[[email protected] 桌面]# groupmems -d lvasu
[[email protected] 桌面]# id lvasu
uid=1001(lvasu) gid=500(lvasu) 组=500(lvasu)

#newgrp    临时切换主组     exit退出

[[email protected] 桌面]# newgrp lvasu
[[email protected] 桌面]# id
uid=0(root) gid=500(lvasu) 组=500(lvasu),0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[[email protected] 桌面]# exit
exit
[[email protected] 桌面]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

#groups         显示组中的用户

groups [OPTION]... [USERNAME]...

[[email protected] 桌面]# groups root
root : root
[[email protected] 桌面]# groups lvasu
lvasu : lvasu

3.6切换用户或以其他用户身份执行命令

su [options...] [-] [user [args...]]

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的

配置文件,不改变当前工作目录

su - UserName:登录式切换,会读取目标用户的配置

文件,切换至家目录,完全切换

###读取的配置文件不同

root su 至其他用户无须密码;非root 用户切换时需要密码

换个身份执行命令:

su [-] UserName -c ‘COMMAND‘

选项:-l --login: :

su -l UserName 于 相当于 su - UserName

su -c 退出切换用户模式

          # su - root -c `cat /etc/shadow`

如何给用户提权

1、通过SU 、SU -  切换到管理员账户

2、通过把用户加入到管理员组

3、通过useradd -u  -o  0  user  将用户设置为管理员

取消管理员设置,修改/etc/passwd 文件  的UID 为原UID

# chown -R  lvasu /home/lvasu    修改属主  重启登陆成功

时间: 2024-10-14 00:03:06

class-5   IO重定向(二)及用户组(一)的相关文章

SHELL——通配符,IO重定向,正则表达式

一.正则表达式: 元字符是用来阐释字符表达式意义的字符,简言之,就是用来描述字符的字符. 正则表达式RE(Regular Expression)是由一串字符和元字符构成的字符串. 正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合.实际上正则表达式完成了数据的过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据. 1.正则表达式的组成 (1).一般字符:没有特殊意义的字符 (2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义 2.如下讲

linux下的IO重定向与管道相关的知识简析

一.bash重定向部分简单翻译 1.1.bash手册关于重定向短短的注解(因为过于经典,所以摘录出来) 我的翻译要开始毁经典啦... 参考:https://blog.csdn.net/spch2008/article/details/51433353/ https://www.cnblogs.com/lqminn/archive/2013/05/30/3108283.htmlhttps://bash.cyberciti.biz/guide/Here_stringshttps://bbs.csdn

Linux基础入门--IO重定向及管道

IO重定向及管道 一直都提到,程序:指令+数据 其实程序也有IO,数据的来源有多个地方:文件.外部 可用于输入的设备:文件(linux一切皆文件) 键盘设备.文件系统上的常规文件加载内容.网卡等: 可用于输出的设备:文件(linux一切皆文件) 显示器.文件系统上的常规文件输出保存.网卡等: 程序的数据流有三种: 输入的数据流:<-- 标准输入(stdin),是键盘: 输出的数据流:--> 标准输出(stdout),显示器: 错误输出流:  --> 错误输出(stderr),显示器: f

探秘linux-文件管理(inode理解)及管道和IO重定向

一.文件管理 1.Linux系统上各主要目录的简介 / 根,所有文件的起点 bin 存放操作系统启动时的引导程序,以及操作系统内核文件 boot 存放操作系统启动时的引导程序,以及操作系统内核文件 dev 存放设备文件和特殊文件(如字符设备) etc 存放配置文件的目录 home 普通用户的家目录默认都在此目录下 lib 存放系统库和内核模块文件 (/lib/modules) lib64 存放x86_64位系统上共享库文件 media 系统上提供的设备挂载点 misc 系统上提供的设备挂载点 m

Linux学习笔记——管道及IO重定向

管道及IO重定向 运算器.控制器:CPU 存储器:RAM 输入/输出设备   I/O 程序:指令和数据 控制器:指令 运算器: 存储器: 地址总线:内存寻址 数据总线:传输数据 控制总线:控制指令 I/O: 程序:指令和数据 INPUT设备: OUTPUT设备: 系统设定:  默认输出设备:标准输出,STDOUT,1   默认输入设备:标准输入,STDIN,0 标准错误输出:STDERR,2 标准输入:键盘 标准错误输出:显示器 I/O重定向: linux:  >:覆盖输出 >>:追加输

Linux基础之IO重定向及管道详解(涉及tr、tee命令)

我在刚开始接触IO重定向时,经历了由懂到不懂然后了然的过程,当然现在的我也不可能说对于IO重定向就彻底懂了,只是在解决一些问题或实现某些结果时不会因为IO重定向的问题而迷惑了.     什么叫IO重定向? 为了解释这个问题,我们要先明白什么叫IO,什么叫做程序的数据流. 什么叫IO? 在Linux或计算机领域IO指的是信息的输入和输出. 在Linux中可用于输入的设备:文件(Linux中一切皆文件) 具体包括:键盘设备.文件系统上的常规文件.网卡等. 在Linux中用于输出的设备:文件 具体包括

管道及IO重定向

管道和IO重定向: > <  >>  << 运算器.控制器:CPU 存储器:RAM 输入设备/输出设备 程序:指令和数据 控制器:指令 运算器: 存储器 地址总线:内存寻址 数据总线:传输数据 控制总线:控制指令 寄存器:CPU暂时存储器 I/O:输入输出设备,硬盘,键盘鼠标 程序需要载入数据或者等待数据,数据来自哪个设备. INPUT设备: OUTPUT设备: 系统设定: 默认输出设备:标准输出,STDOUT 用1表示 默认输入设备:标准输入,STDIN 用0表示 标

[Linux 005]——IO重定向

通常在 Shell 中执行命令的时候,我们会在输入命令的下方看到执行结果,操作系统默认将命令的执行结果输出到显示器上.当然,我们也可以手动的指定输出路径,或者输入路径,这就是 I/O 重定向. 1.标准输出重定向 使用 cat 命令,命令的执行结果将会打印在屏幕中. 我们使用 > 来进行输出重定向,此时屏幕上不再打印命令执行结果了,而是将执行结果保存到了 ./target.xxx 文件中. 来看一下 ./target.xxx 文件中的内容: 2.标准输入重定向 tr 命令可以从键盘上读取标准输入

IO重定向与文件描述符

1.介绍 IO重定向用于捕捉一个文件,命令,程序,脚本或者代码块的输出,然后把捕捉到的输出作为输入发送给另外一个文件,命令,程序或脚本. 终端程序一般从单一源以流的形式聚集输入和显示输出,script执行时(进程), 系统会默认开启3个标准文件,stdin, stdout,stderr . script默认会由stdin读取数据,默认指键盘,由stdout输出执行结果,默认指屏幕; 若有错误发生,则由stderr显示信息,默认也指向屏幕.系统开启这3个文件时,以文件代码(分别为0,1,2)作为连