[리눅스]리눅스 기본 명령어1
리눅스 기본 명령어1
리눅스 명령의 구조
형식은 ‘명령 [옵션] [인자]’ 구조이다. 옵션은 명령의 세부 기능을 선택하는 것이고 인자는 명령으로 전달되는 값으로 주로 파일명이나 디렉토리명이 사용된다.
Ex: ls -a /tmp (ls는 리스트 명령어고 -a는 히든파일까지 보여주는 옵션, /tmp는 해당 디렉토리에서라는 인자다.)
date 명령 – 현재 날짜와 시간을 출력
clear 명령 – 현재 보이는 화면을 지우고 커서를 좌측 상단으로 이동
man 명령 – 각종 명령의 사용법을 알려주는 manual을 보여준다.
passwd 명령 – 사용자 계정의 비밀번호 변경
리눅스 파일의 종류와 특징
파일의 종류
파일이란 관련 있는 정보들의 집합으로 리눅스는 효과적으로 관리하기 위해 디렉토리 개념을 사용한다.
리눅스에서는 파일을 사용목적에 따라 일반파일, 디렉토리, 심볼릭 링크, 장치파일로 구분한다.
일반 파일 : 데이터를 저장하는데 사용하며 각종 텍스트 파일, 실행파일등 대부분의 파일들이다.
디렉토리 : 리눅스에서 디렉토리도 파일로 취급한다. 디렉토리에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장
심볼릭 링크 : 원본 파일을 대신해 다른이름으로 파일명을 지정한 것(윈도우 바로가기와 유사)
장치 파일 : 리눅스에서는 하드디스크나 키보드, 프린터등 각종 장치들도 파일로 취급
디렉토리 계층 구조
리눅스는 파일을 효율적으로 관리하기 위해 디렉토리를 계층적으로 구성 -> 트리구조 모든 디렉토리의 출발점은 루트 디렉토리이며, ‘/’로 표시한다. 상위 디렉토리는 ‘.’으로 표시한다.
작업 디렉토리 : 현재 사용중인 디렉토리로 현재 디렉토리하고 함, ‘.’ 기호로 표시한다.(pwd명령으로 확인가능)
홈 디렉토리 : 각 사용자에게 할당된 디렉토리로 ‘~’기호로 표시한다.
주요 디렉토리의 기능
dev : 장치파일이 담긴 디렉토리
home : 사용자 홈 디렉토리가 생성되는 디렉토리
var : 데이터나 로그 등이 저장되는 디렉토리
root : root계정의 홈 디렉토리, ‘/’디렉토리와 다른 디렉토리다.
sys : 리눅스 커널과 관련된 파일이 있는 디렉토리
usr : 기본 실행파일과 라이브러리 파일등 많은 파일 저장
boot : 부팅에 필요한 커널이 있는 디렉토리
etc : 리눅스 설정을 위한 각종 파일이 있는 디렉토리
mnt : 파일 시스템을 임시로 마운팅 하는 디렉토리
tmp : 시스템 사용 중에 발생하는 임시 데이터가 저장, 리부팅하면 모두 삭제
파일과 디렉토리 이름 규칙
파일과 디렉토리 이름에는 알파벳, 숫자, 붙임표(-), 및줄(_), 점(.)만 사용한다.
사용하면 안되는 문자 : 공백문자, /, *, |, “, ‘, @, #, $, %, ^, &등
추가로 영문자는 대소문자를 다른 글자로 취급하며 ‘.’으로 시작하면 숨김파일로 간주한다.
디렉토리 명령어
pwd
현재 디렉토리 확인하기
cd [디렉토리명]
디렉토리 변경하기(디렉토리명을 입력하지 않는경우 해당계정의 홈디렉토리로 이동)
ls [옵션] [파일 또는 디렉토리 명]
옵션 : -a(히든파일 포함), -i(inode 번호를 출력), -l(상세정보 표시), -F(파일의 종류를 표시), -d(지정한 디렉토리 자체의 정보를 출력), -R(아래 구조를 보여줌)
ls는 리스트를 보여준다.
-F 옵션 사용시 /: 디렉토리, @: 심볼릭 링크, *:실행파일, 표시없음: 일반파일
ls -aF와 같이 숨김파일을 보여주며 파일의 종류를 표시하게 연결하여 사용할 수 있다.
-l 옵션 사용시 “drwxr-xr-x 2 root 4096 1월 16 16:27 snap”다음과 같이 나타나는데 첫번쨰 문자는 파일종류를 나타내는 것으로 -는 일반파일, d는 디렉토리를 나타낸다. 다음 9자는 접근권한을 나타내는데 read, write, execute로 owner/group/others에 대한 읽기 쓰기 실행 권한을 나태내며 -표시가 되어있으면 권한이 없는 것이다. 추가로 ls = dir, ls -a = vdir로 바꿔 사용해도 똑같은 결과값을 볼 수 있다.
mkdir [옵션] 디렉토리명
옵션 : -p(하위 디렉토리를 생성할 때 중간 디렉토리가 없으면 전체 디렉토리를 생성)
mkdir은 make directory로 디렉토리 만들기다디렉토리명은 상대경로나 절대경로명으로 지정하며 ‘mkdir 디렉토리명 디렉토리명’ 처럼 동시에 여러 디렉토리를 만들 수 있다.
rmdir [옵션] 디렉토리명
옵션 : -p(지정한 디렉토리를 삭제한 뒤, 그 디렉토리의 부모디렉토리가 빈 디렉토리인경우 부모 디렉토리도 삭제한다.)
만약 디렉토리가 비어있지 않으면 삭제가 불가하다.
배운 명령어로 다음 실습을 실행해보자
1. 현재 위치를 확인하고 홈 디렉토리가 아니면 홈디렉토리로 이동 # pwd # cd
2. 실습을 위한 디렉토리(prt)를 하나 만든다. # mkdir prt # cd /prt
3. Ch2 디렉토리를 만들고 그 디렉토리로 이동해 현재 위치를 확인한다. # mkdir ch2 # cd ch2 # pwd
4. One, two, three 디렉토리를 동시에 삭제한다. # mkdir one two three
5. One 디렉토리 아래 tmp/test 디렉토리를 만든다(tmp 자동생성) # mkdir one/tmp/test
6. Two, three 디렉토리를 동시에 삭제한다. # rmdir two three
7. 실습을 마치고 홈디렉토리로 이동한다. # cd
파일다루기 명령어
cat [옵션] 파일명
옵션 : -n(행 번호를 붙여서 출력한다.)
cat은 텍스트 파일의 내용을 확인할 수 있다.
more [옵션] 파일명
옵션 : +행번호(출력을 시작할 행 번호를 지정한다.)
more은 화면 단위로 파일 내용 출력할 수 있다. 스페이스바를 누르면 다음화면 출력, 엔터키는 한 줄씩 스크롤, /문자열 – 해당 문자열 검색, q: 종료이다.
less 파일명
lsee는 파일 내용을 화면단위로 출력하는 more과 같지만 조금 개선된 명령어다.
키는 i : 한 줄씩 다음 행으로 스크롤한다. k : 이전행으로 스크롤, 스페이스바 : 다음화면, ^b : 이전 화면
tail [옵션] 파일명
옵션 : +행번호(지정한 행부터 끝까지 출력), -숫자(화면에 출력할 행의 수를 지정), -f(파일 출력이 종료되지 않고 주기적으로 계속 출력)
tail은 파일을 출력하는데 뒷부분을 출력한다.
cp [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2
옵션 : -i(대화식 복사 방법으로 파일명2가 이미 존재할 경우 덮어쓸 것인지 물어본다.), -r(디렉토리를 복사할 때 사용)
cp는 1번 파일(디렉토리)을 2번파일(디렉토리)로 복사하는 기능이다. 추가로 cp명령에서 첫번째 인자는 여러 개의 파일명을 지정할 수 있는데, 두번째 인자는 반드시 디렉토리여야 한다. 그리고 두번째 인자로 지정한 디렉토리가 이미 있는 디렉토리일 경우, 목적지 디렉토리 아래에 원본 디렉토리와 같은 이름으로 복사한다.
mv [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2
옵션 : -i(파일명2/디렉토리명2가 존재하면 덮어씌울것인지 물어본다.)
mv는 move로 파일을 다른 디렉토리로 이동하거나 파일명을 바꿀 때 사용한다. 디렉토리를 이동하거나 디렉토리명을 바꿀 때도 mv 명령을 사용한다. 1번을 2번으로 이동하는 것이다. 2번의 파일이 이미 존재하면 덮어씌우고 없으면 새 파일이 생성된다. 두번째 인자가 디렉토리면 해당 디렉토리로 이동한다. 추가로 rwx중w권한이 없는 파일을 이동하려고 하면 오류가 발생한다. 또한 여러 개의 파일을 한번에 이동도 가능하다.
rm [옵션] 파일명/디렉토리명
옵션 : -i(대화식으로 지정한 파일을 정말 삭제할 것인지 확인한다.), -r(디렉토리를 삭제할 때 사용한다.)
rm은 remove로 파일 또는 디렉토리를 삭제할 수 있는 명령어다. 삭제된 파일은 복구할 수 없기 때문에 신중해야 한다. rmdir은 디렉토리 안에 파일이 있으면 오류 메시지가 출력하지만 rm 명령어는 바로 삭제되기 때문이다.
리눅스 파일의 구성
파일 = 파일명 + inode(indexnode) + 데이터 블록
여기서 파일명은 사용자가 파일에 접근할 때 사용하는 파일의 이름, inode는 파일에 대한 정보를 가지고 있는 특별한 구조체로 외부적으로 번호로 표시되고 내부적으로 파일의 종류 및 크기, 소유자, 파일 변경 시간, 파일명등 파일 상세 정보와 데이터 블록의 주소를 저장한다.
파일의 inode번호는 ls - i 명령으로 확인이 가능하다(파일이름이 달라도 inode가 같으면 같은 파일).
파일링크
파일링크는 기존에 있는 파일에 새로운 파일명을 붙이는 것이다.
하드링크 : 기존 파일에 새로운 파일명을 추가로 생성
심볼릭 링크 : 원본 파일을 가리키는 새로운 파일을 생성
ln [옵션] 원본 파일명 링크 파일명
옵션 : -s 심볼릭 링크 파일을 생성한다.
ln은 파일의 링크를 생성하는 명령어다. 하나의 파일에 여러 개의 이름을 붙일 수 있는데, 이때 붙이는 파일명을 하드링크라고 한다.
링크와 복사의 차이점을 확인해보면 복사는 복사된 파일의 내용을 수정해도 원본은 그래로라는 점이 있다. 옵션 -s를 사용하면 심볼릭 링크를 생성할 수 있다. 이는 원본과 inode가 다르며 ls -l명령을 하면 파일이 ‘->’를 사용해 원본 파일이 무엇인지를 알려준다.
심볼릭 링크와 하드링크의 차이점
심볼릭 링크는 하드링크와 비교하여 하드링크의 개수가 하나이며, inode번호가 원본 파일과 다르다. 즉 원본과 심볼릭 링크 파일은 별개의 파일이다. 또한 디렉토리에 심볼릭 링크 생성이 가능하다는 점이 차이점이다. 심볼릭 링크의 추가적인 특징으로 원본파일이 삭제되면 심볼릭 링크로 연결할 수 없다는 점을 주의해야 한다.
touch [옵션] 파일
옵션 : -a(접근 시간만 변경), -m(수정 시간만 변경), -c(현재시간으로 변경), -t(YYYYMMDDhhmm형식으로 직접 입력), -r(지정한 파일의 날짜시간정보를 지정한 파일의 날짜시간정보와 동일하게 설정 : touch -r oldfile newfile)
touch는 빈 파일을 생성하는 명령어다.
grep [옵션] 패턴 [파일명]
옵션 : -i(대,소문자를 모두 검색), -l(해당 패턴을 포함하는 파일 이름을 출력), -n(행 번호를 출력한다.)
grep은 파일 내용을 검색해 문자열을 출력해내는 명령어다.
find 경로검색조건 [동작]
옵션 :
-name filename : 파일 이름으로 검색
-type 파일종류 : 파일의 종류로 검색(d: 디렉토리, f: 일반파일)
-user loginID : 지정한 사용자가 소유한 모든 파일을 검색
-empty : 빈 파일 검색
-newer : 최근에 변경된 파일 검색
-perm 접근권한 : 지정한 사용 권한과 일치하는 파일을 검색
동작 :
-exec 명령 {} \; : 검색된 파일에 명렬을 실행
-ok 명령 {} \; : 사용자의 확인을 받아서 명령을 실행
-print : 검색된 파일의 절대 경로명을 화면에 출력
-ls : 검색결과를 긴 목록 형식으로 출력
find 명령은 조건에 맞는 파일을 지정한 위치에서 찾는 명령어다. find명령어만 사용하면 현재 디렉토리(.)에 있는 파일을 찾는다. 접근권한이 없는 디렉토리는 검색이 불가능하다.
중요한 점으로 -delete동작으로 검색 후 삭제가 가능한데 파일과 디렉토리 삭제가 가능하나 빈 디렉토리만 가능하다.
whereis [옵션] 명령
옵션 : -b(바이너리 실행파일만 검색), -m(매뉴얼 파일만 검색), -s(소스 파일만 검색)
whereis는 지정된 경로에서 명령의 파일의 위치를 찾는다.
which 명령
명령어 파일의 위치를 찾아서 그 경로나 에일리어스(별칭, 별명)를 출력한다.
응급 복구
시스템 관리자라면 위에서 언급했던 run level 0~6을 꼭 알아야 한다. 응급복구는 그중 run level 1번 Single-User Mode(Rescue)이다.
시스템이 부팅이 안되거나 root 비밀번호를 분실했을 경우 사용한다. 사용방법은 boot loader에 들어가 메뉴 클릭 후 edit을 누르고 init = bin/bash(리눅스 기본 쉘)을 입력 후 저장 후 부팅한다.
이때 파티션이 읽기 전용으로 마운트 되어있기 때문에 마운트 상태를 확인하고 파티션의 마운트 상태를 rw상태로 변경 후 root 비밀번호를 변경하여 재시작 해주면 된다.
댓글남기기