주로 사용하는 리눅스 명령어 모음
파일의 종류
-
파일 : 관련있는 정보들의 집합
-
리눅스는 파일을 효과적으로 관리하기 위해 디렉터리를 사용
-
파일시스템 : 디렉터리와 파일로 구성된 전체집합
-
리눅스에서 파일은 사용 목적에 따라 일반파일.디렉티리, 심벌릭링크, 장치파일로 구분
일반파일
-
데이터를 저장하는데 주로 사용
-
각종 텍스트 파일, 실행파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일은 일반파일에 해당
-
실행파일이나 이미지 파일의 경우 바이너리 형태로 데이터가 저장되어 바이너리 파일이라고 함
디렉터리
-
리눅스에서는 디렉터리도 파일로 취급
-
디렉터리 파일에는 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장
심벌릭링크
-
원본파일을 대신하여 다른 이름으로 파일명을 지정한 것 (윈도우의 바로가기와 비슷함)
장치파일
-
리눅스에서는 하드디스크나 키보드 같은 각종장치도 파일로 취급
-
리눅스 시스템에 부착된 장치를 관리하기 위한 특수 파일
file의 종류를 확인하는 file 명령어
~$ **file** .bash_profile
경로 표시 방법
-
절대경로 : 경로를 표시할 때 기준이 root 디렉토리(/)
-
상대경로 : 기준이 현재 자신의 위치 . :현재 디렉토리
.. : 상위 디렉토리 표시
ex) 현재 있는 디렉토리 안에 있는 lvm디렉토리로 가라 cd **./**lvm == cd lvm
지금 있는 디렉토리의 상위 디렉토리로 가라 cd ../media
root로 가라 cd /
나의 홈 디렉토리로 가라 cd ~
d **r w x** r - x r - x
d : 디렉토리 rwx(소유자) r-x (같은 그룹에 있는 사람) r-w(아예 다른 사람)
-r w-------
-:일반파일
C : 디바이스파일 문자
b : 디바이스 파일(블록)
l : 심볼릭 링크 파일
dr-xr-xr-x. 18 root root 4096 Mar 26 01:31 .
링크 수,소유자,그룹,파일크기,만든 시간
ex) ls -al /etc (루트 아래에 있는 etc 디렉토리안에 파일을 보자)
"/" : 디렉토리
"@" : 링크파일
"*" : 실행파일
아무것도 없음 : 텍스트 파일
<옵션>
-F : 기호표시
-a : 숨겨진 파일 보여줌
<매뉴얼보기>
man cd (cd 명령어의 매뉴얼)
man ls (ls 명령어의 매뉴얼)
q , b, spacebar , enter 으로 넘기거나 나올 수 있음
<디렉토리 만들기>
mkdir [이름]
<디렉토리안에 디렉토리를 만들기 (수직적)>
mkdir -p test/test1
<ls 로 디렉토리 안의 다른 디렉토리의 내용을 보여주라 >
ls -R test **-R 옵션은 하위 디렉토리의 있는 내용들까지 전부 바꾼다**
하면 test안의 test1 디렉토리의 안을 볼 수 있음
<ls의 결과를 test 파일에 넣어라>
ls > test
<디렉토리 삭제>
rmdir test
**디렉토리가 비어있어야 지울 수 있다.**
<비어있지 않는 디렉토리를 삭제 할 때 쓸 수 있는 명령어>
rm **-r** test
<파일 삭제>
rm file
<whoami>
<who>
<date>
<파일 읽기>
cat
cat -n( 줄 번호까지 나오게 함)
more [file]
head [file] 처음부터 10줄까지 보여줌
tail [file] 끝부터 위로 10줄까지 보여줌
ex)
tail -3 [file] 끝에서 3줄만 출력
head -2 [file] 2줄만 출력
<cat으로 테스트에 내용을 넣는다.>
cat >> test
1234
<복사>
cp -[option] file1 file2
ex)
cp test test1(원본파일 o)
cp -i test test1 (대화식으로 컴퓨터의 명령을 처리 할 수 있음 -yes or no)
cp -r dir1 dir2 (디렉토리 복사)
<파일 옮기기>
mv file2 ./dir1
<이름 바꾸기>(원본파일 x)
mv file2 file3
파일 링크
-
파일 링크는 기존에 있는 파일에 새로운 파일명을 붙이는 것을 말함
-
하드 링크 : 기존 파일에 새로운 파일명을 추가로 생성
-
심벌릭 링크 : 원본 파일을 가리키는 새로운 파일을 생성
-
리눅스 파일의 구성
-
파일 = 파일명 + inode + 데이터 블록
-
파일명 : 사용자가 파일에 접근할 때 사용하는 파일의 이름
-
inode : 파일에 대한 정보를 가진 특별한 구조체, 외부적으로는 번호로 표시, 내부적으로는 파일의 종류 및 크기, 소유자, 파일변경시간, 파일명 등 파일 상세 정보와 데이터 블록의 주소를 저장
-
-
파일의 inode 번호는 ls -i명령으로 확인 가능
-
파일명 앞에 출력된 숫자가 inode번호
-
파일이름은 다르지만 **inode번호가 같다면 같은 파일**
-
-
파일을 삭제 하는 방법이 inode와 파일의 연결을 끊는 것으로 파일 안의 정보를 건들지 않음
하드 링크(원본을 지워도 다른 링크 된 파일은 사용 가능)
ln file1 file2
-
inode 값이 같음
-
링크 수가 같이 올라감
심볼릭 링크(원본을 지우면 링크 된 파일은 사용 **불가**) => 바로가기
ln -s file1 file2
-
inode 값이 다름
-
링크수는 변함 없음
touch + file
-
비어있는 파일 생성
-
이미 존재해있는 파일이름이 있다면 현재 날짜 시간으로 파일의 수정 날짜를 바꾼다
입출력 방향 바꾸기(redirection)
리눅스는 모든 장치를 파일로 간주
표준입출력 장치
-
표준 입력 장치 : 셸이 작업을 수행하는데 필요한 정보를 받아 들이는 장치 => 키보드
-
표준 출력 장치 : 실행 결과를 내보내는 장치 => 모니터
-
표준 오류 장치 : 오류 메세지를 내보내는 장치 => 모니터
파일 디스크립터
-
파일관리를 위해 붙이는 일련번호
-
입출력장치를 변경할 때는 이 파일 디스크립터를 사용
-
표준 입출력 장치를 파일로 바꾸는 것을 리다이렉션이라함
파일 스크립터파일 스크립터 대신 사용하는 이름정의
0 | stdin | 명령의 표준입력 |
1 | stdout | 명령의 표준 출력 |
2 | stderr | 명령의 표준 오류 |
출력 리다이렉션(명령 > 파일명) >앞에 1이 생략됌
-
">" : 기존 파일의 내용을 삭제하고 새로 결과를 저장
-
">>": 기존의 내용에 추가하여 저장
cat >> test
1234
ex)ls > file1을 하면 ls의 결과가 file1에 내용으로 들어감 file1이 없으면 생성을 하고 내용을 넣음
pwd > file1등등
-
tts는 현재 장치 위치를 보여줌
-
출력 리다이렉션을 통해서 다른 장치로 출력을 할 수 있다.
입력 리다이렉션
hi가 나오면 종료됌
복사와 같음(cat < file1 > output)
file1의 내용을 cat으로 옮김
오류 리다이렉션(>앞에 2를 써야함 )
오류의 내용이 err파일에 들어감
파일의 접근 권한
접근 권한의 표기 방법
소유자 + 그룹 + 기타사용자
r : 읽기권한
w : 쓰기권한
x : 실행권한
접근 권한의 변경 명령
-
chmod
-
기능 : 파일이나 디렉터리의 접근 권한을 변경한다
-
형식 : chmod [옵션] [권한모드 파일 또는 디렉터리]
-
옵션 : -R : **하위 디렉터리까지 모두 변경할 수 있다**
-
기호모드
-
사용자 카테고리 문자
-
u : 파일 소유자
-
g : 소유자가 속한 그룹
-
o : 소유자 와 그룹이외의 기타 사용자
-
a : 전체 사용자
-
-
연산자 기호
-
"+" : 권한부여
-
"-" : 권한제거
-
"=" : 접근 권한 설정
-
-
접근 권한 문자
-
r : 읽기 권한
-
w : 쓰기 권한
-
x : 실행권한
-
ex )
a = rw (모두에게 읽기,쓰기,실행권한을 부여 => 각기 어떤 권한을 가지고 있는지 노 상관 다들읽기 권한과 쓰기 권한만 부여됌)
g-w(그룹에서 쓰기권한 제거)
왜 디렉토리와 파일을 처음 만들때 가진 권한들이 서로 다를까? (중요)
특정사용자가 내 파일에 접근하는 것을 막기 위해 권한을 설정함
chmod -R a=rx test를 하면 test안의 file1도 같이 r-x로 된다
R은 하위 디렉토리까지 권한을 같게 만드는 옵션
숫자를 이용한 파일 접근 권한 변경
숫자로 환산하기
-
숫자 모드에서는 각 권한이 있고 없고를 0과 1로 표기하고 이를 다시 환산하여 숫자로 표현
**file 초기 권한 : 666(rw-rw-rw-)**
**directory 초기 권한 : 777(rwxrwxrwx)**
umask
파일의 초기 권한과 umask 계산 (위의 자리가 1이고 아랫자리가 0일경우에만 1 나머지는 다 0)
umask(0002 특수 비트를 제외하면 002) 맨 앞자리는 특수권한
umask라 치면 현재 umask값이 나오고 바꾸고 싶으면 umask 값 을 쓰면 된다
검색
-
파일 안의 내용을 검색
(grep,fgrep,egrep) grep안에 fgrep과 egrep이 포함
-
파일 자체를 찾는 방법
(find)
정규 표현식
"?" : 하나의 문자로 대응(모든 것을 의미)
-
ex) file?(file로 시작하고 뒤에 한 문자만 있는 이름의 파일들을 찾아줌)
"*" : 여러 문자와 대응 (모든 것을 의미)
-
ex) file* (file로 시작하고 뒤에 여러 문자들이 있는 이름의 파일들을 찾아줌)
"[ ]" : 범위를 지정할 때 사용
-
ex) file*[1-5] : (file로 시작하고 맨 마지막 글자가 1,2,3,4,5중 하나여야 한다)
"," : 값을 구분할때 사용
"-" : 범위를 나타낼 때
"^" : 행의 맨 처음(ex) grep ^d ./ex : ex파일내에서 첫글자가 d로 시작하는 내용)
"$" : 행의 맨 끝(ex) grep 1$ ./ex : ex파일 내에서 끝의 글자가 1로 끝나는 내용)
ex)
[1-4] : 1부터 4까지의 **범위**를 나타냄
[1,5] : 1과 5를 의미
grep
-
형식 : grep [옵션] [패턴] [파일]
-
옵션
-
i : 대소문자 모두 검색
-
l : 지정한 패턴이 포함된 파일 명을 출력한다
-
n : 행 번호를 출력한다
-
-
fgrep [옵션] [단어] [파일]
-
egrep [옵션] [정규표현식] [파일]
fgrep은 단어가 정확히 일치해야만 찾을 수 있다
grep은 단어가 포함되면 찾을 수 있다
-
파이프 : | (한 명령어의 결과를 다른 명령어의 입력값으로 쓸 때 사용)
-
wc file이름을 입력하면 줄 수 , 단어수, 글자수 순으로 뜬다
find
find [경로 검색 조건] [동작]
옵션
-name [파일 명]
-type [파일종류]
-user [login ID]
-perm [접근 권한]
find / -perm 644
와일드카드를 쓸경우( " "가 필수 ! )
out.txt에는 file이 들어간 파일만 들어가있다.
권한이 거부된 것은 out.txt안에 들어가지 않음
검색하다 권한 에러난 것들을 err.txt라는 파일에 넣음으로써 file1이 들어간 파일만 나온다
오류를 제외하고 출력하게 함
동시 실행도 가능하다
find / -name file1 > out.txt 2> err.txt
한 파일안에 오류와 정상 출력을 동시에 입력할 수 있다
find / -name file1 -exec rm {} \;
file1을 찾아서 삭제를 한다.
Vi
i, a, o가 insert모드
끝낼때
:wq!
:q!
줄번호 없애기
:set nonumber
한글자씩 지우기
x를 누름
한단어씩 지우기
d누르고 w누름
한줄씩 지우기(잘라내기)
dd
붙여넣기
p
복사하기
yy
ex) 3yy : 3줄 복사
커서이동
^ : 맨처음
$ : 맨 끝
파일 목록 보기 : ls –al
디렉토리 이동 : cd [디렉토리명]
상위 디렉토리로 이동 : cd ..
현재 디렉토리명 확인 : pwd
파일 내용 확인하기 : cat [파일명]
파일 내용 편집하기 : vi [파일명]
-->입력모드 - i 명령모드 - esc 저장 - esc입력 후 :w 종료 - esc 입력 후 :q
소스 코드 컴파일하기 : gcc -o [프로그램명] [소스코드명]
프로그램 실행하기 : ./[프로그램명]
프로그램에 인자 전달하기 : ./[프로그램명] [인자1] [인자2] ...
현재 자신의 권한 확인하기 : whoami 혹은 id
IP 확인하기 : /sbin/ifconfig
IP 변경하기 : /usr/sbin/netconfig (root 권한 필요)
지금까지 입력한 명령목록 보기 : history
실행중인 프로그램(프로세스) 목록 보기 : ps -aux
시스템 리부팅 : reboot (root 권한 필요)
시스템 종료 : halt (root 권한 필요)
관리자 권한으로 명령 실행 : sudo [명령어]
출처: 해커스쿨 핸드북