Input & Output
1. echo
- prints text to standard output
- echo <옵션> <메시지>
-n : 메시지 출력 후 newline 문자를 추가하지 않는다. (자동 줄바꿈 취소)
-e : backslach escapes 문자를 해석하여 특별한 의미를 지정한다.
\t TAB키
\n 줄바꿈
\a alert(bell)
- Example
[centos@linux-mypc ~]$ echo "Your time is up"
Your time is up
[centos@linux-mypc ~]$ echo "Your time is up" > time.txt
[centos@linux-mypc ~]$ cat time.txt
Your time is up
[centos@linux-mypc ~]$ echo "Name:"
Name:
[centos@linux-mypc ~]$ echo -n "Name:"
Name:[centos@linux-mypc ~]$
[centos@linux-mypc ~]$ echo -e "First\tSecond"
First Second
[centos@linux-mypc ~]$ echo -e "Name:\n"
Name:
2. read // 대화식 처리에 좋은 Command
- reads text from standard input
- read <옵션> 변수명
-n : 지정한 문자 수만큼 입력 받는다.
-t : 지정된 시간 안에 입력 받는다.
-s : silent mode로 입력하는 글자가 보이지 않는다.
- read 명령에서 변수 명 생략 시 기본 REPLY 변수에 채워진다.
- Example
[centos@linux-mypc ~]$ read score
40
[centos@linux-mypc ~]$ echo $score
40
[centos@linux-mypc ~]$ read name score
a b
[centos@linux-mypc ~]$ echo $name
a
[centos@linux-mypc ~]$ echo $score
b
[centos@linux-mypc ~]$ read -t5 -n5 password // -n5 옵션 : 다섯 글자 입력 받음.
// -t5 옵션 : 5초 동안 입력안하면 사라짐.
[centos@linux-mypc ~]$
[centos@linux-mypc ~]$ echo $password
abcde
[centos@linux-mypc ~]$
[centos@linux-mypc ~]$ read -t5 -n5 -s password // -s 옵션 : 입력이 안보임.
[centos@linux-mypc ~]$ echo $password
abcde
[centos@linux-mypc ~]$ echo -n "your name: " ; read name
your name: jaewon
3. printf
- 서식 format에 맞춰서 출력할 수 있는데, C언어의 printf 함수와 동일
- printf format <메시지>
%d or %i 숫자
%s 문자열
%f 실수형 숫자
- Example
[centos@linux-mypc ~]$ Name=jaewon
[centos@linux-mypc ~]$ Score=100
[centos@linux-mypc ~]$ today=`date +%Y%m%d`
[centos@linux-mypc ~]$ echo $today
20220308
[centos@linux-mypc ~]$ echo "Today is %s\n" $today
Today is %s\n 20220308
[centos@linux-mypc ~]$ printf "Today is %s\n" $today
Today is 20220308
[centos@linux-mypc ~]$ printf "|%10s|%10s|%10.2f\n" ubuntu seongmi 10
| ubuntu| seongmi| 10.00
# 10 글자 씩 맞춰서 출력. 오른쪽부터 정렬(default)
[centos@linux-mypc ~]$ printf "|%-10s|%-10s|%10.2f\n" ubuntu seongmi 10
|ubuntu |seongmi | 10.00
# 10 글자 씩 맞춰서 출력. 왼쪽부터 정렬
※ 예제
[centos@linux-mypc bin]$ cat input.sh
#!/bin/bash
echo -n "input a directory name: "
read dirname
echo "======================================"
date +%Y-%m-%d
echo "======================================"
du -sh $dirname 2> /dev/null
echo
[centos@linux-mypc bin]$ sudo chmod +x input.sh
[centos@linux-mypc bin]$ input.sh
input a directory name: /etc
======================================
2022-03-08
======================================
19M /etc
※ 예제 2
[centos@linux-mypc bin]$ cat dir-list.sh
#!/bin/bash
echo -n "Input a directory name:"
read $dir
ls -l $dir 1> ~/$(date +%Y-%m).txt
[centos@linux-mypc bin]$ dir-list.sh
Input a directory name:/var
[centos@linux-mypc bin]$ cat ../2022-03.txt
total 40
-rw-rw-r-- 1 centos centos 437 Mar 7 15:39 2022-03-07.txt
-rwxr-xr-x 1 root root 94 Mar 8 10:46 dir-list.sh
-rwxr-xr-x 1 root root 202 Mar 8 09:56 input.sh
-rwxr-xr-x 1 root root 58 Mar 7 15:39 lab.sh
-rwxr-xr-x 1 root root 63 Mar 2 23:35 out.sh
-rwxr-xr-x 1 root root 233 Mar 4 09:52 parm.sh
-rwxrwxr-x 1 centos centos 66 Mar 2 23:18 sample2.sh
-rwxrwxr-x 1 centos centos 66 Mar 2 23:15 sample.sh
-rwxr-xr-x 1 centos centos 74 Mar 7 10:49 tt.sh
-rwxr-xr-x 1 root root 108 Mar 4 10:29 varUsage.sh
Reference
- https://www.youtube.com/watch?v=jzcE4vCg1sU&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=8
'OS > Linux Server' 카테고리의 다른 글
[Shell Programming] 9. Looping (0) | 2022.03.11 |
---|---|
[Shell Programming] 8. Branching (0) | 2022.03.08 |
[Shell Programming] 6. Positional Parameters (0) | 2022.03.07 |
[Shell Programming] 5. Bash shell Script (0) | 2022.03.02 |
[Shell Programming] 4. Bash shell의 Rules(2) (0) | 2022.02.21 |