echo ๋ช ๋ น์ด๋ก ์ค๋ฐ๊ฟ(๊ฐํ) ๋ฌธ์ ์ ๋ ฅ
์ด์ค์ผ์ดํ ๋ฌธ์ ์ฒ๋ฆฌ
๊ฐ๋ shell script ์์ฑํ ๋ echo ๋ก new line ์ ์ถ๋ ฅํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค.
Linux ์ ํฌํจ๋ echo ๋ backslash escape (\) ๋ฅผ ๋ง๋๋ ํน๋ณํ๊ฒ ํด์ํ์ง ์๊ณ ๋ฌธ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ฏ๋ก \n ์ ๋ง๋๋ ๊ฐํ ๋ฌธ์๋ก ์ฒ๋ฆฌํ์ง ์์์ ๋ค์ ๋ฌธ์ฅ์ \n ๊ฐ ๋ฌธ์ ๊ทธ๋๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
$ echo "Hello\nWorld\n" Hello\nWorld\n
echo๊ฐ ํ์ถ ๋ฌธ์์ธ \ ๋ฅผ ๋ง๋๋ฉด ํน์ ๋ฌธ์๋ก ์ฒ๋ฆฌํ๋๋ก ํ๋ ค๋ฉด -e ์ต์ ์ ์ฃผ๊ณ ์คํํ๋ฉด ๋ฉ๋๋ค.
$ echo -e "Hello\nWorld\n" Hello World
echo manual ์ ํด๋น ๋ถ๋ถ ์ค๋ช ์ ์๋์ ๊ฐ์ต๋๋ค.
$ man echo ย If -e is in effect, the following sequences are recognized: \\ backslash \n new line \r carriage return \t horizontal tab
ํน์๋ฌธ์ ์ถ๋ ฅ
-e ์ต์ ์ ์ฃผ๊ณ ์คํํ ๊ฒฝ์ฐ \ ๋ฅผ ํน์ ๋ฌธ์๋ก ์ฒ๋ฆฌํ์ง๋ง \! ๋ \? ๋ ํน์ํ ์๋ฏธ๊ฐ ์๋๋ฏ๋ก ๋ฌธ์ ๊ทธ๋๋ก ์ถ๋ ฅํด์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
์๋ก ์๋์ย ๊ฐ์ .gitignore ๋ฅผ echo ๋ก ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ด ์๋ค.
* !.gitignore
-e ๋ ๋ฐฑ ์ฌ๋์ escape ๋ฅผ ์ธ์ํ๋ ! ๋ bash ์ ํน์ ๋ฌธ์์ด๋ฏ๋ก ์๋๋๋ก ๋์ํ์ง ์๊ณ "event not found" ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
$ echo -e "*\n!.gitignore" -bash: !.gitignore": event not found
๊ทธ๋์ -e ์ต์ ์ ์ฃผ์ด \ ๋ฅผ escape ๋ก ํด์ ์คํํ๋ฉด \! ๋ ํน์ํ ์๋ฏธ๊ฐ ์์ง ์์ผ๋ฏ๋ก ์๋์๋ ๋ฌ๋ฆฌย ย \! ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
$ echo -e "*\n\!.gitignore" * \!.gitignore
์ด๋ด ๊ฒฝ์ฐ ! ๋ฌธ์์ ๋ํ octal value(\0NNN ํ์) ๋ hex (\xHH)๊ฐ์ ์ ์ด์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
$ echo -e "*\n\041.gitignore" * !.gitignore
$ echo -e "*\n\x21.gitignore" * !.gitignore