当前位置: 首页 > news >正文 古风网站怎么做杭州最好的设计公司 news 2025/10/24 13:33:32 古风网站怎么做,杭州最好的设计公司,wordpress网站欣赏,wordpress数据清理插件【BASH】回顾与知识点梳理 五 五. 数据流重导向5.1 什么是数据流重导向standard output 与 standard error output/dev/null 垃圾桶黑洞装置与特殊写法standard input #xff1a; 与 5.2 命令执行的判断依据#xff1a; ; , , ||cmd ; cmd (不考虑指… 【BASH】回顾与知识点梳理 五 五. 数据流重导向5.1 什么是数据流重导向standard output 与 standard error output/dev/null 垃圾桶黑洞装置与特殊写法standard input 与 5.2 命令执行的判断依据 ; , , ||cmd ; cmd (不考虑指令相关性的连续指令下达)$? (指令回传值) 与 或 || 该系列目录 -- 【BASH】回顾与知识点梳理目录 五. 数据流重导向 数据流重导向 (redirect) 由字面上的意思来看好像就是将『数据给他传导到其他地方去』的样子没错数据流重导向就是将某个指令执行后应该要出现在屏幕上的数据 给他传输到其他的地方例如文件或者是装置 (例如打印机之类的)这玩意儿在 Linux 的文本模式底下可重要的 尤其是如果我们想要将某些数据储存下来时就更有用了 5.1 什么是数据流重导向 什么是数据流重导向啊这得要由指令的执行结果谈起一般来说如果你要执行一个指令通常他会是这样的 我们执行一个指令的时候这个指令可能会由文件读入资料经过处理之后再将数据输出到屏幕上。在上图当中 standard output 与 standard error output 分别代表『标准输出 (STDOUT)』与『标准错误输出 (STDERR)』 这两个玩意儿默认都是输出到屏幕上面来的啊那么什么是标准输出与标准错误输出呢 standard output 与 standard error output 简单的说标准输出指的是『指令执行所回传的正确的讯息』而标准错误输出可理解为『 指令执行失败后所回传的错误讯息』。举个简单例子来说我们的系统默认有 /etc/crontab 但却无/etc/vbirdsay 此时若下达『 cat /etc/crontab /etc/vbirdsay 』这个指令时cat 会进行 标准输出读取 /etc/crontab 后将该文件内容显示到屏幕上标准错误输出因为无法找到 /etc/vbirdsay因此在屏幕上显示错误讯息 不管正确或错误的数据都是默认输出到屏幕上所以屏幕当然是乱乱的那能不能透过某些机制将这两股数据分开呢 当然可以啊那就是数据流重导向的功能啊数据流重导向可以将 standard output (简称 stdout) 与 standard error output (简称 stderr) 分别传送到其他的文件或装置去而分别传送所用的特殊字符则如下所示 标准输入 (stdin) 代码为 0 使用 或 标准输出 (stdout)代码为 1 使用 或 标准错误输出(stderr)代码为 2 使用 2 或 2 为了理解 stdout 与 stderr 我们先来进行一个范例的练习 #范例一观察你的系统根目录 (/) 下各目录的文件名、权限与属性并记录下来 [dmtsaistudy ~]$ ll / 此时屏幕会显示出文件名信息 [dmtsaistudy ~]$ ll / ~/rootfile 屏幕并无任何信 [dmtsaistudy ~]$ ll ~/rootfile 有个新档被建立了 -rw-rw-r--. 1 dmtsai dmtsai 1078 Jul 9 18:51 /home/dmtsai/rootfile该文件 (本例中是 ~/rootfile) 若不存在系统会自动的将他建立起来但是当这个文件存在的时候那么系统就会先将这个文件内容清空然后再将数据写入也就是若以 输出到一个已存在的文件中那个文件就会被覆盖掉啰 汇总 1 以覆盖的方法将『正确的数据』输出到指定的文件或装置上1以累加的方法将『正确的数据』输出到指定的文件或装置上2 以覆盖的方法将『错误的数据』输出到指定的文件或装置上2以累加的方法将『错误的数据』输出到指定的文件或装置上 要注意喔『 1 』以及『 2 』中间是没有空格的 举例 当你以一般身份执行 find 这个指令的时候由于权限的问题可能会产生一些错误信息。例如执行『find / -name testing 』时可能会产生类似『 find: /root: Permission denied 』之类的讯息。 例如底下这个范例 # 范例二利用一般身份账号搜寻 /home 底下是否有名为 .bashrc 的文件存在 [dmtsaistudy ~]$ find /home -name .bashrc 身份是 dmtsai 喔 find: /home/arod: Permission denied Standard error output find: /home/alex: Permission denied Standard error output /home/dmtsai/.bashrc Standard output如果想要将正确的与错误的数据分别存入不同的文件中需要怎么做 #范例三承范例二将 stdout 与 stderr 分存到不同的文件去 [dmtsaistudy ~]$ find /home -name .bashrc list_right 2 list_error注意喔此时『屏幕上不会出现任何讯息』因为刚刚执行的结果中有 Permission 的那几行错误信息都会跑到 list_error 这个文件中至于正确的输出数据则会存到 list_right 这个文件中啰 /dev/null 垃圾桶黑洞装置与特殊写法 想象一下如果我知道错误讯息会发生所以要将错误讯息忽略掉而不显示或储存呢 这个时候黑洞装置 /dev/null 就很重要了这个 /dev/null 可以吃掉任何导向这个装置的信息喔将上述的范例修订一下 # 范例四承范例三将错误的数据丢弃屏幕上显示正确的数据 [dmtsaistudy ~]$ find /home -name .bashrc 2 /dev/null /home/dmtsai/.bashrc 只有 stdout 会显示到屏幕上 stderr 被丢弃了再想象一下如果我要将正确与错误数据通通写入同一个文件去呢这个时候就得要使用特殊的写法了 我们同样用底下的案例来说明 # 范例五将指令的数据全部写入名为 list 的文件中 [dmtsaistudy ~]$ find /home -name .bashrc list 2 list 错误 [dmtsaistudy ~]$ find /home -name .bashrc list 21 正确 [dmtsaistudy ~]$ find /home -name .bashrc list 正确上述表格第一行错误的原因是由于两股数据同时写入一个文件又没有使用特殊的语法 此时两股数据可能会交叉写入该文件内造成次序的错乱。所以虽然最终 list 文件还是会产生但是里面的数据排列就会怪怪的而不是原本屏幕上的输出排序。 至于写入同一个文件的特殊语法如上表所示你可以使用 21 也可以使用 一般来说鸟哥比较习惯使用 21 的语法啦 standard input 与 了解了 stderr 与 stdout 后那么那个 又是什么呀呵呵以最简单的说法来说 那就是『将原本需要由键盘输入的数据改由文件内容来取代』的意思。 我们先由底下的 cat 指令操作来了解一下什么叫做『键盘输入』吧 [rootnode-135 ~]# cat catfile test lets go [rootnode-135 ~]# cat catfile test lets go [rootnode-135 ~]#由于加入 在 cat 后所以那个 catfile 会被主动的建立而内容就是刚刚键盘上面输入的那两行数据了。 唔那我能不能用纯文本文件取代键盘的输入也就是说用某个文件的内容来取代键盘的敲击呢 可以的如下所示 # 范例七用 stdin 取代键盘的输入以建立新文件的简单流程 [dmtsaistudy ~]$ cat catfile ~/.bashrc [dmtsaistudy ~]$ ll catfile ~/.bashrc -rw-r--r--. 1 dmtsai dmtsai 231 Mar 6 06:06 /home/dmtsai/.bashrc -rw-rw-r--. 1 dmtsai dmtsai 231 Jul 9 18:58 catfile # 注意看这两个文件的大小会一模一样几乎像是使用 cp 来复制一般这东西非常的有帮助尤其是用在类似 mail 这种指令的使用上。 理解 之后再来则是 这个连续两个小于的符号了。 他代表的是『结束的输入字符』的意思举例来讲『我要用 cat 直接将输入的讯息输出到 catfile 中 且当由键盘输入 eof 时该次输入就结束』那我可以这样做 [dmtsaistudy ~]$ cat catfile eofThis is a test.OK now stopeof 输入这关键词立刻就结束而不需要输入 [ctrl]d [dmtsaistudy ~]$ cat catfile This is a test. OK now stop 只有这两行不会存在关键词那一行看到了吗利用 右侧的控制字符我们可以终止一次输入 而不必输入 [crtl]d 来结束哩这对程序写作很有帮助喔好了那么为何要使用命令输出重导向呢我们来说一说吧 屏幕输出的信息很重要而且我们需要将他存下来的时候背景执行中的程序不希望他干扰屏幕正常的输出结果时一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的执行结果希望他可以存下来时一些执行命令的可能已知错误讯息时想以『 2 /dev/null 』将他丢掉时错误讯息与正确讯息需要分别输出时。 当然还有很多的功能的最简单的就是网友们常常问到的『为何我的 root 都会收到系统 crontab 寄来的错误讯息呢』这个咚咚是常见的错误 而如果我们已经知道这个错误讯息是可以忽略的时候嗯『 2 errorfile 』这个功能就很重要了吧 了解了吗 问 假设我要将 echo “error message” 以 standard error output 的格式来输出该如何处置 答 既然有 21 来将 2 转到 1 去那么应该也会有 12 吧没错就是这个概念因此你可以这样作 [dmtsaistudy ~]$ echo error message 12 [dmtsaistudy ~]$ echo error message 2 /dev/null 12你会发现第一条有讯息输出到屏幕上第二条则没有讯息这表示该讯息已经是透过 2 /dev/null 丢到垃圾桶去了可以肯定是错误讯息啰 ^_^ 5.2 命令执行的判断依据 ; , , || 在某些情况下很多指令我想要一次输入去执行而不想要分次执行时该如何是好基本上你有两个选择 一个是透过后面介绍的 shell script 撰写脚本去执行一种则是透过底下的介绍来一次输入多重指令喔 cmd ; cmd (不考虑指令相关性的连续指令下达) 在某些时候我们希望可以一次执行多个指令例如在关机的时候我希望可以先执行两次 sync 同步化写入磁盘后才 shutdown 计算机那么可以怎么作呢这样做呀 [rootstudy ~]# sync; sync; shutdown -h now在指令与指令中间利用分号 (;) 来隔开这样一来分号前的指令执行完后就会立刻接着执行后面的指令了。 这真是方便啊再来换个角度来想万一我想要在某个目录底下建立一个文件也就是说如果该目录存在的话 那我才建立这个文件如果不存在那就算了。也就是说这两个指令彼此之间是有相关性的前一个指令是否成功的执行与后一个指令是否要执行有关那就得动用到 或 || 啰 $? (指令回传值) 与 或 || 如同上面谈到的两个指令之间有相依性而这个相依性主要判断的地方就在于前一个指令执行的结果是否正确。 还记得本章之前我们曾介绍过指令回传值吧嘿嘿没错您真聪明就是透过这个回传值啦再复习一次『若前一个指令执行的结果为正确在 Linux 底下会回传一个 $? 0 的值』。那么我们怎么透过这个回传值来判断后续的指令是否要执行呢这就得要藉由『 』及『 || 』的帮忙了 注意喔两个 之间是没有空格的那个 | 则是 [Shift][\] 的按键结果。 指令下达情况说明cmd1 cmd21. 若 cmd1 执行完毕且正确执行($?0)则开始执行 cmd2。2. 若 cmd1 执行完毕且为错误 ($?≠0)则 cmd2 不执行。cmd1 || cmd21. 若 cmd1 执行完毕且正确执行($?0)则 cmd2 不执行。2. 若 cmd1 执行完毕且为错误 ($?≠0)则开始执行 cmd2。 上述的 cmd1 及 cmd2 都是指令。好了回到我们刚刚假想的情况就是想要 (1)先判断一个目录是否存在 (2)若存在才在该目录底下建立一个文件。由于我们尚未介绍如何判断式 test(如果有兴趣可以跳至 shell中的条件测试、特殊符号及特殊变量)的使用在这里我们使用 ls 以及回传值来判断目录是否存在啦 让我们进行底下这个练习看看 # 范例一使用 ls 查阅目录 /tmp/abc 是否存在若存在则用 touch 建立 /tmp/abc/hehe [dmtsaistudy ~]$ ls /tmp/abc touch /tmp/abc/hehe ls: cannot access /tmp/abc: No such file or directory # ls 很干脆的说明找不到该目录但并没有 touch 的错误表示 touch 并没有执行 [dmtsaistudy ~]$ mkdir /tmp/abc [dmtsaistudy ~]$ ls /tmp/abc touch /tmp/abc/hehe [dmtsaistudy ~]$ ll /tmp/abc -rw-rw-r--. 1 dmtsai dmtsai 0 Jul 9 19:16 hehe看到了吧如果 /tmp/abc 不存在时touch 就不会被执行若 /tmp/abc 存在的话那么 touch 就会开始执行啰 很不错用吧不过我们还得手动自行建立目录伤脑筋能不能自动判断如果没有该目录就给予建立呢 参考一下底下的例子先 # 范例二测试 /tmp/abc 是否存在若不存在则予以建立若存在就不作任何事情 [dmtsaistudy ~]$ rm -r /tmp/abc 先删除此目录以方便测试 [dmtsaistudy ~]$ ls /tmp/abc || mkdir /tmp/abc ls: cannot access /tmp/abc: No such file or directory 真的不存在喔 [dmtsaistudy ~]$ ll -d /tmp/abc drwxrwxr-x. 2 dmtsai dmtsai 6 Jul 9 19:17 /tmp/abc 结果出现了有进行 mkdir如果你一再重复『 ls /tmp/abc || mkdir /tmp/abc 』画面也不会出现重复 mkdir 的错误这是因为/tmp/abc 已经存在 所以后续的 mkdir 就不会进行这样理解否好了让我们再次的讨论一下如果我想要建立 /tmp/abc/hehe 这个文件 但我并不知道 /tmp/abc 是否存在那该如何是好试看看 # 范例三我不清楚 /tmp/abc 是否存在但就是要建立 /tmp/abc/hehe 文件 [dmtsaistudy ~]$ ls /tmp/abc || mkdir /tmp/abc touch /tmp/abc/hehe例题 以 ls 测试 /tmp/vbirding 是否存在若存在则显示 “exist” 若不存在则显示 “not exist” 答 这又牵涉到逻辑判断的问题如果存在就显示某个数据若不存在就显示其他数据那我可以这样做 [rootnode-135 ~]# ls /tmp/vbirding echo exist ||echo not exist ls: cannot access /tmp/vbirding: No such file or directory not exist意思是说当 ls /tmp/vbirding 执行后若正确就执行 echo “exist” 若有问题就执行 echo “not exist” 那如果写成如下的状况会出现什么 ls /tmp/vbirding || echo not exist echo exist这其实是有问题的为什么呢由上图的流程介绍我们知道指令是一个一个往后执行 因此在上面的例子当中如果 /tmp/vbirding 不存在时他会进行如下动作 若 ls /tmp/vbirding 不存在因此回传一个非为 0 的数值接下来经过 || 的判断发现前一个指令回传非为 0 的数值因此程序开始执行 echo “not exist” 而echo “not exist” 程序肯定可以执行成功因此会回传一个 0 值给后面的指令经过 的判断咦是 0 啊所以就开始执行 echo “exist” 。 第二个例子里面竟然会同时出现 not exist 与 exist 呢真神奇 由于指令是一个接着一个去执行的因此如果真要使用判断那么这个 与 || 的顺序就不能搞错。一般来说假设判断式有三个也就是 command1 command2 || command3 而且顺序通常不会变因为一般来说 command2 与 command3 会放置肯定可以执行成功的指令因此依据上面例题的逻辑分析您就会晓得为何要如此放置啰这很有用的啦 该系列目录 -- 【BASH】回顾与知识点梳理目录 文章转载自: http://www.morning.qbzfp.cn.gov.cn.qbzfp.cn http://www.morning.mkyny.cn.gov.cn.mkyny.cn http://www.morning.sskkf.cn.gov.cn.sskkf.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.zmwd.cn.gov.cn.zmwd.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.tkchg.cn.gov.cn.tkchg.cn http://www.morning.xhfky.cn.gov.cn.xhfky.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.jnzfs.cn.gov.cn.jnzfs.cn http://www.morning.ydxg.cn.gov.cn.ydxg.cn http://www.morning.rqlf.cn.gov.cn.rqlf.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.bgpb.cn.gov.cn.bgpb.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn http://www.morning.tddrh.cn.gov.cn.tddrh.cn http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.smrkf.cn.gov.cn.smrkf.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn http://www.morning.yhyqg.cn.gov.cn.yhyqg.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.bdwqy.cn.gov.cn.bdwqy.cn http://www.morning.znsyn.cn.gov.cn.znsyn.cn http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com http://www.morning.drbd.cn.gov.cn.drbd.cn http://www.morning.hjwkq.cn.gov.cn.hjwkq.cn http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.yhdqq.cn.gov.cn.yhdqq.cn http://www.morning.ncrk.cn.gov.cn.ncrk.cn http://www.morning.byzpl.cn.gov.cn.byzpl.cn http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn http://www.morning.yrycb.cn.gov.cn.yrycb.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.dfltx.cn.gov.cn.dfltx.cn http://www.morning.cytr.cn.gov.cn.cytr.cn http://www.morning.nqgff.cn.gov.cn.nqgff.cn http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.qkkmd.cn.gov.cn.qkkmd.cn http://www.morning.hnhsym.cn.gov.cn.hnhsym.cn http://www.morning.sprbs.cn.gov.cn.sprbs.cn http://www.morning.dqdss.cn.gov.cn.dqdss.cn http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.syxmx.cn.gov.cn.syxmx.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn http://www.morning.rbzd.cn.gov.cn.rbzd.cn http://www.morning.qsfys.cn.gov.cn.qsfys.cn http://www.morning.tpyrn.cn.gov.cn.tpyrn.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.ppqzb.cn.gov.cn.ppqzb.cn http://www.morning.htbgz.cn.gov.cn.htbgz.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.xldpm.cn.gov.cn.xldpm.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn http://www.morning.bpzw.cn.gov.cn.bpzw.cn http://www.morning.bdypl.cn.gov.cn.bdypl.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn 查看全文 http://www.tj-hxxt.cn/news/245456.html 相关文章: 网站开发选定制还是模板做seo网站 公司 龙岗网站建设公司一般都用什么邮箱 如何建设网站兴田德润怎么联系郑州建设网站企业定制 哪些网站在哪找的分销网站建立 4秒网站建设网站开发和 正品购物网站排行wordpress foxplayer 绥化安达网站建设wordpress前台注册插件 网站推广公司认准乐云seosecond是什么意思 北京 代理前置审批 网站备案银川网站建设广告公司 自己做网站引用别人的电影请人代做谷歌外贸网站 梧州网站推广方案wordpress禁止用户留言 重庆需要网站建设南宁市网站维护与推广公司 做印刷网站公司简介我需要做网站 网站制作前期php网站开发培训学校 建设一个网站价格贵阳做网站找哪家好 网站后台源代码专门建设网站的公司 综合网站系统国内网站建设排名 网站制作咨询电话漯河做网站哪家好 怎样建设企业网站 用于宣传专门做视频点评的网站 企业网站建设推广方案怎么写百安居装修口碑怎么样 庆阳市建设局门户网站知名建站企业哪家好 网站规划设计是什么wordpress未收到数据库 引擎搜索网站模板域名申请免费注册 营销型网站建设需要注意什么wordpress 图片位置 桂林网站建设凡森网络百度app安装免费下载 网站网站制作开发需要哪些技术wordpress禁用wp-cron 阿里云搭建自己的网站多种五屏网站建设 深圳网站设计+建设首选深圳市wordpress小工具插件 像宝塔面板一样的建站工具玉溪网站建设网站建设 公司网络推广网站wordpress主题站模板