Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

5
使用破折号(-)代替文件名
对于命令,如果将其-用作参数来代替文件名,则表示STDIN或STDOUT。 但在此示例中,它将创建一个名称为的文件-: echo hello > - -在此示例中,我如何表示STDOUT? 相反,我该如何使示例中-的文件命名-为: cat -

4
cat file |有什么区别?./binary”和“ ./binary <文件”?
我有一个二进制文件(无法修改),可以这样做: ./binary &lt; file 我也可以: ./binary &lt;&lt; EOF &gt; "line 1 of file" &gt; "line 2 of file" ... &gt; "last line of file" &gt; EOF 但 cat file | ./binary 给我一个错误。我不知道为什么它不适用于管道。在所有3种情况下,文件的内容均以二进制的标准输入(以不同方式)提供: bash读取文件并将其提供给二进制的 stdin bash从stdin读取行(直到EOF)并将其提供给binary的 stdin cat读取文件行并将其放入stdout,bash将其重定向到二进制的 stdin 据我所知,二进制文件不会注意到这3个文件之间的区别。有人可以解释为什么第三种情况不起作用吗? 顺便说一句:二进制给出的错误是: 20170116 / 125624.689-U3000011无法读取脚本文件'',错误代码'14'。 但是我的主要问题是,具有这三个选项的任何程序有什么区别? 以下是一些详细信息:我使用strace再次尝试了该 方法,实际上在出现错误消息之前,有来自lseek的ESPIPE(非法查找)错误, 接着是来自读取的EFAULT(错误地址)错误。 我试着用Ruby脚本(不使用临时文件)来控制二进制是部分callapi从为Automic(UC4) 。

10
有没有办法查看进程在Linux中具有的所有线程的详细信息?
对于Windows,我认为Process Explorer向您显示了进程下的所有线程。 Linux是否有类似的命令行实用程序,可以向我显示有关特定进程产生的所有线程的详细信息? 我想我应该让自己更加清楚。我不想看到进程层次结构,而是一个特定进程产生的所有线程的列表 看这个截图 在Linux中如何实现?谢谢!

4
如何通过Debian Squeeze上的Shell与Unix域套接字通信?
我正在运行Debian Squeeze Web服务器。我已经在上面安装了memcached,并配置了memcached以监听Unix域套接字(位于/tmp/memcached.sock),因为它只需要从位于同一服务器上的网站接收消息即可。 似乎工作正常,但我也想通过外壳与memcached通信,以检查它是否在执行我认为正在执行的操作。 memcached通过简单的ASCII协议接受消息(如果我理解正确的话)。如果它正在侦听TCP / IP,则可以通过以下方式向其发送消息nc: $ echo "stats settings" | nc localhost 11211 但是我不知道如何将文本发送到域套接字。 在我的笔记本电脑(运行OS X Lion)上,同时具有nc和telnet(-U并-u分别具有)选项以使用域套接字。但是,在我的Debian Squeeze Web服务器上,这些选项不存在。
99 shell  debian  socket  telnet 



5
“ foo(){}函数”和“ foo(){}”之间的区别
我可以bash使用或省略function关键字来定义函数。有什么区别吗? #!/bin/bash function foo() { echo "foo" } bar() { echo "bar" } foo bar 调用函数foo和bar成功都没有,我看不出有什么区别。所以我想知道这是否只是为了提高可读性,还是我缺少某些东西... BTW在其他shell中dash(例如/bin/sh,dash在debian / ubuntu中被符号链接)在使用function关键字时失败。
96 bash  shell  function  posix 

4
如何在查找中结合2名条件?
我想搜索不符合2个-name条件的文件。我可以这样做: find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk" 这将产生适当的结果,但是我可以以某种方式加入这两个条件吗?
94 bash  shell  find 


6
混淆&&和||的使用 经营者
我浏览了一个/etc/rc.d/init.d/sendmail文件(我知道这几乎没用过,但是我正在学习考试),并且对&amp;&amp;和||操作符有些困惑。我已经阅读了可以在诸如以下语句中使用它们的地方: if [ test1 ] &amp;&amp; [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi 但是,此脚本显示单行语句,例如: [ -z "$SMQUEUE" ] &amp;&amp; SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 这些似乎正在使用&amp;&amp;and ||运算符基于测试得出响应,但是我无法从这些运算符的这种特殊用法中提取文档。谁能解释在特定情况下这些工具的作用?

13
如何比较外壳中的两个日期?
如何在shell中比较两个日期? 这是一个我想如何使用它的示例,尽管它不能按原样工作: todate=2013-07-18 cond=2013-07-15 if [ $todate -ge $cond ]; then break fi 如何获得理想的结果?


4
我可以以某种方式在已经运行的prog1中添加“ && prog2”吗?
大多数shell提供某些功能,&amp;&amp;并;以某种方式链接命令的执行。但是,如果命令已经在运行,我还能根据第一个命令的结果以某种方式添加另一个要执行的命令吗? 说我跑了 $ /bin/myprog some output... 但我真的很想/bin/myprog &amp;&amp; /usr/bin/mycleanup。我无法杀死myprog并重新启动一切,因为会浪费太多时间。我可以Ctrl+ Z和fg/(bg如有必要)。这是否允许我链接另一个命令? 我对bash最为感兴趣,但是欢迎所有常见shell的答案!
87 bash  shell  process  exit 

4
将SIGTERM转发给Bash中的孩子
我有一个Bash脚本,看起来与此类似: #!/bin/bash echo "Doing some initial work...."; /bin/start/main/server --nodaemon 现在,如果运行脚本的bash shell收到SIGTERM信号,它也应该将SIGTERM发送到正在运行的服务器(该服务器会阻塞,因此无法进行陷阱)。那可能吗?
86 bash  shell  signals  docker 

5
工艺替代和管道
我想知道如何理解以下内容: 将命令的标准输出插入另一个命令的标准输入是一项强大的技术。但是,如果您需要传递多个命令的标准输出怎么办?这是过程替代的地方。 换句话说,过程替换可以执行管道的任何操作吗? 进程替换可以做什么,而管道不能做什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.