Tag: 管道

为什么使用管道而不是输入重定向

我是linux系统的新手,我无法理解为什么我们需要两个可以重定向输出的运算符:pipe as | 和输出重定向运算符> ? 难道我们不能只使用第二个吗? 大多数时候,我看到如果将多个命令链接在一起,则使用管道。 但是,如果输出被重定向到文件,如echo ‘hello’ > filename ,则使用输出重定向运算符。 我在这里想念的是什么?

如果通过管道输入,则“read”命令等待额外的换行符

如果我只是运行read它会读取一行并在按下Enter时立即退出。 $ read typing something here $ 但是,当我通过管道(例如来自cat传递输入时, read行为会有所不同并继续运行,直到遇到第二个换行: $ cat | read typing first line typing second line $ 谁能解释为什么会这样? PS:这个问题的灵感来自如何提供标准输入并同时转储到文件中?

杀死Java进程

我正在研究计算量很大的代码 – 现在 – 崩溃很多,但我还在努力:)当它崩溃时,我无法关闭GUI窗口; 我必须打开一个shell并杀死-9进程。 它是一个Java进程,很容易找到: nkint@zefiro:~$ ps aux | grep java nkint 2705 16.6 1.0 460928 43680 ? Sl 12:23 0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something nkint 2809 0.0 0.0 4012 776 pts/0 S+ 12:24 0:00 grep –color=auto java nkint@zefiro:~$ kill -9 2705 现在这很容易,但却是一项机械任务。 所以通常我等待大约7-8个进程崩溃,然后kill -9每个进程。 我想以自动方式做到这一点。 我认为应该很容易管道一些命令来获取ps aux | grep java的(n-1)结果的id ps aux | […]

为什么使用命名管道而不是文件?

我最近读到了有关命名管道的内容,我无法理解为什么它们存在。 我在某处读过使用命名管道比使用文件耗时少。 为什么会这样? 命名管道也必须存储在内存中(并且可能交换,就像文件一样)。 据我所知,他们必须获得一个必须由当前目录引用的inode,就像文件一样。 此外,它们必须由程序员删除,就像文件一样。 那么优势在哪里呢?

如何在手册页中搜索?

我经常想要搜索一个man页,但我不得不这么做: man | grep 要么: man > file.txt 但是必须有一个比这更简单的方法来做到这一点,那么如何在其中搜索man页而不必将其内容发送到文件,或者使用grep将必要的匹配内容打印到标准输出?

如何在一行上执行FTP命令?

这是我登录FTP时正在做的事情: ftp user:password@server ftp: user:password@server: Unknown host ftp> echo HELLO WORLD! ftp> quit 我想做一行FTP命令…… ftp user:password@server -command “echo HELLO WORLD” 要么 “echo HELLO WORLD” | ftp user:password@server 类似的东西……作为我正在尝试创建的脚本的一部分。 什么都没有转移,我只需要回应一些指令,这是我发现在我的两个系统之间做的最简单的方法。

Pipable命令以彩色打印?

我对bash脚本有点新,我想知道是否有一个程序或内置命令管道将以指定的颜色打印? 或者是否有回声参数? 像我能做的那样: echo Hi | commandhere -arguement blue 它会以蓝色打印“Hi”吗?

为什么不命令“ls | 档案“工作?

我一直在研究命令行,并了解到| (管道)用于将命令的输出重定向到另一个命令的输入。 那么为什么命令ls | file ls | file不起作用? file输入是一个或多个文件名,如file filename1 filename2 ls输出是文件夹中的目录和文件列表,所以我想ls | file ls | file应该显示文件夹上每个文件的文件类型。 然而,当我使用它时,输出是: Usage: file [-bcEhikLlNnprsvz0] [–apple] [–mime-encoding] [–mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file … file -C [-m magicfiles] file [–help] 由于使用file命令有一些错误

如何将管道输入定向到ls命令?

当我输入类似的内容时: find . -name *foo* | ls -lah 它返回与plain ls命令相同的结果,就好像它没有输入一样。 然而: ls -lah $( find . -name *foo* ) 效果很好,但只有当find命令有结果时才有效。 管道到ls有可能吗?

如何将终端标准输出(stdout)传送到剪贴板?

例如, 假设我想列出文件夹的内容并直接将其粘贴到聊天窗口中供朋友查看。 我意识到我可以使用ls > filename.txt创建一个包含这些内容的文件(filename.txt); 然后我必须打开或打印文件并手动选择和复制文本块 ( 这可能很烦人/乏味 。)我显然也可以直接从终端窗口中选择和复制ls的输出。 简单地将标准输出传输到剪贴板会更快/更容易 。 什么终端命令允许我这样做?