관리 메뉴

IT창고

리눅스를 사용하기 위한 기본 명령어2 본문

서버운영/Linux

리눅스를 사용하기 위한 기본 명령어2

방구석여포 2017. 8. 17. 22:53

리눅스를 사용하기 위한 기본 명령어1에 이어서 부족한 부분을 보충 하겠습니다.


리눅스에는 경로에 대해 말할때 절대경로와 상대경로가 있습니다. 절대경로는 /부터 시작해서 차례대로 가는 경로이고 상대경로는 현재경로를 기준으로 가는 경로입니다. 그리고 리눅스를 종료하는 명령어로 shutdown -h now명령어도 알고 있어야 합니다.

기본 명령어를 알아보기전에 리눅스의 파일구성을 알아보는데 리눅스의 파일은 '파일명+inode+데이터블록'으로 구성되어 있습니다. inode는 파일에 대한 정보를 가진 특별한 구조체인데 외부적으로 번호가 표시되어있고 내부적으로는 파일의 종류와 크기, 소유자, 허가권과 파일변경시간 등 파일의 상세정보와 데이터블록의 주소가 저장되어 있습니다. 데이터블록은 파일이 실제 하드디스크상에 데이터블록이라는 단위로 저장되어 있습니다.


파일에서 inode번호를 알아보는데 ls -i라고 입력하시면 현재 디렉토리내에 파일들의 inode번호가 나옵니다. 파일의 모든 정보는 inode에 저장되는것을 알고 있어야 합니다.

그리고 알아두면 좋은게 하나 더 있는데 파일 디스크립터는 커널이 리눅스파일(프로세스)을 관리하는 방식 입니다.

ex) cat gsk.txt  ->  입력(Shell) ->키보드         출력(Shell) ->모니터

 


touch: 파일이 없을 경우 빈파일 생성 및 기존파일의 시간정보 변경 합니다.

옵션: -t    ex) touch -t 201701210715 [file]


date: 시스템 시간 확인 및 수정 합니다.


cal:  달력확인 cal[year]이면 12개월 전부 보여줍니다.


file: 파일의 형식 확인 합니다.


which: 그 파일의 경로 확인 합니다.


cat: 파일의 연결과 파일내용을 화면에 연속적으로 출력합니다.


nl: 파일에 행 번호를 붙여 출력합니다.


more: cat과 비슷한 기능으로 cat은 내용이 많으면 전부 볼수없고 넘어가지만 more은 스페이스바를 눌러 출력화면을 넘기고 q를 눌러 종료합니다.


head: 파일의 내용중 첫부분 부터 10줄만 화면에 출력합니다.


tail: head와 반대로 마지막 내용부터 위로 10줄만 화면에 출력합니다.


sort: 파일내의 내용을 알파펫 순서대로 정리합니다.

옵션: -n 숫자를 기준으로정렬 -r 역순으로정렬 -u 중복행제거 -o 출력결과를 파일로 저장


wc: 라인, 문자, 단어 수 순서대로 출력합니다.


cut: 문서내의 글을 잘라내기 

옵션: -c 잘라낼 글자위치를 지정 -d 필드와 필드를 구분하는 문자를 지정

ex) cut -c 1 test , cut -d ":" 1 test


tty: 현재 사용중인 터미널의 이름을 출력합니다.

ex) /dev/pts/0 이것은 ssh연결된 창에서 터미널을 확인하면 pts가 뜨고 0번을 보여줍니다 실제 서버창에서는 tty가 나옵니다.


grep: 파일 내용중에 정규식패턴에 일치하는 문자열을 찾아 화면에 출력합니다.

옵션: -i 대소문자를 구별하지않습니다. -n 행번호를 함께보여줍니다. -r 하위디렉토리에 위치한 파일도 검색합니다.

grep과 비슷한 기능을 가진 명령어중 egrep과 fgrep이 있는데 egrep은 확장된 정규식을 사용하고 fgrep은 정규식을 사용하지 않고 패턴을 모두 일반 문자열로 처리하여 명령어를 실행합니다 그렇기에 실행결과가 빠른 장점이 있습니다.


watch: 주기적으로 지정된 명령을 실행하고 그결과를 출력합니다. 

옵션: -n [n]초 주기로 명령결과 출력합니다. -d 변경된 부분에 음영처리를 해줍니다.


ln: 링크파일생성 합니다.

옵션: -s 심볼릭링크파일생성 ex) ln -s /bin/ /BIN

옵션-s를 사용하지 않고 링크파일을 만들면 하드링크로 만들어집니다.

링크와inode관계로 하드링크로 만들면 완전히 데이터도 같은 파일이며 심볼릭링크파일로 만들면 경로데이터만 존재하고 inode번호도 다릅니다. 대표적으로 윈도우의 바로가기 같은 역활입니다.

 


파이프(pipe): 표준 입출력이 아닌 프로세스 간에 실행되는 입출력을 다음 프로세스에게 전달하는 방식입니다.

[명령어] | [명령어]
ex)
# ls -l | grep "^d" | wc -l
# ls -l /bin | grep "^-" | wc -l
이런 응용 가능합니다.

디렉토리 개수 출력하기
ex) ls -l | grep "^d" | wc -l

/etc/services 파일에 tcp라는 문자열이 들어간 라인 중 가장 마지막 라인을 확인하는 명령어
-> # cat /etc/services | grep "tcp" | tail -1

 

리다이렉션: 표준 입력과 출력의 방향을 제 지정 하는 방법입니다.

출력 리다이렉션
#[명령어] 1> [파일]   //표준출력을 나타내는 fd "1"은 생략이 가능합니다.

ex) date 1> tdate

cat > cat_test
money ..    <enter입력>  //cat명령어를 이용하여 파일 내용을 입력하여 새로운 파일을 생성할 수 있습니다. 
ctrl + <-   글자지우기
ctrl + d    글자저장

기존에 같은 이름의 파일이 있다면 경고없이 덮어쓰고 없다면 새로운파일을 만들어줍니다.

추가 리다이렉션: 덮어쓰지않고 아래에 추가를 해주는 방식입니다.
#[명령어] >> [파일]

오류 리다이렉션
#[명령어] 2> [파일]

#ls error_test  //오류메세지발생합니다.
#ls error_test 1> err1 //해당 명령어의 표준 출력을 err1에 출력합니다.

#ls error_test 2> err2  //해당 명령어의 표준 오류를 err2에 출력합니다.

입력 리다이렉션: 해당 명령어가 처리되기 위한 파일을 입력 받는데 평소에 사용하는 명령어와 별 차이가 없습니다.
#[명령어] < [파일]

 

오류메세지를 출력하지 않기
/dev/null - 리눅스 특수 장치 파일로 해당 파일 항상 0값을 가지고 있습니다.

해당 파일로 리다이렉션된 내용은 모두 사라집니다.(윈도우의 휴지통역활)

ex) find / -size +50M 2> /dev/null 이런 용도로 활용
- 의도적으로 오류메세지를 화면에 출력되지 않게 사용할 수 있습니다.

 

참고**
Bash쉘에 파일 덮어쓰기 방지하는 기능 설정
#set -o noclobber  //덮어쓰기 방지 기능 활성화
#set +o noclobber  // 비활성화

Comments