shell——输入输出管道
1. 标准输出
ls -l > ./test
ls -l 1> ./test
ls -l >> ./test
2. 标准输入
read oneline
while [ "oneline" != "" ]
do
read oneline
done
read命令:读取一行
./test.sh < 1.txt
3. 标准错误
ls -l >./output 2>./err
ls -l >./output_and_err 2>&1
4. 管道
cat $1 | while read oneline
do
read oneline
done
ls -l | tee ls.txt
tee,复制标准输入内容到标准输出和指定的文件中,可以复制到多个文件,tee类似于管道,一个输入,一个标准输出和多个文件输出。
4.1 区分命令行参数 和 标准输入
rm只接受命令行,不接受标准输入
rm -i $(find ./ -name *)
5. 块重定向
{date; echo "aaa"; pwd;} > ./out
也可以将 命令块 交给子进程执行,
(date; echo "aaa"; pwd;) > ./out
对用户指定的文件,每行添加行号
count=0
filename=$(basename $file)
while read line
do
count=$((count+1))
echo $count:$line
# 指定标准输入为 $file
# 指定 while 块 标准输出为 $file.lined
done <$file>$filename.lined
5.1 Here Document
Here Document 使用IO重定向形式记录一段临时文本或交互命令,并把这些文本或命令依次传递给一个程序或命令,作为运行时的标准输入。
语法
command <<delimiter
document
document
...
delimiter
delimiter 是输入的开始和结束标识符, delimiter可以用任意字符,常用 EOF,但 delimiter 只能是一个词,中间不能有空格或Tab。
cat <<EOF
aaa
bbb
EOF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?