Tim*_*Tim 11 command-line pipe io-redirection cat
对于某些命令,可以将某些输入指定为 stdin 或命令行参数。
具体而言,假设command可以采取stdin的输入和一个文件名作为命令行参数,并且command < myfile,cat myfile | command 和command myfile可以产生相同的结果。
例如,
当命令是sed:
sed s/day/night/ <myfile >new
sed s/day/night/ myfile >new
cat myfile | sed s/day/night/ >new
Run Code Online (Sandbox Code Playgroud)
当命令是cat:
cat < myfile
cat myfile
Run Code Online (Sandbox Code Playgroud)
该cat file | command语法被认为是 的无用使用Cat。在所有选项中,它会降低性能,因为它必须在内核中生成另一个进程。无论这在大局中可能是多么微不足道,它都是其他形式所没有的开销。这已经涵盖在以下问题中:我应该关心不必要的猫吗?
在其他两种形式之间,几乎没有性能差异。STDIN 是一个特殊的文件节点,进程必须像任何其他节点一样打开和读取它。传递文件名而不是 STDIN 只会让它打开一个不同的文件。
不同之处在于您正在寻找哪些功能/灵活性。
sed -i就地编辑。(注意:因为这必须在幕后创建一个新文件,所以它不会比其他重定向提高性能,但这是一个方便的步骤。)sed [exp] < file1 file2甚至sed [exp] < <(grep command)。这个用例的详细信息可以在这个问题上找到:进程替换和管道| 归档时间: |
|
| 查看次数: |
4462 次 |
| 最近记录: |