我电脑乱下软件怎么办不小心下了锁机软件被锁了怎么办

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1526)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_083',
blogTitle:'linux下bash中的重定向',
blogAbstract:'&&& Linux系统下最常用的shell是bash。今天说一说bash中重定向。重定向的格式是:[n]&word(输入重定向)和[n]&word(输出重定向)。&&& 以输出重定向为例,重定向的含义是改变输出内容的去向;命令一般输出到标准输出(屏幕显示出来),重定向标准输出到某个文件就使得输出到标准输出的内容改变目的地而输出到指定的文件。&操作符左边的是文件描述符(是个整数值),右边是文件(word所表示的文件)。重定向操作符的含义就是将打开右边的文件,关联到左边的文件描述符,使得可以通过左边的文件描述符访问右边的文件(输入是读入,输出是写出)。系统有三个标准文件,分别是stdin(标准输入)、stdout(标准输出)、stderr(标准错误输出),文件描述符分别是0, 1,',
blogTag:'linux,电脑技术',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}上一篇:下一篇:
Shell编程就是一个脚本语言,所写即所得.Shell主要是来进行系统... 就都需要在变量前加$,定义变量的时候不需要加$ 在linux当中所...
编程与安全
同时也需要掌握Linux的各种操作,包括系统的操作,命令的使用,还有linux下简单的shell编程来处理日常的任务(我们真是多才多艺呀...
其值应大于或等于0.数组中可以存放多个值,与大部分编程语言类似,数组元素的下标由0开始.定义数组在Shell中,用括号来表示数...
最后的总结
不论是Perl还是前面讲到的Linux shell编程,都是需要一步一步进行实践的,单纯的看、记忆意义不大,更多的练习才是学...
浙大作物七
另外,作为一门语言Shell编程语言具有普通编程语言的很多特点.Shell有很多版本,包括Bourne Shell、BASH、C Shell等,常用的就是BASH.图1 Linux命令介绍Linux的命令格式...
浙大作物七
看这本《linux命令行与shell脚本编程大全》,把例子和最后的项目都自己敲一遍,我觉得作为入门和进阶非常全面了.
2.sql必知必会代码优化相关: 1.代码大全 2.重构面试相关: java程序员面试笔试宝典编译原理相关: 1.自制编程语言 2.两周自制脚本语言linux相关 1.鸟哥的linux私房菜 2.linux命令行及shell脚本编程大...
推荐我们写的开源书籍:shell编程范例序列,都是自己痛苦的摸索记录,各种范例轻松上手:http://www.tinylab.org/open-shell-book/,学习中遇到问题也欢迎随时参与讨论
吴章金falcon
china unix的shell版吧,资料还是比较多的.我在博客中整理了一些我自认为有用的资料:学习shell的一些实用资料
shell脚本对提高工作效率挺有用的,值得学
今日推荐本周推荐本月推荐
1 小时前标签:
1 小时前标签:
1 小时前标签:
1 小时前标签:
1 小时前标签:
豌豆贴心提醒,本文阅读时间5分钟运维自动化是运维发展的必然方向,同时也是一个运维工程师实现效率最大化的必然选择.运维自...
马哥Linux运维
flume,sqoop开发语言:Shell,Python,Golang原文作者:老男孩原文出处:http://oldboy./056/-
前几天看到一篇新闻,Linux之父建议大家找一份基于Linux和开源环境的工作.今天就来聊一聊我的想法,本人8年Linux运维一线经验...linux shell数据重定向(输入重定向与输出重定向)详细分析
作者:佚名
字体:[ ] 来源:互联网 时间:10-22 18:57:39
在了解重定向之前,我们先来看看linux 的文件描述符。
linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit &n 定义数字有关系,不能超过最大值。 linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2 以后打开文件后。新增文件绑定描述符 可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。 对于任何一条linux 命令执行,它会是这样一个过程:一个命令执行了: 先有一个输入:输入可以从键盘,也可以从文件得到 命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕 命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕 文件输入输出由追踪为一个给定的进程所有打开文件的整数句柄来完成。这些数字值就是文件描述符。最为人们所知的文件米描述符是 stdin, stdout 和 stderr,文件描述符的数字分别是0,1和2。这些数字和各自的设备是保留的。一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如果这个时候出现错误,命令将终止,不会执行。命令解析过程,可以参考:Linux Shell 通配符、元字符、转义符使用实例介绍 这些默认的输出,输入都是linux系统内定的,我们在使用过程中,有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了。 linux shell下常用输入输出操作符是: 1. 标准输入 (stdin) :代码为 0 ,使用 & 或 && ; /dev/stdin -& /proc/self/fd/0 0代表:/dev/stdin 2. 标准输出 (stdout):代码为 1 ,使用 & 或 && ; /dev/stdout -& /proc/self/fd/1 1代表:/dev/stdout 3. 标准错误输出(stderr):代码为 2 ,使用 2& 或 2&& ; /dev/stderr -& /proc/self/fd/2 2代表:/dev/stderr 输出重定向: 格式: command-line1 [1-n] & file或文件操作符或设备 上面命令意思是:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的) 重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。 实例: 代码如下: #显示当前目录文件 test.sh test1.sh test1.sh实际不存在 [chengmo@centos5 shell]$ ls test.sh test1.sh ls: test1.sh: 没有这个文件和目录 test.sh #正确输出与错误输出都显示在屏幕了,现在需要把正确输出写入suc.txt # 1&可以省略,不写,默认所至标准输出 [chengmo@centos5 shell]$ ls test.sh test1.sh 1&suc.txt ls: test1.sh: 没有这个文件和目录 [chengmo@centos5 shell]$ cat suc.txt test.sh #把错误输出,不输出到屏幕,输出到err.txt [chengmo@centos5 shell]$ ls test.sh test1.sh 1&suc.txt 2&err.txt [chengmo@centos5 shell]$ cat suc.txt err.txt test.sh ls: test1.sh: 没有这个文件和目录 #继续追加把输出写入suc.txt err.txt &&&&追加操作符 [chengmo@centos5 shell]$ ls test.sh test1.sh 1&&suc.txt 2&&err.txt #将错误输出信息关闭掉 [chengmo@centos5 shell]$ ls test.sh test1.sh 2&&- test.sh [chengmo@centos5 shell]$ ls test.sh test1.sh 2&/dev/null test.sh #&[n] 代表是已经存在的文件描述符,&1 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符 #/dev/null 这个设备,是linux 中黑洞设备,什么信息只要输出给这个设备,都会给吃掉 #关闭所有输出 [chengmo@centos5 shell]$ ls test.sh test1.sh 1&&- 2&&- #关闭 1 ,2 文件描述符 [chengmo@centos5 shell]$ ls test.sh test1.sh 2&/dev/null 1&/dev/null #将1,2 输出转发给/dev/null设备 [chengmo@centos5 shell]$ ls test.sh test1.sh &/dev/null 2&&1 #将错误输出2 绑定给 正确输出 1,然后将 正确输出 发送给 /dev/null设备 这种常用 &P&[chengmo@centos5 shell]$ ls test.sh test1.sh &&/dev/null #& 代表标准输出 ,错误输出 将所有标准输出与错误输出 输入到/dev/null文件 &/P& 注意: 1、shell遇到&&&操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。 2、&&&&操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。 3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。 4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。 5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行 输入重定向 格式: command-line [n] &file或文件描述符&设备 将然有,命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。 实例: 代码如下: [chengmo@centos5 shell]# cat & catfile testing cat file test #这里按下 [ctrl]+d 离开 #从标准输入【键盘】获得数据,然后输出给catfile文件 [chengmo@centos5 shell]$ cat&catfile &test.sh #cat 从test.sh 获得输入数据,然后输出给文件catfile [chengmo@centos5 shell]$ cat&catfile &&eof test a file test! eof #&& 这个连续两个小符号, 他代表的是『结束的输入字符』的意思。这样当空行输入eof字符,输入自动结束,不用ctrl+D exec绑定重定向 格式: exec 文件描述符[n] &或& file或文件描述符或设备 在上面讲的输入,输出重定向 将输入,输出绑定文件或设备后。只对当前那条指令是有效的。如果需要在绑定之后,接下来的所有命令都支持的话。就需要用exec命令 实例: 代码如下: [chengmo@centos5 shell]$ exec 6&&1 #将标准输出与fd 6绑定 [chengmo@centos5 shell]$ ls /proc/self/fd/ 0 1 2 3 6 #出现文件描述符6 [chengmo@centos5 shell]$ exec 1&suc.txt #将接下来所有命令标准输出,绑定到suc.txt文件(输出到该文件) [chengmo@centos5 shell]$ ls -al #执行命令,发现什么都不返回了,因为标准输出已经输出到suc.txt文件了 [chengmo@centos5 shell]$ exec 1&&6 #恢复标准输出 [chengmo@centos5 shell]$ exec 6&&- #关闭fd 6描述符 [chengmo@centos5 ~]$ ls /proc/self/fd/ 0 1 2 3 说明:使用前先将标准输入保存到文件描述符6,这里说明下,文件描述符默认会打开0,1,2 还可以使用自定义描述符 。然后对标准输出绑定到文件,接下来所有输出都会发生到文件。 使用完后,恢复标准的输出,关闭打开文件描述符6。 有趣事情: 可能有朋友会这样用:exec 1&suc.txt ,接下来所有输出都绑定到suc.txt 文件,那么怎么样恢复原来的呢? 试试你就会发现问题所在&& 复杂一点实例 代码如下: exec 3&&test. #打开test.sh可读写操作,与文件描述符3绑定 while read line&&3 do echo $ done #循环读取文件描述符3(读取的是test.sh内容) exec 3&&- exec 3&&- #关闭文件的,输入,输出绑定 总结下: 学习就要总结,总结才可以提高了。哈哈! 估计还有一些朋友是头晕晕的。怎么linux的重定向这么复杂呢,又是文件打开描述符又是读,还有些,还有默认标准输入输出。 其实,总结一下,重定向应用通常就以下两点: 1、重新设置命令的默认输入,输出,指向到自己文件(文件,文件描述符,设备其实都是文件,因为linux就是基于设备也是文件,描述符也指向是文件,哈哈) 2、扩展自己新的描述符,对文件进行读写操作
大家感兴趣的内容
12345678910
最近更新的内容新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
小富即安, 积分 3999, 距离下一级还需 1001 积分
论坛徽章:0
在POSIX shell中,命令的结果可以通过%&;的形式来定义(其中%表示文件描述符:1为标准输出stdout、2为标准错误stderr)!系统默认%值是1,也就是1&;,而1&;可以简写为&;,也就是默认为&;。而stdout的默认目标是终端(这点不用验证吧)。另外,stderr的默认目标我个人认为也是终端,比如:
sh: abcddcba: not found.
错误信息显示在终端上(对于telnet、dtterm等,那就说虚拟终端了)。
==============实验环境==============
#mkdir redtest
#cd redtest
#touch a1 a2 a3
==============简单试验==============
#ls &;redout.lst (等同于ls 1&;redout.lst,标准输出重定向)
系统先执行&;redout.lst,生成一个空文件,然后系统执行ls,再把结果重定向到redout.lst。这时在终端看不到任何信息,但是#more redout.lst可以看到a1、a2、a3、a4和redout.lst。
#./ourgame 2&;rederr.lst (标准错误重定向)
因为系统找不到执行脚本ourgame,产生错误,但并不是显示在终端上,而是把错误信息重定向到了rederr.lst。
#more rederr.lst
sh: ourgame: not found.
==============组合试验==============
#rm rederr.lst
#rm redout.lst
#!/usr/bin/sh
for FN in `ls`
if [[ -f $FN ]]
cp $FN $FN.new
//conj的作用是执行以后产生标准输出(echo)和标准错误(cp)
#chmod 755 conj
看看一下命令的结果:
a1 //stdout
a2 //stdout
a3 //stdout
cp: a4: is a directory. Need &-R& option.//stderr
conj //stdout
再试试重定向的结果:
(1)、输出重定向到文件a1,终端上只能看到标准错误:
#./conj &;a1
#./conj 1&;a1
(2)、错误重定向到文件a1,终端上只能看到标准输出:
#./conj 2&;a1
cp: a4: is a directory. Need &-R& option.
(3)、把标准输出和标准错误都重定向到a1,终端上看不到任何信息:
#./conf &;a1 2&;&1 (等同于#./conf 1&;a1 2&;&1)
cp: a4: is a directory. Need &-R& option.
//其中&的意思,可以看成是“The same as”、“与...一样”的意思。本例中就是2&;和1&;一样,都输出到a1中。
再看一个例子:
#./conj 2&;&1 &;a1
同样可以解释为2&;和1&;一样,但是这时1&;是系统默认输出到终端,所以标准错误也输出到终端;然后,系统把标准输出重定向到文件a1。
记得unixpianpianMM有个问题:
echo &Usage $0 -d& &;&2
那么可以解释为echo &Usage $0 -d& 1&;&2
也就是把结果输出到和标准错误一样;之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件。
以上脚本在HP-UX11.00 L2000通过!所有定义、名词均建立在本人的实践和本人所了解的知识上,如有错误,请指正,谢谢!!!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
家境小康, 积分 1606, 距离下一级还需 394 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
稍有积蓄, 积分 348, 距离下一级还需 152 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
Bourne和Korn shell中的重定向
从文件输入& && && && && && && && && && && && && && && && && && & &file or 0&file
将标准输出重定向为文件& && && && && && && && && && && && &&;file or 1&;file
将标准错误重定向为文件& && && && && && && && && && && && & 2&;file
将标准输出追加到文件& && && && && && && && && && && && && & &;&;file
将标准错误重定向为标准输入& && && && && && && && && && &2&;&1
将第一个命令的输入作为第二个文件的输入& && && & cmd1|cmd2
将第一个文件即作为标准输入也作为标准输出& && & &&;file
关闭标准输入& && && && && && && && && && && && && && && && && & 0&&-
关闭标准输出& && && && && && && && && && && && && && && && && & 1&;&-
关闭标准错误& && && && && && && && && && && && && && && && && & 2&;&-
稍有积蓄, 积分 391, 距离下一级还需 109 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
&stderr的默认目标我个人认为也是终端&
就是这样的,而且是unbuffered.
丰衣足食, 积分 761, 距离下一级还需 239 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
但是缺乏比如说
2&;&3, 1&;&3, 3&;1&, 3&;&2
谁能补全???
论坛徽章:1
关于&&2、2&&1等重定向的详细解释!
#./conj 2&;&1 &;a1
同样可以解释为2&;和1&;一样,但是这时1&;是系统默认输出到终端,所以标准错误也输出到终端;然后,系统把标准输出重定向到文件a1。
记得unixpianpianMM有个问题:
echo &Usage $0 -d& &;&2
那么可以解释为echo &Usage $0 -d& 1&;&2
也就是把结果输出到和标准错误一样;之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件。
原帖由 &网中人& 发表:
ls my.file no.such.file 1&;file.both 2&;file.both
从 file system 的角度来说,单一档案在单一时间内,只能被单一的 FD 作写入。
假如 stdout(1) 与 stderr(2) 都同时在写入 file.both 的话,
则要看它们在写入时否碰到同时竞争的情形了,基本上是&先抢先赢&的原则。
让我们用周星驰式的&慢镜头&来看一下 stdout 与 stderr 同时写入 file.out 的情形好了:
* 第 1, 2, 3 秒为 stdout 写入
* 第 3, 4, 5 秒为 stderr 写入
那么,这时候 stderr 的第 3 秒所写的数据就丢失掉了﹗
要是我们能控制 stderr 必须等 stdout 写完再写,或倒过来,stdout 等 stderr 写完再写,那问题就能解决。
但从技术上,较难掌控的,尤其是 FD 在作&长期性&的写入时...
那,如何解决呢?所谓山不转路转、路不转人转嘛,
我们可以换一个思维:将 stderr 导进 stdout 或将 stdout 导进 sterr ,而不是大家在抢同一份档案,不就行了﹗
bingo﹗就是这样啦:
* 2&;&1 就是将 stderr 并进 stdout 作输出
* 1&;&2 或 &;&2 就是将 stdout 并进 stderr 作输出
于是,前面的错误操作可以改为:
$ ls my.file no.such.file 1&;file.both 2&;&1
$ ls my.file no.such.file 2&;file.both &;&2
这样,不就皆大欢喜了吗? 呵~~~ ^_^
论坛徽章:1
关于&&2、2&&1等重定向的详细解释!
原帖由 &yhuang95411& 发表:
但是缺乏比如说
2&;&3, 1&;&3, 3&;1&, 3&;&2
谁能补全???
command &&m 把文件描述符m作为标准输入
command &;&m 把标准输出重定向到文件描述符m中
command &&- 关闭标准输入
白手起家, 积分 22, 距离下一级还需 178 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
全了!呵呵
家境小康, 积分 1042, 距离下一级还需 958 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
白手起家, 积分 32, 距离下一级还需 168 积分
论坛徽章:0
关于&&2、2&&1等重定向的详细解释!
晕!居然还有这样的贴子!

我要回帖

更多关于 电脑乱下软件怎么办 的文章

 

随机推荐