기본 콘텐츠로 건너뛰기

8. cp

안녕하세요, MJ 입니다. 리눅스 파일복사 명령어 cp 에 대해 알아보겠습니다. 리눅스 cp 명령어는 윈도우 copy 명령어와 같은 기능을 합니다. 파일이나, 디렉토리를 복사 할 때 사용됩니다. cp 명령어의 도움말을 확인 해 보겠습니다. 펼치기/접기 Usage: cp [OPTION]... [-T] SOURCE DEST   or:  cp [OPTION]... SOURCE... DIRECTORY   or:  cp [OPTION]... -t DIRECTORY SOURCE... Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too.   -a, --archive                same as -dR --preserve=all       --attributes-only        don't copy the file data, just the attributes       --backup[=CONTROL]...

4. cat

안녕하세요, MJ 입니다.

cat 명령어는 일반 파일을 터미널상에 출력하는 명령어 입니다.

cat 명령어에 대해 알아보겠습니다.


 

cat 명령어의 도움말을 먼저 확인하고 자주 사용되는 옵션과  cat 명령어 사용법을 설명하겠습니다.

도움말

펼치기/접기

옵션 설명

-A: -vET 옵션과 같습니다.
-b: 빈줄에는 줄번호를 매기지 않습니다.
-e: -vE 옵션과 같습니다.
-E: 라인의 끝을 $ 문자로 표시합니다.
-n: 줄번호를 표시합니다.
-s: 반복적 인 빈 출력 라인을 억제합니다.
-t: -vT 옵션과 같습니다.
-T: 탭 문자를 ^T  로 대체하여 표시합니다.
-v: 엔터와 탭 문자를 보이도록 하지 않고, 라인의 끝에 윈도우의 줄바꿈문자(캐리지리턴:CR)
     를 보여줍니다.

캐리지 리턴 설명

키보드의 'Enter' 키에 그림을 보면,
아래로 가다가 왼쪽으로 꺾여있는 화살표가 그려져 있습니다.

엔터를 누르게 되면 아래로 가는 동작을 한 뒤에, 왼쪽으로 가는 동작을 한다는 뜻 입니다.
이는 윈도우에서의 동작으로 엔터 한번 입력에 두가지의 동작을 하게 됩니다.

하지만 리눅스에서는 엔터가 아래로 한번만 동작합니다.
리눅스 에서도 윈도우와 같이 아래로 간 다음 왼쪽으로 가면 문제가 없겠지만,
리눅스와 윈도우에서는 메모리에 데이터를 저장하는 방식이 달라, 윈도우와 리눅스는
그 순서가 바뀌게 됩니다. 리눅스에서는 왼쪽으로 먼저 간 다음, 아래로 가도록 동작하게 되어
내가 입력 한 모든 문자가 모두 지워지고 아래로 가게 됩니다.
(리눅스-리틀엔디안,윈도우-빅엔디안 차이)

그래서 텍스트 파일을 vi 로 열어보거나 하면 잘 보이긴 하지만, cat 이나, 스크립트 작성에서
파일을 실행 할때에는 작성자가 원하는대로 동작하지 못하게 되어, 리눅스에서는 이 줄바꿈 문자에 대해 신경을 쓰지 않을 수 없습니다.

그리하여 리눅스에서는 줄바꿈 문자를 LF (Line Feed)
윈도우에서의 줄바꿈문자는 CRLF 로 표현 합니다.
(Carriage Return)


모든 옵션에 대해 실습을 하지는 않지만, 다음 내용에 대해 실습을 하신다면 리눅스 엔지니어로 일 하시는 중에도 전혀 불편함 없이 사용 하실 수 있을것이라고 생각됩니다.

 

시작합니다.

 

1. 리눅스 파일 출력

cat 명령어 뒤에 파일 이름을 주면 파일의 내용을 출력할 수 있습니다.

[run-linux cat]$ ls -l
total 12
-rw-r--r-- 1 root root 18 Sep 24 15:11 A_file
-rw-r--r-- 1 root root 18 Sep 24 15:11 B_file
-rw-r--r-- 1 root root 18 Sep 24 15:11 C_file
[run-linux cat]$ cat A_file
A_file: testprint
[run-linux cat]$ cat A_file B_file
A_file: testprint
B_file: testprint
[run-linux cat]$ cat A_file B_file C_file
A_file: testprint
B_file: testprint
C_file: testprint
 
 

2. 각 라인 번호 메기기

    2-1) "-n" 옵션을 사용하여 라인 번호를 출력합니다.
[run-linux cat]$ cat A_file
line 1
line 2

line 5
line 6
[run-linux cat]$ cat -n A_file
     1  line 1
     2  line 2
     3
     4
     5  line 5
     6  line 6
 

    2-2) "-b" 옵션을 사용하여, 비어있는 라인에는 번호를 매기지 않습니다.

[run-linux cat]$ cat -b A_file
     1  line 1
     2  line 2

     3  line 5
     4  line 6

 
 

3. 파일 내용 출력 시 라인의 끝 확인

한 줄의 끝을 리눅스에서는 $ 기호로 표시합니다.
중요한 설정 파일을 작성할 때, 끝에 공백이 포함되면 안될 경우 이를 체크할 때에 용이합니다.
"-E" 옵션을 사용합니다.

[run-linux cat]$ cat A_file
username1: user_01
password1: pass01

username2:
user_02 password2: pass02
username3:
user_03 password3: pass03
username4:
user_04 password4: pass04 [run-linux cat]$ cat -E A_file username1: user_01$ password1: pass01$
username2: user_02$ password2: pass02 $
username3:
user_03$ password3: pass03$
username4:
user_04 $ password4: pass04$
: 극단적인 예로, 위 내용으로 계정이 설정되어있다면,
user_02 와 user_04 는 의도 한 공백 입력이 아니었다면, 로그인에 실패하게 될 것입니다.
 

 

4. 탭 대신 탭 기호를 출력
파일의 내용에 탭(TAB) 문자가 포함된 경우, 이것이 공백을 여러번 입력 한 것인지, 탭을 입력한것인지 알 수 없어 확인하기위해 탭 문자를 특수 기호로 표시되도록 할 수 있습니다.
: 탭 문자 대신 표시되는 특수기호는 컨트롤 i(대문자) 처럼 생겼습니다. →  ^I
대문자 T 옵션을 사용합니다.

[run-linux cat]$ ls -l
total 4
-rw-r--r-- 1 root root 31 Sep 24 14:58 A_file
[run-linux cat]$ cat A_file
hello   World~!
Nice to meet you
[run-linux cat]$ cat -T A_file
hello^IWorld~!
Nice to^Imeet you

5. 연속된 빈 라인 출력 안함
빈 라인이 두 번 이상 연속될 때, 하나의 빈 라인만 출력되게 만들기 위해 "-s" 옵션을 사용합니다.
: 다음 예시에서는 빈 라인의 수를 쉽게 파악할 수 있도록 -n 옵션을 함께 사용하여 줄번호를 표시하였습니다.

[run-linux cat]$ ls -l
total 4
-rw-r--r-- 1 root root 58 Sep 24 14:54 A_file
[run-linux cat]$ cat -n A_file
     1  line number 1
     2  line number 2
     3
     4
     5  line number 5
     6  line number 6
[run-linux cat]$ cat -n -s A_file
     1  line number 1
     2  line number 2
     3
     4  line number 5
     5  line number 6 
 

6. 출력 리다이렉션(>)을 사용하여 파일의 내용을 복사하듯 저장

[run-linux cat]$ ls -l
total 4
-rw-r--r-- 1 root root 18 Sep 24 14:49 A_file
[run-linux cat]$ cat A_file
A_file: testprint
[run-linux cat]$ cat A_file > A_file_backup
[run-linux cat]$ ls -l
total 8
-rw-r--r-- 1 root root 18 Sep 24 14:49 A_file
-rw-r--r-- 1 root root 18 Sep 24 14:52 A_file_backup
[run-linux cat]$ cat A_file
A_file: testprint
[run-linux cat]$ cat A_file_backup
A_file: testprint


7. 여러 개의 파일을 리다이렉션을 이용하여 하나의 파일로 저장

[run-linux cat]$ ll
total 12
-rw-r--r-- 1 root root 18 Sep 24 14:49 A_file
-rw-r--r-- 1 root root 18 Sep 24 14:49 B_file
-rw-r--r-- 1 root root 18 Sep 24 14:49 C_file
[run-linux cat]$ cat A_file
A_file: testprint
[run-linux cat]$ cat B_file
B_file: testprint
[run-linux cat]$ cat C_file
C_file: testprint
[run-linux cat]$ cat A_file B_file C_file > result_file
[run-linux cat]$ cat result_file
A_file: testprint
B_file: testprint
C_file: testprint

8. 리다이렉션(>>) 두개를 사용하여 파일 뒤에 내용추가

[run-linux cat]$ ls -l
total 12
-rw-r--r-- 1 root root 18 Sep 24 14:45 A_file
-rw-r--r-- 1 root root 18 Sep 24 14:45 B_file
-rw-r--r-- 1 root root 18 Sep 24 14:45 C_file
[run-linux cat]$ cat A_file
A_file: testprint
[run-linux cat]$ cat B_file
B_file: testprint
[run-linux cat]$ cat C_file
C_file: testprint
[run-linux cat]$ cat A_file > result_file
[run-linux cat]$ cat B_file >> result_file
[run-linux cat]$ cat C_file >> result_file
[run-linux cat]$ cat result_file
A_file: testprint
B_file: testprint
C_file: testprint

 

 

9. 파일 사이에 내용 추가하기.

cat 명령 다음에 파일 이름 대신 하이픈(-) 을 사용하면 표준 입력을 통해 입력받은 내용을 출력할 수 있다고 설명했었습니다. 이 기능을 사용하면, 여러 파일을 합칠 때 파일 사이에 사용자가 원하는 임의의 내용을 추가할 수 있습니다.

[run-linux cat]# ls -l
total 16
-rw-r--r-- 1 root root 18 Sep 24 14:36 A_file
-rw-r--r-- 1 root root 18 Sep 24 14:36 B_file
-rw-r--r-- 1 root root 18 Sep 24 14:36 C_file
[run-linux cat]# cat A_file
A_file: testprint
[run-linux cat]# cat B_file
B_file: testprint
[run-linux cat]# cat C_file
C_file: testprint
[run-linux cat]# cat A_file B_file C_file - > result_file
##### THE END ##### -> 하이픈(-) 위치에 추가될 내용을 입력 '[Ctrl + D] 입력'
[run-linux cat]# ls -l
total 16
-rw-r--r-- 1 root root 18 Sep 24 14:36 A_file
-rw-r--r-- 1 root root 18 Sep 24 14:36 B_file
-rw-r--r-- 1 root root 18 Sep 24 14:36 C_file
-rw-r--r-- 1 root root 74 Sep 24 14:37 result_file
[run-linux cat]# cat result_file
A_file: testprint
B_file: testprint
C_file: testprint
##### THE END #####  <<-- 내가 입력 한 문자가 파일에 저장된 것을 확인.
[run-linux cat]#
 

cat 명령어에 대해 알아보았습니다.


문의사항은 댓글을 남겨주시면 성심껏 답변을 드리도록 하겠습니다.


감사합니다.

댓글

가장 많이 본 글

2. 버추얼박스(2/2): VM생성

안녕하세요, MJ입니다.   VM 생성 후 , OS 설치를 해야 VM 을 사용 해 볼 수 있을텐데 ,   현재 서버용 OS 로 가장 많이 사용되는 Red Hat 리눅스로 하고싶지만 , 라이선스 문제로 커뮤니티 버전의 OS 중에 Red Hat 계열의 Rocky Linux 로 제가 마음대로 결정 해 보았습니다 . ( 버전은 현재 기준으로 최신 9.4 버전 )   현재는 OS 를 설치 하기위한 미디어가 없는줄로 압니다 . 설치 미디어를 다운로드 하는데에 시간이 걸리기때문에 , 설치미디어 다운로드를 먼저 걸어놓고 , VM 생성을 하겠습니다 .   1. Rocky Linux – 9.4 iso 이미지 다운로드 URL: https://rockylinux.org/download   ( " DVD ISO " 버튼을 클릭하면 다운로드가 시작됩니다 . )   2 . VM 생성 2-1) 기본정보입력 버추얼 박스 프로그램 실행 . 새로만들기 버튼 클릭 생성 할 VM 의 이름을 작성 iso 이미지를 다운로드 중이므로 아직 선택하지 않고 넘어갑니다 . OS 종류로 "Linux" 를 선택 OS 배포판으로 "RedHat 9.x (64bit)" 을 선택 ( Rocky Linux 가 래드햇계열인데 , 목록에 Rocky Linux 가 없어서 ) 다음 버튼 클릭   iso 이미지를 넣고 시작하게 되면 , 무인 설치 건너뛰기 옆 체크박스에 체그가 안 된 상태가 확인되는데 , 무인설치를 하지 않도록 체크를 해 주세요 . ( 설치 과정을 봐야하기때문에 무인설치가 안되면 좋겠습니다 .)   2-2) 스펙 : 메모리 용량 , CPU 개수 , BootMode("Legacy"/E...

1. 버추얼박스(1/2): 설치

안녕하세요, MJ입니다. 나의 환경에서 리눅스 머신을 별도로 구동시키고 , 테스트 해 보기위해 가상환경이 필요하게 됩니다 . 가상환경이라고 해서 거창한것처럼 보일 수 있지만 , 가상환경은 가상의 머신을 구동 시킬 수 있는 환경으로 버추얼 박스 , VMWare, Hyper-V, QEMU 정도가 알려진 가상환경 에뮬레이터 라고 볼 수 있겠습니다 .   이 중에서 완전 무료로 사용할 수 있는 것은 Hyper-V 와 QEMU 이지만 , VirtualBox 역시 ExtensionPack 을 설치하지 않는다면 상업용으로도 무료로 사용할 수 있습니다. (비 상업적인 용도로는 ExtensionPack을 설치해도 무료입니다) 조작 및 사용방법이 간단한 VirtualBox 를 이용해 가상 환경 구성을 위한 방법에 대해 소개 하겠습니다 .     1) 버추얼박스 다운로드 - 사이트 : https://virtualbox.org 사이트 접속 후 왼쪽 Downloads 클릭 Windows hosts 클릭 다운로드 된 프로그램을 실행 .   2) 버추얼박스 설치 실패 , 추가 프로그램 확인   버추얼박스 설치 시도 시 "microsoft visual c++ 2019 redistributable package being installed first" 이런 메시지가 확인되었고 , 버추얼박스 설치는 되지 않았습니다 . 구글에서 "microsoft visual c++ 2019 redistributable package being installed first" 이 메시지를 검색해서 첫번째로 확인되는 마이크로소프트 사이트 방문 . 버추얼박스 설치 실패 시 확인된 Redistributable 프로그램을 찾아가 내 OS 의 아키텍처와 일치...

6. OS 설치 후 확인(Rocky Linux - 9.4 )

안녕하세요 MJ 입니다 .   지난번 설치 했던 OS (Rocky Linux - 9.4) 의 부팅 된 화면 입니다 .   번 시간에는 OS 설치 시 설정 했던 내용들에 대해서 하나씩 잘 설정이 적용 되었는지 확인을 해 보도록 하겠습니다 .   [ 설치 시 설정 한 메뉴 ] root 계정 설정 일반유저 생성 타임존 패키지 꾸러미 선택 파티셔닝 네트워크     설정확인 (1/6): root 계정 설정 지정한 패스워드로 로그인을 시도 해 봅니다 . 로그인이 잘 됩니다 . ( 패스워드 설정 확인 )   설정확인 (2/6): 일반유저 생성 로그인 확인 일반유저도 로그인이 잘 됩니다 . ( 패스워드 설정 확인 )   관리자 권한 추가그룹으로 wheel 이 확인됩니다 . ( 관리자 권한 확인 ) : gid 에 표시된 그룹과 , groups 에 표시 된 그룹은 다른 것 입니다 . 계정은 소유자 아이디와 그룹 아이디를 필수로 가져야하고 , 다른 그룹을 가지는 것은 추가그룹 이라고 합니다 . uid 는 여러 개 가질 수 없지만 , 그룹은 여러 개를 가질 수 있습니다 .   Red Hat 계열의 리눅스 기준으로 , ~6 버전까지는 500 번이 일반 유저가 가지는   UID/GID 의 시작이고 , 7~ 버전부터는 1000 번이 시작되며,   기본 관리자 그룹으로 wheel 이 생성 및 설정 됩니다.     설정확인 (3/6): 타임존   설정 한 대로 , 한국시 (Asia/Seoul) 확인이 확인됩니다 .   설정확인 (4/6): 패키지 꾸러미 선택 선택 했던 ...