当前位置: 首页 > Linux

配置永久生效(登录shell和非登录shell)、I-O重定向、HereDocunmetHeredocuments、pipes、tee

时间:2023-04-06 03:10:15 Linux

配置永久生效(登录shell和非登录shell)登录shell:正常登录su通过终端-USERNAMEsu-lUSERNAME非登录shell:由USERNAME图形终端打开的命令窗口自动执行的sushell脚本。bash的配置文件:全局配置/etc/profile、/etc/profile.d/*.sh、/etc/bashrc【根目录下的这几个文件,注意*,这不是3个文件】个人配置~/.bash_profile,~/.bashrcprofile类文件:设置环境变量,运行命令或脚本bashrc类文件:设置局部变量,定义变量别名这两种登录的区别【读取配置文件不同】:登录读取顺序:/etc/配置文件-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc非登录读取顺序:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh所以如果你想让一个修改全局生效要修改以上几个文件;注意:我们必须注销然后重新登录才能重新加载配置文件。如果我想让登录用户提示他“youarewelcome”,应该修改哪个配置文件??答:在配置文件中回显即可。为什么我们的umask是002,它是在哪里定义的?答:/etc/bashrcI/Oredirectionoutputredirection>:Overwriteoutput>>:Appendoutputset-C:禁止对已有文件使用覆盖重定向;用set>|;set+C强制覆盖:禁止以上功能2>:重定向错误输出2>>:重定向错误输出附加ls/varr>/tmp/out.txt2>/tmp/error.txt[If正确则输出到out.txt,否则输出到error.txt]&>:是否将正确的标准输出或错误的错误输出重定向到一个文件中[用得很多]&>>:添加方法[root@jiakang~]#ls/varr&>>/tmp/out.txt[root@jiakang~]#cat/tmp/out.txtls:cannotaccess/varr:Nosuchfileordirectory[root@jiakang~]#ls/varr&>>/tmp/out.txt[root@jiakang~]#cat/tmp/out.txtls:无法访问/varr:没有那个文件或目录ls:无法访问/varr:没有那个文件或目录/dec/null:软件设备,数据黑洞[所有不必要的信息都重定向到这里]输入重定向<:输入重定向<<:HereDocumentHereDocumentHereDocumentHere)HereDocument是什么HereDocument是LinuxShell中的一种特殊的重定向方式,其基本形式如下cmd<FirstLine>SecondLine>ThirdLineEOF>EOFFirstLineSecondLineThirdLineEOF注意:>这个符号是终端生成的提示输入信息的标识这里需要注意的几点EOF只是一个符号,可以用任何合法的字符替换,因为结束分隔符必须写在top格式中。结束分隔符前面不能有任何字符,起始分隔符后面不能有任何字符(包括空格)。空格将被省略。这里Document不仅可以在终端上使用,也可以在shell文件中使用。例如下面的here.sh文件cat<output.shecho"hello"echo"world"EOF在这里使用了sh。sh运行这个脚本文件,会得到一个新文件output.sh,内容如下echo"hello"echo"world"HereDocument的变形分隔符和HereDocument内容中的变量,不仅可以包含普通字符,还要使用里面的变量,比如把上面的here.sh改成cat<output.shecho"Thisisoutput"echo$1EOFuseshhere.shHereDocument运行脚本得到输出的内容.shecho"Thisisoutput"echoHereDocumentHere$1被展开成为脚本的参数HereDocument,但是有时候不想展开这个变量怎么办,可以在初始分隔符前后加上",比如上面的output.sh改为cat<<"EOF">output.sh#注意引号echo"Thisisoutput"echo$1EOFoutput.sh的内容为echo"Thisisoutput"echo$1<<变成<<-DocumentAlso一种用法是将'<<'改为'<<-'使用<<-的唯一变化是HereDocument的内容部分中每行前面的制表符(制表符)将被删除。这个用法是为了在写HereDocument的时候,可以将content部分缩进,方便阅读代码。管道上一条命令的输出作为下一条命令的输入Command1|Command2|Command3...tee类似于字母T,一进二出,输出到屏幕和文件同时[root@jiakang~]#echo"jiakang"|tee./tee.txtjiakang[root@jiakang~]#猫tee.txtjiakang