■ 현재 date, timezone 확인

[user1@centos ~]$ date
Thu Nov 30 19:47:02 EST 2023

[user1@centos ~]$ timedatectl
      Local time: Thu 2023-11-30 19:47:53 EST
  Universal time: Fri 2023-12-01 00:47:53 UTC
        RTC time: Fri 2023-12-01 00:47:51
       Time zone: America/New_York (EST, -0500)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2023-11-05 01:59:59 EDT
                  Sun 2023-11-05 01:00:00 EST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2024-03-10 01:59:59 EST
                  Sun 2024-03-10 03:00:00 EDT

■ timezone 정보 확인
[root@centos ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...

#  페이지 나눠보기
[root@centos ~]# timedatectl list-timezones | more


■ timezone 변경
- 루트계정에서 변경 가능
[root@centos ~]# timedatectl set-timezone "Asia/Seoul"

[root@centos ~]# timedatectl
timedatectl
      Local time: Fri 2023-12-01 09:55:07 KST
  Universal time: Fri 2023-12-01 00:55:07 UTC
        RTC time: Fri 2023-12-01 00:55:05
       Time zone: Asia/Seoul (KST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a





■ cal 달력
[user1@centos ~]$ cal
    December 2023
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

[user1@centos ~]$ cal 2023
>>  1년치 달력보기

[user1@centos ~]$ cal 12 2023
>> 해당 년도의 월 달력보기





■ redirection
화면에 출력되는 결과를 파일로 저장하는 명령어

>> 파일이 없으면 파일을 생성하고 있으면 기존 파일 뒤에 덧붙이겠다.(append)
> 파일 생성하게다. 있으면 그냥 덮어쓰겠다.(write)



[user1@centos ~]$ cal > output_202312
[user1@centos ~]$ cat output_202312
    December 2023
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


[user1@centos ~]$ cal 12 2022 > output_202312
[user1@centos ~]$ cat output_202312
    December 2022
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


[user1@centos ~]$ cal 12 2021 >> output_202312
[user1@centos ~]$ cat output_202312
    December 2022
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

    December 2021
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31





■ wc
파일안의 단어의 갯수 또는 라인수를 출력하는 명령어

[user1@centos ~]$ ls -l > output_ls
[user1@centos ~]$ wc  output_ls
11 92 529 output_ls

11 92 529 output_ls
라인수 단어 수 문자수 파일명

 

-l 라인수를 출력
-w 단어수를 출력
-c 문자수를 출력

 

f 다음(밑)
b 이전(위)



[user1@centos ~]$ wc -l output_ls
11 output_ls
[user1@centos ~]$ wc -w output_ls
92 output_ls
[user1@centos ~]$ wc -c output_ls
529 output_ls





■ grep
파일안에 포함된 특정 단어난 구문을 검색하는 명령어

-i 대소문자 구분하지 않는다.



[user1@centos ~]$ grep 'Asia' timezone_name > asia
> timezone_name 안에서 'Asia' 단어를 찾는다 > asia 파일명으로 덮어쓰기

[user1@centos ~]$ grep 'Seoul' timezone_name
Asia/Seoul

[user1@centos ~]$ grep 'seoul' timezone_name
[user1@centos ~]$

[user1@centos ~]$ grep -i 'seoul' timezone_name
Asia/Seoul





■ cp
파일을 복사하는 명령어

-f 복사될 파일 이름이 이미 존재하는 경우, 덮어쓰기 한다. (기본값)
-i 복사될 파일 이름이 이미 존재하는 경우, 사용자에게 덮어쓰기 여부를 묻는다.
-b 복사될 파일 이름이 이미 존재하는 경우, 백업파일을 생성한다. 
-v 복사하는 내용을 화면에 출력 
-r 기존 디렉터리를 하위 내용을 포함하여 새로운 디렉터리로 복사 
-a 원본 파일의 속성정보까지 모두 복사 



# 현재 디렉터리에서 파일 복사
[user1@centos test1]$ cp ex1.txt ex3.txt
[user1@centos test1]$ ls
ex1.txt  ex2.txt  ex3.txt


# 다른 디렉터리 위치에 파일 복사 (절대경로)
[user1@centos test1]$ cp ex1.txt /home/user1/text2
[user1@centos test1]$ ls /home/user1/text2
/home/user1/text2
[user1@centos test1]$ ls
ex1.txt  ex2.txt  ex3.txt


# 다른 디렉터리 위치에 파일 복사 (상대경로)
[user1@centos test1]$ cp ex2.txt ~/test2
[user1@centos test1]$ ls ~/test2
ex2.txt
[user1@centos test1]$ cat ~/test2/ex2.txt


# 다른 이름으로 복사(하나씩 가능)
[user1@centos test1]$ cp ex2.txt ~/test2/ex_new.txt


# 디렉터리 안에 있는 파일들을 다른 디렉터리에 복사
[user1@centos ~]$ rm text2
[user1@centos ~]$ cp ~/test1/* ~/test3
[user1@centos ~]$ ls ~/test3
ex1.txt  ex2.txt  ex3.txt


# 복사하는 내용을 화면에 출력 -v
[user1@centos ~]$ cp -v /etc/bashrc ~/test2
‘/etc/bashrc’ -> ‘/home/user1/test2/bashrc’
[user1@centos ~]$ ls ~/test2
bashrc  ex2.txt


# 기존 디렉터리를 새로운 디렉터리로 복사 -r
[user1@centos ~]$ cp -rv ~/test1 ~/test4
‘/home/user1/test1’ -> ‘/home/user1/test4’
‘/home/user1/test1/ex1.txt’ -> ‘/home/user1/test4/ex1.txt’
‘/home/user1/test1/ex2.txt’ -> ‘/home/user1/test4/ex2.txt’
‘/home/user1/test1/ex3.txt’ -> ‘/home/user1/test4/ex3.txt’

또는
[user1@centos ~]$ cp -r -v ~/test1 ~/test4
[user1@centos ~]$ ls ~/test4/test1
ex1.txt  ex2.txt  ex3.txt


# 복사될 파일 이름이 이미 존재하는 경우, 사용자에게 덮어쓰기 여부를 문는 옵션 -i
[user1@centos test2]$ ls ~/test1/ex1.txt ~/test2/ex1.txt
/home/user1/test1/ex1.txt  /home/user1/test2/ex1.txt
>>> 동일한 파일이 있는지 확인

[user1@centos test2]$ cp ~/test1/ex1.txt ~/test2
>>> 덮어쓰기

[user1@centos test2]$ cp -i ~/test1/ex1.txt ~/test2
cp: overwrite ‘/home/user1/test2/ex1.txt’? 


# 복사될 파일 이름이 이미 존재하는 경우, 백업파일을 생성한다. -b
[user1@centos test2]$ cp -bv ~/test1/ex1.txt ~/test2
‘/home/user1/test1/ex1.txt’ -> ‘/home/user1/test2/ex1.txt’ (backup: ‘/home/user1/test2/ex1.txt~’)
[user1@centos test2]$ ls ~/test2
bashrc  ex1.txt  ex1.txt~  ex2.txt


# 복사될 파일 이름이 이미 존재하는 경우, 덮어쓰기 한다. (기본값)
[user1@centos test2]$ cp -fv ~/test1/ex1.txt ~/test2
‘/home/user1/test1/ex1.txt’ -> ‘/home/user1/test2/ex1.txt’


# 원본 파일의 속성정보까지 모두 복사 -a
[user1@centos ~]$ cp -iv ~/test1/ex1.txt ~/test2/ex_old.txt
‘/home/user1/test1/ex1.txt’ -> ‘/home/user1/test2/ex_old.txt’

[user1@centos ~]$ ls -l ~/test1/ex1.txt ~/test2/ex_old.txt
-rw-rw-r--. 1 user1 user1 29 Dec  1 11:05 /home/user1/test1/ex1.txt
-rw-rw-r--. 1 user1 user1 29 Dec  1 11:58 /home/user1/test2/ex_old.txt

[user1@centos ~]$ cp -av ~/test1/ex1.txt ~/test2/ex_old_2.txt
‘/home/user1/test1/ex1.txt’ -> ‘/home/user1/test2/ex_old_2.txt’

[user1@centos ~]$ ls -l ~/test1/ex1.txt ~/test2/ex_old_2.txt
-rw-rw-r--. 1 user1 user1 29 Dec  1 11:05 /home/user1/test1/ex1.txt
-rw-rw-r--. 1 user1 user1 29 Dec  1 11:05 /home/user1/test2/ex_old_2.txt



[user1@centos ~]$ date '+%Y%m%d %H%M%S %s %I %p %a %A %F %T'
20231201 121103 1701400263 12 PM Fri Friday 2023-12-01 12:11:03

# backup 디렉터리를 생성해서 복사
[user1@centos ~]$ cp -rav ~/test1 backup$(date '+_%Y%m%d')
‘/home/user1/test1’ -> ‘backup_20231201’
‘/home/user1/test1/ex1.txt’ -> ‘backup_20231201/ex1.txt’
‘/home/user1/test1/ex2.txt’ -> ‘backup_20231201/ex2.txt’
‘/home/user1/test1/ex3.txt’ -> ‘backup_20231201/ex3.txt’

또는
[user1@centos ~]$ cp -rav ~/test1  ~/backup$(date '+_ %Y%m%d %H%M%S ')





■ mv (move)
파일을 이동하는 명령어

-i 이동될 파일이 존재하면 덮어쓰기 여부를 묻는다.
-b 이동될 파일이 존재하면 백업파일을 생성한다.
-f 이동될 파일이 존재하면 덮어쓰기한다.
-v 이동 진행 상태를 출력한다.



[user1@centos test1]$ ls
ex1.txt  ex2.txt
[user1@centos ~]$ mkdir test2
[user1@centos ~]$ mv ~/test1/ex1.txt ~/test2
[user1@centos ~]$ ls ~/test1
ex2.txt
[user1@centos ~]$ ls ~/test2
ex1.txt


[user1@centos ~]$ cd test2
[user1@centos test2]$ cal > ex2.txt
[user1@centos test2]$ ls
ex1.txt  ex2.txt

[user1@centos ~]$ mv -i ~/test1/ex2.txt ~/test2
mv: overwrite ‘/home/user1/test2/ex2.txt’? n

[user1@centos ~]$ mv -b ~/test1/ex2.txt ~/test2
[user1@centos ~]$ ls ~/test1 ~/test2
/home/user1/test1:

/home/user1/test2:
ex1.txt  ex2.txt  ex2.txt~


# 디렉터리 내 파일 모두 이동
[user1@centos ~]$ mv -v ~/test2/* ~/test1
‘/home/user1/test2/ex1.txt’ -> ‘/home/user1/test1/ex1.txt’
‘/home/user1/test2/ex2.txt’ -> ‘/home/user1/test1/ex2.txt’
‘/home/user1/test2/ex2.txt~’ -> ‘/home/user1/test1/ex2.txt~’
[user1@centos ~]$ ls ~/test1 ~/test2
/home/user1/test1:
ex1.txt  ex2.txt  ex2.txt~

/home/user1/test2:


# 디렉터리 이동
[user1@centos ~]$ mv ~/test1 ~/test2


# 디렉터리를 현재 위치로 이동
[user1@centos ~]$ mv ~/test2/test1 .


# 디렉터리를 사용자 홈디렉터리로 이동
[user1@centos ~]$ mv ~/test2/test1 ~


# 자기 위치에서 이름바꾸기
[user1@centos test1]$ mv ex1.txt date.txt





■ rename
파일 이름 변경
하나이상의 파일이름을 일괄변경할 때 사용하는 명령어

rename 변경전파일명 변경후파일명 대상파일

[user1@centos test1]$ ls
date.txt  ex2.txt  ex2.txt~
[user1@centos test1]$ rename date.txt ex1.txt date.txt
[user1@centos test1]$ ls
ex1.txt  ex2.txt  ex2.txt~


# 파일명 일괄 변경
[user1@centos test1]$ ls
ex1  ex2  ex3
[user1@centos test1]$ rename ex ex0 ex?
[user1@centos test1]$ ls
ex01  ex02  ex03

[user1@centos test1]$ rename ex0 ex ex??
[user1@centos test1]$ ls
ex1  ex2  ex3


? : 한글자
* : 여러글자





■ vi (visual editor)
문서 편집기

1. 명령 모드(command mode)
vi의 기본모드이며 :(콜론)을 이용하면 명령모드를 수행할 수 있다. 

2. 입력 모드(edit mode)
기본모드에서 바로 단축키를 눌러서 수행
대소문자 주의. 명령어 사용 후 esc 습관화하자

[user1@centos ~]$ cp -v /etc/passwd ~/test1
‘/etc/passwd’ -> ‘/home/user1/test1/passwd’

[user1@centos test1]$ vi passwd


# 이동 명령어

h 왼쪽으로 이동
j 아래로 이동
k 위로 이동
l 오른쪽으로 이동
H 화면 맨 위로 이동
M 화면 중간으로 이동
L 화면 맨 아래로 이동
G 문서의 맨 아래
gg 문서의 맨 위
10G 10번행로 이동 (행이동)
:7 7번행으로 이동 (행이동)
^ 현재 행 맨 앞 커서 이동
$ 현재 행 맨 뒤 커서 이동
+ 커서를 다음행 처음으로 이동
- 커서를 앞 행의 처음으로 이동
w 커서를 다음 단어 첫글자로 이동
b 커서를 앞 단어 첫글자로 이동
e 커서를 다음 단어 마지막 글자로 이동
:set nu 라인번호 표시
:set nonu 라인번호 해제
/문자 문자 검색
    n 검색된 다음 문자로 이동
    shift+n 검색된 이전 문자로 이동
    :noh 검색 문자열 블록 처리 해지



# 입력 명령어

i 커서 왼쪽부터 입력
a 커서의 오른쪽부터 입력
I 커서의 줄 맨 앞에서부터 입력
A 커서의 줄 맨 뒤에서부터 입력
o 커서의 다음줄부터 입력
O 커서의 윗줄에 입력
s 커서 위치의 한글자를 지우고 입력
S 커서 위치의 한 줄을 지우고 입력
cw 커서 위치의 단어를 지우고 입력



# 삭제 명령어

x 철자 하나 삭제 (del)
dd 한 행 삭제
dw 커서에 있는 단어 삭제
:1d 1번행 삭제
:1,2d 1 ~ 2번행 삭제
D 커서 오른쪽 행 삭제



# 취소 명령어

u 방금 수행한 작업 취소, 되돌리기 (ctr+z)



# 복사 / 붙여넣기

yy 커서의 행 복사
5yy 커서 위치 ~ 5행 만큼 복사
yG 현재행부터 파일끝까지 복사
p 복사한 내용을 커서 다음행에 붙여넣기
P 복사한 내용을 커서 이전행에 붙여넣기
:1,2 co 3 1 ~ 2번행을 복사해서 3번행 다음행에 붙여넣기
:1,2 m 3 1 ~ 2번행을 3번행 다음행에 붙여넣기



# 문자열 검색해서 수정

:s/기존문자/변경할문자 커서가 있는 행에서 첫번째로 나오는 기존문자를 변경할 문자로 변경
:s/기존문자/변경할문자/g 커서가 있는 행의 기존문자를 변경할 문자로 모두 변경
:%s/기존문자/변경할문자/g 문서 전체에서 기존문자를 변경할 문자로 모두 변경



#  파일 저장 및 종료

:q! 저장하지 않고 vi 종료
:wq 저장하고 vi 종료
:w 저장
:w filename filename으로 저장한 후 계속 편집 (다른이름으로 저장)
:wq filename filename으로 저장하고 vi 종료

 




date
timedatectl
cal
>>
>
wc
grep
cp
mv 
rename
vi