linux中EOF的用法梳理

linux中EOF的用法梳理mysql

在linux運維工做中,咱們會碰到這樣一個場景:linux

執行腳本的時候,須要往一個文件裏自動輸入N行內容。若是是少數幾行,能夠使用echo進行追加,若是是多行內容,再用echo追加就不合適了。sql

這個時候就能夠使用EOF結合cat進行內容的追加了。shell

下面對EOF的用法進行梳理:vim

EOF是END OF FILE的縮寫,表示自定義終止符。既然是自定義,那麼EOF就不是固定的,能夠隨意設置別名,在Linux中按ctrl+d就能夠表明EOF。bash

其用法以下:運維

<<EOF        //開始
....
EOF            //結束socket

還能夠自定義:linux運維

<<BBB        //開始
....
BBB              //結束spa

經過cat配合重定向並追加操做,在這以前先熟悉幾個符號:

< :輸入重定向
> :輸出重定向
>> :輸出重定向,進行追加,不會覆蓋以前內容
<< :標準輸入來自命令行的一對分隔號的中間內容.

下面經過具體事例來感覺下EOF用法的妙處:

  • 向文件test.sh中添加內容 

[tianqi@tianqi-01 shell]$ cat << EOF > test.sh
> 123456
> 456789
> adgcdg
> EOF
[tianqi@tianqi-01 shell]$ cat test.sh 
123456
456789
adgcdg
[tianqi@tianqi-01 shell]$ 

  • 追加內容

[tianqi@tianqi-01 shell]$ cat << EOF >> test.sh 
> 777
> 888
> EOF
[tianqi@tianqi-01 shell]$ cat test.sh 
123456
456789
adgcdg
777
888
[tianqi@tianqi-01 shell]$ 

  • 覆蓋內容

[tianqi@tianqi-01 shell]$ cat << EOF > test.sh 
> 5555
> EOF
[tianqi@tianqi-01 shell]$ cat test.sh 
5555
[tianqi@tianqi-01 shell]$ 

  • 自定義EOF,好比自定義爲tian

[tianqi@tianqi-01 shell]$ cat << tian > example.txt
> aaa
> bbb
> 333
> tian
[tianqi@tianqi-01 shell]$ cat example.txt 
aaa
bbb
333
[tianqi@tianqi-01 shell]$ 

  • 能夠編寫腳本,向一個文件中輸入多行內容

[tianqi@tianqi-01 shell]$ touch my.cnf

[tianqi@tianqi-01 shell]$ vim test.sh

#!/bin/bash
cat > /home/tianqi/shell/my.cnf << EOF
/home/tianqi/shell/my.cnf
[client]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

basedir = /usr/local/mysql/
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
sync_binlog=1
log_bin = mysql-bin

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
port = 3306
EOF

[tianqi@tianqi-01 shell]$ cat /home/tianqi/shell/my.cnf
/home/tianqi/shell/my.cnf
[client]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

basedir = /usr/local/mysql/
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
sync_binlog=1
log_bin = mysql-bin

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  port = 3306 [tianqi@tianqi-01 shell]$ 

相關文章
相關標籤/搜索