由io 、 控制器、计算器、存储器组成
IO: input output
计算机里面通过终端窗口实现输入和输出,键盘鼠标屏幕这些只是手段,真正完成输入输出的是终端窗口
在linux中,每打开一个文件,系统会分配一个唯一的数字(文件描述符 --fd)用来代表目前打开的文件,其中有三个数字预留给打开的文件使用(0 1 2 )
输入出错误需要一个设备来实现:
查看默认的输入输出错误的窗口设备 --- ll /dev/std*

默认当前的窗口就是完成实现默认的输入、输出和错误的设备

描述: 重新改变linux的输入输出等
输出的信息不在当前窗口完成,而是在指定的设备进行完成。
使用tty命令可以查看当前窗口的终端名称
例如: echo 1346 1> /dev/pts/0 -- 将要输出结果在指定的窗口进行显示
1>(可以省略成 > )重定向到不同的文件:xx 1> f1 2>f2 --- 对的重定向到f1,错的重定向到f2
重定向到同一个文件: xx > xx 2>&1 --- 把标准输出往xx里面写,把错的重定向到1里面 2>&1
2>&1:2表示错误,1表示正确,&符号的作用是表示1是描述符不是文件名1
整体意思就是把错误的输出重定向到1(正确输出的文件)里面去
注意:前后次序有要求。需要先放对的 再放错的
这样写不对,因为首先执行的就是把错误重定向到1里面.然而这个时候1自己都不知道该重定向到哪儿,所以就输出到了屏幕,没有实现1和2的重定向.
&> 或者 >&例如把输入的内容直接生成到文件中 cat > a.txt

输入内容每回车一次就重定向一次
比如一个命令原来默认是通过当前终端来进行标准输入的,可以通过一个文件,把文件中的内容输入给它.

实现多行重定向<< 单词,提前把多行内容写完,然后再执行重定向
例如: cat > xx << EOF --- 遇到EOF结束

左侧的标准输出作为右侧的标准输入 --- stdin | stdout
比如实现1+..100: seq -s+ 100 | bc(-s:指定分隔符)
作用: 字符转换和删除
tr '123' 'abc' -- 把132转换成abc -- 一一对应 1--a 2--b

tr命令需要有输入才能进行转换 不能这样: tr 'xx' 'yy' filename
删除: tr -d '需要删除的内容'
例如:
实现windos格式向linux格式转换:
tr -d '\r' < 1.txt > 11.txt
windows的文本文件多了个回车符号 所以 tr -d '\r' 文件名(\r:回车 \n:换行 -d:删除指定字符)
tr命令执行删除操作的时候 需要有输入
1.将多个连续的空格压缩成一个空格 df | tr -s ' ' (-s:把相同连续的字符合成一个)
2.使用awk 指定空格作为分隔符就取出来了
我想使用spawn(针对多个并发子进程)在Ruby中执行一个外部进程,并将标准输出或标准错误收集到一个字符串中,其方式类似于使用Python的子进程Popen.communicate()可以完成的操作。我尝试将:out/:err重定向到一个新的StringIO对象,但这会生成一个ArgumentError,并且临时重新定义$stdxxx会混淆子进程的输出。 最佳答案 如果你不喜欢popen,这是我的方法:r,w=IO.pipepid=Process.spawn(command,:out=>w,:err=>[:child,:out])
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。使用Railsv2.1,假设您有一个可从多个位置访问的Controller的操作。例如,在Rails应用程序中,您有一个链接可以从两个不同的View编辑用户,一个在用户索引View中,另一个在另一个View中(比方说从每个页面上的导航栏)。我想知道根据用户点击的链接将用户重定向回正确位置的最佳方法是什么。例如:示例1:列出所有用户点击列表中用户的“编辑”
我正在使用一个用RubyonRails构建的应用程序,目前错误处理非常差。如果通过ajax执行Controller方法,并且该方法导致500(或404或任何其他响应),则呈现500.html页面并将其作为AJAX请求的结果返回。显然,javascript不知道如何处理该HTML,网页看起来只是在等待响应。在AJAX调用期间发生错误时,rails是否有一种简单的方法来呈现error.rjs模板? 最佳答案 您可以在Controller的rescue_action或rescue_action_in_public方法中使用respond_
我希望我的样式表保持纯css,但我想使用嵌入式ruby来包含一些图像的动态路径:.home{background:#FFFurl()no-repeat;}如果我将样式表从.css更改为.css.erb,image_path会得到正确解释,但当我部署到生产环境时,它不会被Assets管道处理。如果我硬编码路径,无论是在生产还是开发中都会出错,因为它们以不同的方式加载Assets。我该如何解决? 最佳答案 这是有效的:将.erb添加到.css文件并使用ruby/rails代码就可以了。所以我上面的问题中的片段很好。你必须在/conf
我们想要一个Controller集合,我们将所有操作和下游方法的记录器输出路由到一个单独的日志文件。这是一个Rails3项目。在Rails2中,我们通过重新定义“logger”方法来做到这一点,但在Rails3中,记录的方式是使用“Rails.logger”。我试着把Rails::logger=Logger.new(File.join(Rails.root,'log',"reports_controller.log"),10,1000000)在Controller的顶部,但只有在操作中专门使用Rails.logger的特定情况才会发送到指定的日志文件,Controller的所有默认日志
在bash中,这给出了预期顺序的输出:ruby-e"puts'one';raise'two'"one-e:1:in`':two(RuntimeError)但是如果我将STDERR重定向到STDOUT,我会在输出之前收到错误,这是我不想要的:ruby-e"puts'one';raise'two'"2>&1|cat-e:1:in`':two(RuntimeError)one我想将输出重定向到一个文本文件(它的行为方式与上面的cat相同)并获得输出和异常,但顺序与查看我的输出时的顺序相同终端。这能实现吗? 最佳答案 发生这种情况是因为行缓
这个脚本被命名为o.rb:@logger=Logger.new(STDOUT)@logger.info"start_time:#{start_time}"当我使用./o.rb运行它时,控制台上的输出是正确的。但是,当我尝试./o.rb>log.txt2>&1时,日志文件是空的!为什么会这样?我在使用简单的puts函数时遇到了同样的问题。更新这将重现此问题:require'logger'logger=Logger.new(STDOUT)loopdologger.info"Thisisatesthaha"sleep(1)end当我使用./foo.rb运行它时,它会正确写入控制台输出。当我运
我正在尝试创建一条新路线,以便我可以利用RoR的路径变量功能,即new_game_path。就我而言,我想使用load_game_path我已经为适当的Controller创建了一个Action,目前路由如下:resources:gamesdoget'load',on::collectionend每次我使用load_games_path它都使用正确的URI,但似乎重定向到GamesController的显示操作并显示游戏的继承显示View。我检查了rakeroutes,我看到我新创建的路线似乎是所需的路径/games/load(文件路径:/views/games/load.html.e
当使用force_ssl方法(使用CloudFlare的一键式SSL功能实现的SSL)强制执行ssl时,我的Rails4应用程序出现重定向循环。 最佳答案 当我在CloudFlare中从“灵活”设置切换到“完整”SSL设置时,这种情况就停止了。 关于ruby-on-rails-使用CloudFlareSSL在Rails4上进行force_ssl重定向循环,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com