본문 바로가기
Cloud Solutions Architect

3일차 - CentOS7_XFCE, Linux (복사, 이동, 생성, 변경, 삭제, 링크, 검색, vi 편집, 접근 권한, 파일)

by 콛웅이 2023. 3. 20.

1. CentOS7_XFCE

 

Oracle VM VirtualBox를 실행 -> CentOS7 선택 -> 설정 클릭

지난 시간에 만들었던 CentOS7의 이름을 CentOS7_XFCE로 바꾼다.


 

네트워크 -> 어댑터 1 -> 네트워크 어댑터 사용하기 체크 -> NAT 으로 설정 -> 확인 클릭


CentOS7_XFCE를 실행시켜 Username과 Password를 입력 후 터미널을 실행시켜 ip a 명령어를 입력한다.

 

 

NAT의 ip를 확인할 수 있다.


 

 

ping google.com을 입력하여 구글 서버에 패킷을 보내 네트워크가 제대로 작동하는지 네트워크 연결 상태를 확인한다.


 

 

CentOS7_XFCE의 설정에 가서 네트워크의 어댑터 1을 호스트 전용 어댑터로 변경한다.


 

 

reboot로 재시작을 하여 ip a를 입력한 후 ip 주소를 확인한다.


 

 

명령 프롬프트로 이동해서 ip 주소의 ping을 입력하여 네트워크 연결이 잘 되는지 확인한다.

 


 

 

SSH 프로토콜을 사용하여 ip 주소에 root 계정으로 접속한다.

이후 Password를 입력하여 로그인을 한다.

구글 서버로 ping을 입력해 네트워크 서버를 확인하면 연결이 되지 않는다는 것을 확인할 수 있다.


 

인터넷 연결을 하기 위해 추가로 NAT을 설정한다.

 

XFCE에 설정으로 가서 네트워크에 어댑터 2를 추가하여 NAT를 추가한다.

 


 

 

명령 프롬프트로 가서 연결을 해제한 후 다시 ssh로 ip 주소로 연결한다.

구글 서버로 ping을 입력하여 네트워크 연결이 정상적으로 실행되는 것을 확인한다.


 

 

CentOS7_XFCE의 터미널에서 /usr/bin/google-chrome을 입력한 후 설정한 비밀번호를 입력한다.

 


 

 

인터넷이 정상적으로 되는 것을 확인한다.

 


 

2. 리눅스 명령어

2.1 복사

cp fileA fileAA  # fileA 파일을 fileAA 파일로 복사

- 파일을 복사하기 위해서는 cp를 입력하여 복사할 파일 이름과 복사하여 붙여 넣을 파일 이름을 입력한다.

 

cp fileA fileAA dirC  # fileA, fileAA 파일을 dirC 디렉토리에 복사

- 현재 디렉터리에 있는 fileA와 fileAA를 디렉터리 dirC에 복사한다.

 

 

cp -i fileA fileAA

- fileA를 fileAA로 복사한다.

- 만약 fileAA가 이미 존재하면 덮어쓰기 여부를 묻는다. y 또는 n을 입력

 

 

cp -r dirC dirCC

- dirc 디렉터리의 모든 파일과 하위 디렉터리들을 dirCC 디렉터리에 복사한다.

- dirCC가 존재하면 dirC의 내용이 dirCC안에 복사된다.

- dirCC가 존재하지 않으면 dirCC를 생성하여 dirC 내용을 안에 복사된다.

 

 


2.2 이동

mv fileD dirC

 

- mv는 파일 또는 디렉터리를 이동하기 위해 사용한다.

- fileD 파일을 dirC 디렉터리에 이동한다.

 

 

mv dirCC dirC

- dirCC 디렉터리를 dirC 디렉터리로 이동한다.

 

 

 


2.3 생성

touch dirC/touch_file

 

- touch는 파일의 수정 시간을 현재 시간으로 갱신하거나 파일이 존재하지 않으면 새로운 빈 파일을 생성한다.

- dirC 디렉터리 안에 touch_file이라는 빈 파일을 생성한다.

 

 

 

- touch_file은 빈 파일이기 때문에 cat을 사용해도 내용이 없다는 것을 알 수 있다.

- echo를 사용해서 문자열을 입력한 후 cat을 사용하면 내용을 확인할 수 있다.

 


touch makeA makeB makeC

- touch를 사용해서 여러 개의 파일을 생성할 수 있다.

 

 

mkdir dirX

- mkdir은 디렉터리를 생성하는 명령어이다.

 

mkdir dirY/dirZ

- dirY 디렉터리 안에 dirZ 디렉터리를 생성한다.

- dirY가 존재하지 않으면 에러를 출력한다.

 

 

mkdir -p dirY/dirZ

- 오류를 피하기 위해서 -p 옵션을 추가한다.

- dirY를 생성하여 dirY안에 dirZ를 생성한다.

 

 

mkdir dirU dirV

- dirU 디렉터리와 dirV 디렉터리를 생성한다.

 

 


2.4 변경

mv fileAA fileF
mv dirU dirD

- mv는 파일 이름을 변경하는 명령어이다.

- 파일 fileAA를 fileF라는 이름으로 변경한다.

- 디렉터리 dirU를 dirD라는 이름으로 변경한다.

 

 


2.5 삭제

 

rm makeA  # makeA 삭제
rm makeA makeB  # makeA makeB 삭제

- rm은 파일 또는 디렉터리를 삭제한다.

 

 

- 삭제할 파일이 존재하면 삭제를 할 것인지 물어보고 삭제를 하려면 y를 입력한다.

- 삭제할 파일이 존재하지 않으면 현재 디렉터리에 존재하지 않는다는 메시지가 출력된다.

 


 

rmdir dirD

 

- rmdir은 디렉터리를 삭제하는 명령어이다.

- 단, 삭제할 디렉터리가 비어있어야만 가능하다.

- 삭제할 디렉터리디렉터리 안에 파일 또는 디렉터리가 있다면 오류 메시지를 출력한다.

 

 

rm -r dirC
rm -rf dirC

 

- 삭제할 디렉터리 안에 하위 파일 및 폴더가 있으면 rm -r 명령어를 입력해서 삭제한다.

- 하위 파일과 폴더 또한 삭제하기 위해 삭제할 것이냐고 물어보면 y를 입력한다.

- rm -rf는 삭제할 디렉터리와 하위 파일 및 폴더를 강제로 삭제한다.

- rm -r과 차이점은 삭제할 것인지 물어보지 않는다.

 

 


2.6  링크

 

ln fileA hardA

 

- ln은 link를 의미하고 파일이나 디렉터리에 대한 링크를 생성하는 데 사용한다.

- 위 명령어는 fileA에 대한 하드 링크를 hardA라는 이름의 새로운 파일로 생성한다.

- 하드 링크는 원본 파일과 링크된 파일이 같은 inode 번호를 가지게 된다.

- 즉, 원본 파일과 링크된 파일은 동일한 파일의 내용을 공유한다.

 

 

- fileA 파일에 hello를 입력하고 hardA 파일을 출력하면 hello가 출력된다.

- hardA 파일에 world를 입력하고 fileA 파일을 출력하면 hello world가 출력된다.

 


 

ln -s fileA symbolA

 

- ln -s를 사용하여 fileA 파일에 대한 심볼릭 링크를 symbolA라는 이름의 새로운 파일로 생성한다.

- 심볼릭 링크는 원본 파일과 링크된 파일은 다른 inode 번호를 가지게 된다.

- 원본 파일의 경로를 가리키는 심볼릭 링크 파일이 생성된다.

 

 

- fileA와 symbolA의 inode가 다르다는 것을 알 수 있다.

 

 

- fileA는 이전에 입력했던 hello world가 있다.

- fileA에 aloha를 입력하면 symbolA에 aloha가 출력되는 것을 알 수 있다.

 

 

- fileA를 삭제했지만 심볼릭 링크로 연결된 symbolA가 있다는 것을 확인한다.

 

 

- symbolA를 출력하면 아무런 내용이 없다.

- 삭제된 fileA에 aloha 내용을 입력하여 symbolA를 출력하면 aloha가 출력되는 것을 알 수 있다.

 

 

 

- symbolA를 삭제하고 ls를 입력해 파일 목록을 확인하면 symbolA는 없어지고 fileA가 생성된 것을 확인한다.

- fileA를 출력하면 fileA에 입력한 aloha가 있다는 것을 알 수 있다.

 


2.7 내용 검색

 

grep 'root' /etc/passwd  # /etc/passwd 파일에서 root라는 문자열을 포함하는 모든 행을 출력한다.
grep -n 'root' /etc/passwd  # /etc/passwd 파일에서 root라는 문자열을 포함하는 모든 행을 출력하면서 행의 번호도 함께 출력
grep -v 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하지 않는 모든 행을 출력한다.
grep -l 'root' /etc/*  # /etc 디렉토리에 있는 root라는 문자열을 포함하는 파일의 이름 출력
grep -c 'root' /etc/passwd # /etc/passwd 파일에서 root라는 문자열을 포함하는 행의 수를 출력

 

- grep은 파일 내에서 특정 문자열을 찾는 데 사용된다.

 

 

 

 

 

 


 

useradd  johnlee
useradd  john
grep 'john' /etc/passwd

 

- johnlee와 john이라는 새로운 사용자 계정을 생성한다.

- /etc/passwd 파일에서 john이라는 문자열을 포함하는 모든 행을 출력한다.

 

grep 'login$' /etc/passwd

 

- /etc/passwd 파일에서 끝이 login으로 끝나는 모든 행을 출력한다.

 

 

grep 'j..n' /etc/passwd /etc/passwd  
# 파일에서 j로 시작하고 n으로 끝나는 두 글자의 임의의 문자를 포함한 4글자 단어를 가진 행을 출력한다.

grep -w  'john' /etc/passwd
# /etc/passwd 파일에서 john 이라는 정확한 단어를 찾아 출력한다.

grep '^john' /etc/passwd
# /etc/passwd 파일에서 john으로 시작하는 모든 행을 찾아 출력한다

 

 

 


 

egrep 'N(o|e)+' /etc/passwd

 

- egrep은 grep에서 확장 정규 표현식을 사용하도록 설정하는 옵션이다.

- N(o|e)+은 N 다음에 o 또는 e가 한 개 이상 반복되는 문자열을 의미한다.

 

 

egrep '(root|john):x' /etc/passwd

 

- (root|john):x은 root 또는 john 다음에 :x가 오는 문자열을 의미한다.

- 위 명령어는 /etc/passwd 파일에서 root 또는 john 사용자 계정 정보를 찾아 출력하는 명령어이다.

 

 

egrep -c '(svm|vmx)' /proc/cpuinfo

 

- /proc/cpuinfo 파일은 현재 시스템에서 실행 중인 CPU에 대한 정보를 포함하는 가상 파일이다.

- -c는 행의 개수를 세는 것이다.

- 위 명령어는 현재 시스템의 CPU에서 SVM 또는 VMX 확장 기술을 지원하는 코어의 수를 계산한다.

 


2.8 파일 검색 

find / -name hosts  # 루트부터 시작해서 hosts라는 이름을 가진 모든 파일을 찾는다.
find / -name "hosts*"  # hosts라는 이름으로 시작하는 모든 파일을 찾는다.

 

- find는 파일을 찾는 명령어이다. 

 

 

find / -name hosts -type f  
# hosts라는 이름을 가진 파일 중 파일 타입이 일반 파일인 것만 찾는다.

find / -name hosts -type d
# hosts라는 이름을 가진 디렉토리 중 디렉토리 타입인 것만 찾는다.

 

find / -name fileA -type f -exec rm {} \;
# 루트 디렉토리부터 시작하여 fileA인 일반 파일을 모두 찾아 삭제한다.

 

-  -exec rm {} ;는 찾은 파일을 삭제하기 위한 명령어이다.

- {}는 찾은 파일의 이름. ;은 명령어가 끝났음을 나타낸다.

 

 

find / -name fileC -type f -ok rm {} \;
# 루트 디렉토리부터 시작하여 fileC인 파일을 찾아 삭제할 것인지 물어본다

 

-  -ok rm {} ; 는 찾은 파일을 삭제할 것인지 물어보는 옵션이다.

-  -ok는 삭제하기 전에 한 번 더 확인을 받기 때문에 실수로 파일을 삭제하는 일을 방지한다.

- fileC인 모든 일반 파일을 하나씩 확인하면서 삭제할 것인지 물어보며 y를 입력하면 해당 파일을 삭제한다.

 

find ~ -mtime -2
# 홈 디렉토리부터 시작하여 2일 이내에 수정된 모든 파일과 디렉토리를 찾는다.

 

-  -mtime -2는 파일의 수정 시간이 현재 시간부터 2일 이내인 것을 찾기 위한 옵션이다.

-  -2는 2일 이내를 의미한다.

 

find /usr/bin -size +3000000c -ls
# 파일 크기가 3MB 이상인 모든 파일을 찾아 파일 정보를 출력

 

- c는 파일 크기의 단위를 바이트로 지정하는 옵션

- +3000000c는 3000000바이트 이상인 것을 의미

 

 


2.9 vi 편집

 

● vi 편집 기초

i 키 입력 -> 글을 입력 -> esc 키를 입력 -> :wq! 입력

 

● vi 명령어

a 텍스트 뒤에 커서를 위치시켜 입력을 받는다. yy 한 줄을 복사하여 임시 버퍼 공간에 저장한다.
i 텍스트가 앞에 커서를 위치시켜 입력을 받는다. p 임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣는다.
o 커서가 위치한 줄의 아래에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받는다. :set nu 화면에 줄 번호를 출력한다.
G 파일의 제일 마지막 줄로 이동 :n,nd n번째 줄부터 n번째 줄까지 삭제한다.
1G 파일의 제일 첫 번째 줄로 이동 :n n번째 줄로 이동
nG n번째 줄로 이동 :wq 수정한 파일을 디스크에 저장한 후 종료한다.
x 커서가 위치한 부분의 글자를 삭제한다. :x 수정한 파일을 디스크에 저장한 후 종료한다.
dd 커서가 위치한 줄을 삭제한다. :q! 수정한 파일을 디스크에 저장하지 않고 종료한다.
u 명령어 실행 전으로 되돌린다.    

 

:%s/old/new/g

 

- 현재 문서에서 old 문자열을 new 문자열로 모두 바꾸는 명령어이다.

- %는 문서 전체를 대상으로 검색하는 명령어이다.

- s는 치환 명령을 실행하는 명령어이다.

- g는 해당 라인에서 일치하는 모든 문자열을 바꾸라는 명령어이다.

 

 

 


2.10 접근 권한

 

echo "Hello World" > test.txt

 

- text.txt를 생성하여 Hello World를 입력한다.

 

 

chmod 666 test.txt

 

- chmod는 파일 또는 디렉터리의 권한을 변경할 때 사용된다.

- 666은 각각 사용자, 그룹, 다른 사용자에게 읽기 및 쓰기 권한을 부여한다.

- 모든 사용자가 파일을 읽고 쓸 수 있다.

 

 


 

useradd user01
useradd user02
su - user01
echo "user01" > user01.txt

 

- user01과 user02의 계정을 추가한다.

- su -은 새로운 사용자의 환경설정을 적용시켜 다른 사용자로 변경하여 작업할 수 있도록 해주는 명령어이다.

- 따라서 user01로 변경하여 로그인하는 명령어이다.

- user01.txt에 내용을 입력한다.

 

 

 

chmod 704 /home/user01

 

- user01의 권한을 사용자가 읽기, 쓰기, 실행을 할 수 있고, 다른 사용자가 읽을 수 있게 변경한다.

 

 

- 또 다른 터미널을 열어 user02로 로그인을 한다.

- user02로 로그인을 한 상태로 user01.txt의 내용을 읽으면 permission denied 상태가 출력된다.

 

 

chmod 701 /home/user01

- user01의 권한을 다른 사용자가 실행을 할 수 있게 변경한다.

 

 

- user02에 로그인한 터미널로 이동하여 user01.txt를 읽으면 내용을 출력할 수 있다.

 

 


chmod o-r user01.txt

 

- o-r은 other 권한 중 r(읽기) 권한을 제거하는 의미이다.

 

 

chmod o+rw user01.txt  # other 권한에 읽기, 쓰기 권한 추가
chmod a=x user01.txt  # a는 all. user, group, other을 x(실행)로 권한 변경
chmod a=rw user01.txt  # 모든 사용자에 읽기, 쓰기 권한 변경
chmod a+x user01.txt  # 모든 사용자에 실행 권한 추가

 

 

 


2.11 파일 경로 

 

cd ~  # home 디렉토리로 이동
cd ~user01  # user01 사용자의 홈 디렉토리로 이동
cd ~root  # root 사용자의 홈 디렉토리로 이동

 

- ~은 현재 사용자의 홈 디렉터리를 의미한다.

 

 


 

cd dirB
ls ~+  # 현재 폴더
ls ~-  # 이전 폴더

 

 


2.12 파일 이름

 

cd -  # 이전 디렉토리로 이동

ls fi*  # fi로 시작하는 파일 및 디렉토리를 나열
ls *A  # 끝이 A로 끝나는 모든 파일과 디렉토리 나열

ls f???B  # f로 시작하고 B로 끝나는 5자리 파일과 디렉토리 나열
ls dir?  # dir로 시작하고 한 글자가 더 있는 디렉토리 나열

ls file[AB]  # fileA 또는 fileB 파일 나열
ls dir[AC]  # dirA 또는 dirC 디렉토리 나열
ls dir[A-Y]  # dirA, dirB, ... , dirY 디렉토리 나열

 

- '-'는 이전 작업 디렉터리를 의미한다.