Shell语法(cat <<EOF)

本文介绍了Linux终端中的EOF(EndofFile)概念,以及Ctrl+C和Ctrl+Z的区别,重点讲解了输入重定向(如cat命令与<<和<<-的区别)在处理文本流中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EOF(end of file),表示自定义终止符,EOF是不固定的,可以随意设置别名,

在linux按ctrl+d 就代表EOF。

ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
注:在shell中,ctrl+d表示退出当前shell.

ctrl+c是强制中断程序的执行,进程已经终止。

ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。(当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得存盘推出。你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件。)

EOF一般会配合cat能够多行文本输出。

<:输入重定向

>:输出重定向

>>:输出重定向,进行追加,不会覆盖之前内容

<<:标准输入来自命令行的一对分隔号的中间内容(e.g.  <<EOF)

e.g.1

cat <<EOF

> hello

> EOF

hello

我们知道cat的操作对象是文件,但是例1中cat的操作对象不是文件,而是用户输入;那么我们可以这样理解例1:先在文件file中输入“hello”,再用cat file输出其中的内容。

“ << EOF EOF ”的作用是在命令执行过程中用户自定义输入,它类似于起到一个临时文件的作用,只是比使用文件更方便灵活。

e.g.2

cat <<EOF > 1.txt        #向文件1.txt输入覆盖内容(>)(也可以:cat > 1.txt <<EOF)

#输出重定向到1.txt  即1被覆盖

> 123            

> 456

> 678

> 66a

> EOF

cat 1.txt

123

456

678

66a

如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。
而<<-就是为了解决这一问题:
cat <<-EOF
>Hello,world!
>      EOF
上面的写法,虽然最后的EOF前面有多个制表符和空格,但仍然会被当做结束分界符,表示stdin的结束。
这就是<<和<<-的区别。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值