Linux 기본 명령어 정리 및 활용
리눅스 기초를 배우기 위해 오라클 VM머신을 활용한 예제이다.
서버쪽의 OS는 다른 운영체제와 달리 오픈소스이고 보안성이 우수하고 구조안정성 등에 적합하여 리눅스를 많이 사용한다. 활용하기 위해서 숙지해놓는 편이 좋다.
오라클의 VM virtualbox (CentOS, min버전) 설치
Oracle VM VirtualBox
Welcome to VirtualBox.org! News Flash New July 18th, 2023VirtualBox 7.0.10 released! Oracle today released a 7.0 maintenance release which improves stability and fixes regressions. See the Changelog for details. New July 18th, 2023VirtualBox 6.1.46 release
www.virtualbox.org
설치된 리눅스(CentOS)에서 A, B, C 폴더안의 있는 각각의 파일들을 옮겨주는 쉘 스크립트를 만들어보는 예제이다.
※ 쉘 스크립트 - 파일을 실행하기만 하면 스크립트안에 기술되어있는 명령어들을 실행하는 스크립트
A폴더안의 있는 A.txt 파일을 B폴더로
B폴더안의 있는 B.txt 파일을 C폴더로
C폴더안의 있는 C.txt 파일을 A폴더로
처음으로 리눅스 부팅 후 계정 로그인을 한다.
ls -al 을 이용해 파일 리스트 출력
필자는 shellScriptTest 폴더를 만들어 그 안에서 작업을 진행
리스트에서 파일별로 색상이 표기가 되어있는데 다음과 같다.
파란색 - 디렉토리(폴더)
초록색 - 실행 파일
빨간색 - 압축 파일
하늘색 - 심볼릭 파일 (링크파일)
회 색 - 일반파일
dirA 에는 A_Text.txt 파일 -> 내용은 A Text File
dirB 에는 B_Text.txt 파일 -> 내용은 B Text File
dirC 에는 C_Text.txt 파일 -> 내용은 C Text File
확장자명이 sh가 쉘 스크립트로 파일이다.
쉘 스크립트 만드는 법
1. touch (파일명)으로 빈 파일을 생성
2. vi (파일명)으로 스크립트를 기술
vi 명령어는 파일을 수정하는 명령어로 i로 입력모드로 esc로 명령모드로 전환이 가능
첫째줄에 쉘 스크립트 기본문법인 #! /bin/bash 를 기술
후에 명령어들을 작성한다. (명령모드에서 :wq 로 vi모드에서 나올 수 있다 - 저장 후 종료)
mv dirA/A_Text.txt dirB/A_Text.txt는
dirA에 있는 A_Text.txt 파일을 dirB에 A_Text.txt 라는 이름으로 mv(move) 옮긴다는 명령어이다.
※ 경로 이후에 파일명을 꼭 명시해주어야 한다.
3. 생성된 .sh 파일에 권한을 부여해야 한다.
chmod +x (파일명)
작성된 스크립트 파일을 실행 -> ./(스크립트 파일명)
moveFileScript.sh 파일을 실행하고 dirA폴더 내부에 들어가보니 A_Text파일이 C_Text라는 파일로 정상적으로 변경되었다.
반대로 원복을 해주는 restoreFileScript를 만들어 복습
※ 파일명 맨 앞에 보이는 drwxr-xr-x 의 표기를 부연설명 해보자면 파일권한을 나타내는 표기법으로
맨 앞의 d는 directory 폴더를 뜻하고 나머지 각각의 3자리는 소유자 권한을 뜻한다.
디렉토리를 제외한 앞의 3자리는 소유자 권한 / 그룹 권한 / 다른 사용자 권한을 뜻한다.
d / rwx / r-x / r-x
rwx는 각각의 권한을 뜻한다.
r - read (읽기) / w - write (쓰기) / x - 실행권한
사용자 (User) | 그룹 (Group) | 다른 사용자 (Other) | ||||||
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
7 | 7 | 7 |
ex) -rw-r--r-- : 644 (해당파일의 umask 값은 644이다)
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-- = 4 + 0 + 0 = 4
기본적인 리눅스 명령어
1. ls (List segments) : 현재 위치의 파일 목록 조회
- ls -l : 파일의 상세정보
- ls -a : 숨김 파일 표시
- ls -t : 파일들을 생성시간순(제일 최신 것부터)으로 표시
- ls -rt : 파일들을 생성시간순(제일 오래된 것부터)으로 표시
- ls -f : 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시
('/' : 디렉터리, '*' : 실행파일, '@' : 링크 등등,,,)
2. cd (Change directory) :디렉터리 이동
- cd [디렉터리 경로] : 이동하려는 디렉터리로 이동 (경로 입력 시 '[', ']'부분은 빼고 입력!)
- cd ~ : 홈 디렉터리로 이동
- cd / : 최상위 디렉터리로 이동
- cd . : 현재 디렉터리
- cd .. : 상위 디렉터리로 이동
- cd - : 이전 경로로 이동
3. touch : 0바이트 파일 생성, 파일의 날짜와 시간을 수정
- touch filename : filename의 파일을 생성
- touch -c filename : filename의 시간을 현재시간으로 갱신
- touch -t 202110291608 filename : filename의 시간을 날짜 정보(YYYYMMDDhhmm)로 갱신
(20211029160 => 2021.10.29.16:08) - touch -r oldfile newfile : newfile의 날짜 정보를 oldfile의 날짜 정보와 동일하게 변경
4. mkdir (Make dirctory) : 디렉터리 생성
- mkdir dirname : dirname이라는 디렉터리 생성
- mkdir dir1 dir2: 한 번에 여러 개의 디렉터리 생성
- mkdir -p dirname/sub_dirname : dirname이라는 디렉터리 생성, sub_dirname이라는 하위 디렉터리도 생성
- mkdir -m 700 dirname : 특정 퍼미션(권한)을 갖는 디렉터리 생성
5. cp (Copy) : 파일 복사
- cp file1 file2 : file1을 file2라는 이름으로 복사
- cp -f file1 file2 : 강제 복사(file2라는 파일이 이미 있을 경우 강제로 기존 file2를 지우고 복사 진행)
- cp -r dir1 dir2 : 디렉터리 복사. 폴더 안의 모든 하위 경로와 파일들을 복사
6. mv (Move) : 파일 이동
- mv file1 file2 : file1 파일을 file2 파일로 변경
- mv file1 /dir : file1 파일을 dir 디렉터리로 이동
- mv file1 file2 /dir : 여러 개의 파일을 dir 디렉터리로 이동
- mv /dir1 /dir2 : dir1 디렉터리를 dir2 디렉터리로 이름 변경
7. rm (Remove) : 파일 삭제
- rm file1 : file1을 삭제
- rm -f file1 : file1을 강제 삭제
- rm -r dir : dir 디렉터리 삭제 (디렉터리는 -r 옵션 없이 삭제 불가)
8. cat (Catenate) : 파일의 내용을 화면에 출력, 리다이렉션 기호('>')를 사용하여 새로운 파일 생성
- cat file1 : file1의 내용을 출력
- cat file1 file2 : file1과 file2의 내용을 출력
- cat file1 file2 | more : file1과 file2의 내용을 페이지별로 출력
- cat file1 file2 | head : file1과 file2의 내용을 처음부터 10번째 줄까지만 출력
- cat file1 file2 | tail : file1과 file2의 내용을 끝에서부터 10번째 줄까지만 출력
9. redirection ('>', '>>') : 화면의 출력 결과를 파일로 저장
'>' 기호 : 기존에 있는 파일 내용을 지우고 저장
'>>' 기호 : 기존 파일 내용 뒤에 덧붙여서 저장
'<' 기호 : 파일의 데이터를 명령에 입력
- cat file1 firle2 > file3 : file1, file2의 명령 결과를 합쳐서 file3라는 파일에 저장
- car file4 >> file3 : file3에 file4의 내용 추가
- cat < file1 : file1의 결과 출력
- cat < file1 > file2 : file1의 출력 결과를 file2에 저장
vi 편집기 명령어
입력모드 (insert mode)
Insert키나 i 키로 명령모드에서 입력모드로 전환이 가능하다.
라인모드 (line mode)
명령모드에서 : 와 / 와 ? 을 사용해 명령을 입력할 수 있다.
:q - vi 종료
:w - vi 저장 (내용을 변경한 경우 :wq로 저장 후 나갈 수 있다.)
:set number - 라인 수를 표시한다.
:set nonu - 라인 수 표시를 끈다.
:set ic - 검색시 대소문자 구분을 하지 않는다.
:set ai - 들여쓰기를 설정한다.
:set ts=n - tab 공백을 n 수만큼 지정한다.
:set wm=n - 오른쪽 여백을 n 수만큼 지정한다.
:set ruler - 커서의 위치를 표시한다.
:syntax on - 컬러로 표시한다.
:숫자 - 숫자의 줄로 이동한다.
:%s/기존문자열/새 문자열 - 기존 문자열을 새 문자열로 바꾸기
/문자열 - 현재 커서 이후로 문자열 찾기 ( n키로 다음 문자열로 이동)
?문자열 - 현재 커서 이전으로 문자열 찾기 ( n키로 이전 문자열로 이동)
:![옵션] - ! 은 강제로 명령을 실행한다.
명령모드 (Command mode)
ESC키로 명령모드로 전환이 가능하다.
키 | 의미 | 키 | 의미 |
i | 현재 커서 위치부터 입력 | I | 현재 커서 줄의 맨 앞에서 입력 |
a | 현재 커서 다음 위치부터 입력 | A | 현재 커서 줄의 맨 뒤부터 입력 |
o | 현재 커서의 다음 줄에 입력 | O | 현재 커서의 이전 줄에 입력 |
s | 현재 커서의 한 글자 지우고 입력 | S | 현재 커서 한 줄을 지우고 입력 |
^ | 현재 줄의 처음으로 이동 | $ | 현재 줄의 마지막으로 이동 |
g g | 맨 앞 첫 번째 줄로 이동 | G | 맨 끝 줄로 이동 |
숫자 G | 해당 숫자 줄로 이동 | u | 되돌리기 |
Ctrl+F | 다음 화면으로 이동 | Ctrl+B | 이전 화면으로 이동 |
x | 현재 커서가 위치한 글자 삭제 | X | 현재 커서가 위치한 앞 글자 삭제 |
d d | 현재 커서의 줄 삭제 | 숫자d d | 현재 커서부터 숫자만큼 줄 삭제 |
y y | 현재 커서가 있는 줄 복사 | 숫자y y | 현재 커서부터 숫자만큼 줄 복사 |
p | 복사한 내용을 현재 줄 이후로 붙여넣기 | P | 복사한 내용을 현재 줄 이전에 붙여넣기 |
w | 현재 커서에서 다음 단어로 이동 | - | 이전 줄의 처음으로 이동 |
. | 이전에 사용한 명령어 재실행 | ~ | 대소문자 변경 |
J | 현재 줄과 다음 줄을 연결 | << | 현재 줄을 왼쪽으로 내어쓰기 |
>> | 현재 줄을 오른쪽으로 들여쓰기 | r | 한 글자 변경하기 |
Ctrl+G | 마지막 줄에 현재 줄 정보 출력 | ) | 다음 문장으로 이동 |
( | 이전 문장으로 이동 | } | 다음 문단으로 이동 |
{ | 이전 문단으로 이동 | + | 다음 줄의 처음으로 이동 |
'Linux' 카테고리의 다른 글
[Linux] 리눅스 top 명령어, 프로세스 확인 (CPU, 메모리 사용률 확인) (2) | 2023.12.05 |
---|---|
[Git] Git Bash 사용해보기 (git 사용법, 초기 설정, 기본 명령어 정리) (0) | 2023.08.09 |