二.Linux基础
8.命令格式
8.1 命令格式:
主命令 选项 参数(操作对象)
8.2 命令分类
- 内置命令:shell程序自带的命令
- 外部命令:有独立的可执行程序文件,文件名即命令名
8.3 选项
-
概念:指定命令的运行特性,指明要运行命令中的哪一个代码功能
-
短选项:例如-l , -d 如果同意命令同时使用多个短选项,可数多合并,
-
长选项:例如–help
8.4 参数
- 概念:命令的作用对象,即命令对什么生效
- 有些选项可以带参数,有些选项可以不带参数
- 有些命令可同时带多个参数,多个参数之间以空白字符分隔
8.5 查看命令帮助
8.5.1 查看bash内部命令帮助
[root@192 ~]# help cd
8.5.2 命令–help
- [] :表示的是可选
- …: 表示的可以存在多个参数
- |表示是可选的
- <>:必填
- {}:表示作为一个整体存在的
[root@192 ~]#cat --help
cat [OPTION]... [FILE]... 表明cat后面可以加上多个可选的选项以及多个可选的文件参数
8.5.3 所有用户可用man查看说明文档
[root@192 ~]# man help
8.5.4 使用说明文档的按键
按键 | 作用 |
---|---|
空格键,PaGe down | 先上一页 |
b,PaGeUP | 先下一页 |
home | 转到首页 |
end | 转到首尾 |
/ | 从上至下搜索关键字如“/cat” |
? | 从下至上搜索关键字如“?cat” |
n | 定位到下一个搜索到的关键字 |
N | 定位到上一个搜索到的关键字 |
q | 退出帮助文档 |
8.5.5 帮助文档的信息如下
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
8.5.6 info page
info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。但是与man page不同的 是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中 还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。
不过你要查询的目标数据的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超链 接)。 而这个支持info命令的文件默认是放置在/usr/share/info/这个目录当中的。
[root@192 ~]# info info
快捷键 | 作用 |
---|---|
上箭头 | 向上移动一行 |
下箭头 | 向下移动一行 |
PgUp | 向上翻一页 |
PgDn | 向下翻一页 |
Tab | 在有*符号的节点进行切换 |
回车 | 进入有*符号的子页面,查看详细帮助信息 |
u | 进入上一层信息 |
n | 进入下一小节信息 |
p | 回到上一小节信息 |
s或/ | 在info page中使用关键字搜索 |
? | 查看帮助信息 |
q | 退出 |
9.date命令
9.1 date命令语法格式
data命令用于显示或设置系统的时间与日期,语法格式为:date[OPTION]…[+FORMAT]
用户只需要在date命令后输入以+开头的参数,就可以按照指定的格式输出系统时间或日期。
9.2 date命令中的参数
参数 | 作用 |
---|---|
%Y | 完整年份(2022) |
%m | 月份(1-12) |
%d | 本月中的第几天 |
%H | 小时(00–23) |
%M | 分钟(00–59) |
%j | 今年中的第几天(从01-01开始计算) |
9.3 date的使用
[root@192 ~]# date
Sun Jul 31 04:40:49 CST 2022
9.4 今年的第几天
[root@192 ~]# date "+%j"
212
9.5 按照年月日时分秒显示
- 第一种
[root@192 ~]# date "+%Y-%m-%d %H:%m:%S"
2022-07-31 04:07:50
- 第二种
[root@192 ~]# date +'%F %T'
2022-07-31 04:45:48
9.6 date修改格式 月日时分年【.秒】 秒可选
[root@192 ~]# date 073104502022
Sun Jul 31 04:50:00 CST 2022
9.7 date修改格式 年月日时分秒
root@192 ~]# date -s "20220731 4:52:50"
Sun Jul 31 04:52:50 CST 2022
10. timedatectl命令
10.1 语法格式
timedatectl命令用于设置系统的时间,英文全称为:“time date control",语法格式为:timedatectl[OPTIONS…] COMMAND …
10.2 参数列表
参数 | 作用 |
---|---|
statuc | 显示状态信息 |
list-timezones | 列出已知时区 |
set-timezone | 设置生效时区 |
set-time | 设置系统时间 |
10.3 查看系统时间与时区
[root@192 ~]# timedatectl status
Local time: Sun 2022-07-31 04:58:58 CST
Universal time: Sat 2022-07-30 20:58:58 UTC
RTC time: Sat 2022-07-30 20:59:08
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
10.4 手动修改时区 为上海
[root@192 ~]# timedatectl set-timezone Asia/Shanghai
10.5 修改系统日期
[root@192 ~]# timedatectl set-time 2022-07-31
10.6 修改系统时间
[root@192 ~]# timedatectl set-time 5:03
11. 查看目录下的文件
11.1 参数列表
选项 | 功能 |
---|---|
-l | 以长格式显示文件和目录的详细信息,ls命令默认只显示名称的短格式 |
-d | 显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息 |
-c | 按文件的修改时间排序显示 |
-h | 显示出目录和文件的大小,默认单位是字节,与-l选项 配合使用 |
-R | 以递归的方式显示指定目录及其子目录中的所有内容 |
-a | 显示所有文件,包括名称以”.“开头的隐藏目录和隐藏文件 |
-A | 与-a相同,区别是不显示".“和表示父目录的”…" |
-i | 显示文件索引点号。一个索引节点代表一个文件,每个文件都有一个编号,称为索引点号inode |
-s | 按照文件大小排序 |
12. Linux文件类型和根目录结构
12.1 Linux文件类型
使用ls-l 查看第一个字符 | 文件类型 | 说明 |
---|---|---|
- | 普通文件 | 类似于windows的记事本 |
d | 目录文件 | 类似于windows文件夹 |
c | 字符设备文件 | 串行端口设备,顺序读写,键盘 |
b | 块设备文件 | 可供存储的接口设备,随机读写,硬盘 |
p | 管道文件 | 用于进程间的通信 |
s | 套接字文件 | 网络通信,监听客户端,客户端通过套接字数据通信 |
l | 软连接或符号链接 | |
硬链接 |
12.2 文件类型案例
[root@192 ~]# ll /usr/bin/ls
-rwxr-xr-x. 1 root root 143224 Jul 10 2021 /usr/bin/ls
[root@192 ~]# ll -d /home
drwxr-xr-x. 3 root root 4096 Jul 27 11:43 /home
[root@192 ~]# ll /dev/tty
crw-rw-rw-. 1 root tty 5, 0 Jul 27 11:46 /dev/tty
[root@192 ~]# ll /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Jul 27 11:46 /dev/sr0
[root@192 ~]# ll /dev/nvme0n1
brw-rw----. 1 root disk 259, 0 Jul 27 11:46 /dev/nvme0n1
[root@192 ~]# ll //usr/bin/yum
lrwxrwxrwx. 1 root root 5 Sep 13 2021 //usr/bin/yum -> dnf-3
12.3 文件类型介绍
文件名 | 描述 |
---|---|
/ | 根目录,其他所有目录都是其子目录 |
/boot | 存放系统启动时所需要的文件,这些文件若损害,会导致系统无法启动 |
/root | 超级用户的个人目录,普通用户没有权限访问 |
/home | 存放一般用户的个人目录 |
/bin | Binary的缩写,存放普通用户可执行的程序或命令 |
/sbin | 和/bin类似,只用root用户可以使用 |
/lib | 是库(library) 英文缩写,存放系统的各种库文件 |
/lib64 | 存放系统本身需要用到64为程序的共享函数库 |
/usr | 一般用户程序安装所在的目录,用于安装各种 应用程序 |
/opt | 该目录通常给第三方应用程序使用 |
/etc | 存放系统管理是所需要的各种配置文件和子目录 |
/var | 通常各种系统日志文件放在这里 |
/run | 保存自系统启动以来描述系统的文件 |
/dev | dev是设备(device)的英文缩写,包含所有的设备文件 |
/mnt和/media | 可以临时将别的文件系统挂载这个目录下,为其他的文件系统提供安装点 |
/tmp | 存放临时文件,三十天回收 |
/srv | srv是服务(server)的缩写,服务启动之后所需要访问的数据目录 |
/sys | 将内核的一些信息映射文件,以供应用程序所用 |
/proc | 可以在这个目录下获取系统信息,这些信息是在内存中由系统自己产生的 |
13. 从命令行管理文件
13.1文件命名规则
- 不能使用/根目录 来当文件名
- 文件名不能超过255字符
- 区分大小写
- 目录也是文件,同一路径不能存在相同名字
13.2 创建目录
语法为:mkdir [-p] 【/路径/】目录名
- -p 可以快速创建目录结果中指定的每个目录,对于存在的目录不会覆盖
- -v 显示创建目录的过程
13.3.统计目录及文件的空间占用情况
du语法格式为:【选项】【目录名】
选项 | 功能 |
---|---|
-a | 统计磁盘占用时包括所有的文件,而不仅仅统计目录 |
-s | 只统计每个文件所占用空间总的大小,而不是统计每个子目录,文件的大小 |
-h | 以K.M.G为单位显示磁盘使用情况,以提高信息的可读性 |
13.4 删除目录文件
语法格式:rm -r [-f] 目录文件名
-r 递归删除 目录及其所有文件
-f 不需要确认 强制执行yes
13.5 创建普通文件,三个时间的含义
语法格式:touch [OPTION]… FILE…
1.如果文件已经存在,更新文件的三个时间,stat可以查看文件的详细信息
[root@192 ~]# stat /etc/hostname
File: /etc/hostname
Size: 22 Blocks: 8 IO Block: 4096 regular file
Device: 10301h/66305d Inode: 949361 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-30 19:43:02.634011009 +0800
Modify: 2022-07-27 11:48:00.513470620 +0800
Change: 2022-07-27 11:48:00.513470620 +0800
Birth: 2022-07-27 11:43:26.718122830 +0800
**atime,**即access time 查看一下文件内容(cat),文件的atime时间会更新
mtime,即modify time 是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间。
**ctime,**即change time 元素据【文件的属性,大小,文件名等】被改变,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。
[root@192 ~]# touch /etc/hostname
[root@192 ~]# date
Sun Jul 31 07:54:00 CST 2022
[root@192 ~]# stat /etc/hostname
File: /etc/hostname
Size: 22 Blocks: 8 IO Block: 4096 regular file
Device: 10301h/66305d Inode: 949361 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-31 07:53:56.264077320 +0800
Modify: 2022-07-31 07:53:56.264077320 +0800
Change: 2022-07-31 07:53:56.264077320 +0800
Birth: 2022-07-27 11:43:26.718122830 +0800
[root@192 ~]# hostnamectl set-hostname server
[root@192 ~]# cat /etc/hostname
server
[root@192 ~]# stat /etc/hostname
File: /etc/hostname
Size: 7 Blocks: 8 IO Block: 4096 regular file
Device: 10301h/66305d Inode: 917509 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2022-07-31 07:54:24.634077800 +0800
Modify: 2022-07-31 07:54:19.207077708 +0800
Change: 2022-07-31 07:54:19.207077708 +0800
Birth: 2022-07-31 07:54:19.207077708 +0800
13.6.如果文件不存在,则创建该文件
创建多个普通文件:
方法1:touch 文件名1 文件名2 文件名3
方法2: touch {文件名1,文件名2,文件名3}
方法3: touch abc{1,2,3}
13.7 删除普通文件
格式:rm [-f] 文件名
14. 数据流和重定向
14.1 数据流 代码很重要
- 标准输入:代码为0
- 标准输出:代码为1
- 标准错误输出:代码2
14.2 重定向操作符
- 输出重定向操作符:> ,>>
- 输入重定向操作符:<,<<
使用形式 | 功能 |
---|---|
命令 1 >文件or命令 >文件 | 标准输出不显示在屏幕,以覆盖的方式写入到指定的文件中,文件不存在就创建 |
命令 2>文件 | 命令执行错误不显示在屏幕,以覆盖的方式写入到指定文件,文件不存在就创建 |
命令 2 >/dev/null | 命令执行错误不显示在屏幕,写入到空设备文件中,一段时间就会将错误信息丢掉 |
命令 & >文件 or命令 >&文件 | 命令执行正确和不正确都不显示在屏幕,以覆盖的方式写入到指定的文件中,文件不存在就创建 |
命令 >> 文件 | 将命令执行正确以追加方式写入指定文件,不覆盖原文件内容,文件不存在就创建 |
命令 < 文件 | 使用命令从指定的文件中读取数据作为输入 |
命令 << 文件 | 在命令行读取数据作为 输入,知道遇到指定的结束标识符 |
14.3 输出重定向案例
- 标准输出重定向:1> or >, 1>> 或 >>
- 标准错误输出重定向:2 >, 2 >>
14.3.1 案例1:输出重定向(覆盖)1和> 之间没有空格
[root@localhost ~]# date 1> date.txt
14.3.2 案例2:输出重定向(追加)
[root@localhost ~]# date >>date.txt
14.3.3 案例3:错误输出重定向
[root@localhost ~]# ls /home/ /aaaaaaaa >list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
14.3.4 案例4 :正确和错误输入到不同位置
//正确结果重定向到list.txt
//将错误结果重定向到error.txt中
[root@localhost ~]# ls /home/ /aaaaaa/>list.txt 2>error.txt
[root@localhost ~]# cat error.txt
ls: cannot access '/aaaaaa/': No such file or directory
[root@localhost ~]# cat list.txt
/home/:
wc
14.3.5 案例5:正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaa &>list.txt
查看
[root@localhost ~]# cat list.txt
ls: cannot access '/aaaaaaa': No such file or directory
/home/:
wc
14.3.6 案例6:正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaa >list.txt 2>&1
[root@localhost ~]# cat list.txt
ls: cannot access '/aaaaaaa': No such file or directory
/home/:
wc
14.3.7 重定向到空设备 /dev/null 将产生的错误丢到null中
//将产生的错误 丢到null中
[root@localhost ~]# ls /home/ /aaaaaaaa &>list.txt 2>/dev/null
[root@localhost ~]# cat list.txt
/home/:
wc
//将产生的错误 丢到null中
[root@localhost ~]# ls /home/ /aaaaaaaa &>/dev/null
[root@localhost ~]# cat list.txt
/home/:
wc
14.4 输入重定向的案例
标准的输入重定向:< 或0< 0<<或<<
14.4.1案例1:从文件读取作为cat命令的输入
[root@localhost ~]# echo test > file
[root@localhost ~]# cat < file
test
14.4.1案例2:标准输入重定向 << 并不是代表追加,指定结束符
[root@localhost ~]# cat > file3 <<end
> aa bb cc
> end
[root@localhost ~]# cat file3
aa bb cc
14.5 拓展案例
14.5.1案例1:mysql表结构导入
[root@localhost ~]# mysql -uroot -p123456 < bbs.sql
14.5.2案例2:使用输入重定向写邮件(不懂)
[root@localhost ~]# mail -s "ssss" alice #没有改变输入的方向,
默认键盘
111
222
333
^D
[root@localhost ~]# su - alice
[alice@localhost ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/alice": 1 message 1 new
\>N 1 root@localhost.local Mon Oct 29 14:09 18/657 "ssss"
&
[root@localhost ~]# mail -s "test01" alice < /etc/hosts #输入重定向,来自于文件
14.5.3案例3:(不懂)
[root@localhost ~]# dd if=/dev/zero of=/file1.txt bs=1M count=2
[root@localhost ~]# dd </dev/zero >/file2.txt bs=1M count=2
14.5.4案例4:at(不懂)
[root@localhost ~]# at now +5 min
at> useradd yang99
at> <EOT>
job 1 at 2015-06-09 11:57
[root@localhost ~]# vim at.txt
useradd yang100
useradd yang102
[root@localhost ~]# at now +2 min < at.txt
job 2 at 2015-06-09 11:55
14.6 拓展:使用文件描述符重定向的复杂用法
使用文件描述符的重定向都使用了&符号:
使用 | 意义 |
---|---|
cmd >&n | 把输出文件送到描述符n |
cmd m>&n | 把输出到文件符m的信息重定向到文件描述符n |
cmd >&- | 关闭标准输出 |
cmd <&n | 输入来自文件描述符n |
cmd m<&n | m来自文件描述符n |
cmd <&- | 关闭标准输入 |
cmd <&n- | 移动输入文件描述符n而非复制它 |
cmd >&n- | 移动输出文件描述符 n而非复制它 |
14.6.1 示例 2>&1: 将stderr 重定向到标准输出
[root@localhost ~]# 2>&1
[root@localhost ~]# cat 1
ls: cannot access '/aaaaaaa': No such file or directory
14.7 将标准输出重定向到文件
14.7.1 echo命令
- echo命令常用于在终端设备上输出字符串或变量提取后的值
- 语法格式:echo [字符串] [$变量]
- 执行 echo 字符串 或者 echo $变量 $是取变量实际值
14.7.2 把指定字符串“bingbing”输出到终端屏幕上的命令
[root@localhost ~]# echo bingbing
bingbing
14.7.3 提取变量SHELL的值,输出到屏幕上
[root@localhost ~]# echo $SHELL
/bin/bash
14.7.4 bash shell提示符
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
14.7.5 PS1常用参数含义
参数 | 含义 |
---|---|
\d | 代表日期,格式为 Mon Aug 1 |
\H | 完整的主机名称 |
\h | 仅取主机的第一个名字 |
\t | 显示时间为24小时格式 HH:MM:SS |
\T | 显示时间为12小时格式 |
\A | 显示时间为24小时格式: HH:MM |
\u | 当前用户的账号名称 |
\v | BASH的版本信息 |
\w | 完整的工作目录 |
\W | 利用basename取得工作目录名称,所以指挥列出最后一个目录 |
\# | 下达的第几个命令 |
\$ | 提示字符,如果是root就 # 如果是普通用户就$ |
14.7.6 PS1修改主机名案例
root@localhost ~]# PS1="[\u@ \t \w]"
[root@ 11:13:45 ~]
14.7.7 将标准输出重定向到文件
[root@ 11:13:45 ~]echo test > /root/test/file
-bash: /root/test/file: No such file or directory
[root@ 11:15:54 ~]echo test2 >> /root/test/file
-bash: /root/test/file: No such file or directory
14.8 tee命令读取数据输出到文件
14.8.1管道符
用于两个命令或多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入
14.8.2 tee文件
读取标准输入的数据,将其内容输出到文件的同时输出到屏幕(把输出保存到文件中,又想在屏幕上看到内容)
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件
14.8.3 tee文件语法
tee [-ai][--help][--version][文件...]
参数 | 作用 |
---|---|
-a 或者-append | 附加到现有文件的后面,而非覆盖他 |
-ih或者–ignore-interrupts | 忽略中断信号 |
–help | 在线帮助 |
14.8.4 tee的使用
[root@master test]#tee file
[root@ 11:53:08 ~]cat /etc/group | tee /root/file
14.8.5 如何确保tee命令追加信息文件中
[root@ 12:01:22 ~]tee -a file
ddd
ddd
14.8.6 tee写入多个文件
[root@ 12:01:34 ~]tee -a file1 file2 file3
15.作业1
1、#创建目录
在/mnt下创建boot和sysroot目 t#cd /mnt在/mnt/boot下创建grub目录
在/mnt/sysroot下创建proc,sys,bin,sbin,lib,usr,var,etc,dev,home,root,tmp
在/mnt/sysroot/usr下创建bin,sbin,lib
在/mnt/sysroot/lib下创建modules在/mnt/sysroot/var下创建run,log,lock在/mnt/sysroot/etc下创建init.d
mkdir -p /mnt/{boot/grub,sysroot/{proc,sys,bin,sbin,lib/moudules,usr/{bin,sbin,lib},var/{run,log,lock},etc/init.d,home,root,tmp}}
[root@ 12:26:49 /tmp]tree
用tree查看
2.如何一次性在/test目录创建以abc表示的100个文件,例如abc1,abc2,abc3,.abc100
[root@ 12:28:38 /tmp]rm -rf abc{1,2,3} /test
16. 作业2
1.手动调整当前主机时间(时区和时间更改)
[root@192 ~]# timedatectl set-timezone Asia/Shanghai
[root@192 ~]# timedatectl set-time 2022-07-31
[root@192 ~]# timedatectl set-time 8:18:50
2.查看系统时间按照年月日 时分秒 格式显示并将结果写入time文件
[root@192 ~]# date +'%F %T' > /time
[root@192 ~]# cat /time
2022-07-31 08:23:03
3.查看主机/etc/下是否存在group文件,是什么类型文件
[root@192 ~]# ll /etc/group
-rw-r--r--. 1 root root 978 Jul 27 11:43 /etc/group
4.查看/etc/sysconfig目录文件的属性
[root@192 ~]# ll -d /etc/sysconfig
drwxr-xr-x. 5 root root 4096 Jul 27 11:43 /etc/sysconfig
5.在root用户的家目录下创建file文件,在/pub创建该文件的软连接文件newfile,在/test创建硬链接文件file.lnk
[root@192 ~]# ln -s /root/file /pub/newfile
[root@192 ~]# mkdir /test
[root@192 ~]# ln /root/file /test/file.lnk
6.在文件中编写一下内容:
Good good study,day day up …
//第一种
[root@192 ~]# vim aaa.txt
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
//第二种
[root@192 ~]# echo "Good good study,day day up....." >> aaa.txt
[root@192 ~]# cat aaa.txt
//第三种
[root@192 ~]# tee << end >> aaa.txt
> Good good study,day day up....
> end
//第四种
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
Good good study,day day up.....
Good good study,day day up....
//第五种
[root@192 ~]# cat << EOF >> aaa.txt
>Good good study,day day up.....
>Good good study,day day up....
>EOF
ll /etc/group
-rw-r–r–. 1 root root 978 Jul 27 11:43 /etc/group
4.查看/etc/sysconfig目录文件的属性
[root@192 ~]# ll -d /etc/sysconfig
drwxr-xr-x. 5 root root 4096 Jul 27 11:43 /etc/sysconfig
5.在root用户的家目录下创建file文件,在/pub创建该文件的软连接文件newfile,在/test创建硬链接文件file.lnk
```vbscript
[root@192 ~]# ln -s /root/file /pub/newfile
[root@192 ~]# mkdir /test
[root@192 ~]# ln /root/file /test/file.lnk
6.在文件中编写一下内容:
Good good study,day day up …
//第一种
[root@192 ~]# vim aaa.txt
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
//第二种
[root@192 ~]# echo "Good good study,day day up....." >> aaa.txt
[root@192 ~]# cat aaa.txt
//第三种
[root@192 ~]# tee << end >> aaa.txt
> Good good study,day day up....
> end
//第四种
[root@192 ~]# cat aaa.txt
Good good study,day day up.....
Good good study,day day up.....
Good good study,day day up....
//第五种
[root@192 ~]# cat << EOF >> aaa.txt
>Good good study,day day up.....
>Good good study,day day up....
>EOF