출처는 http://user.chollian.net/~relay 이며 Hugh에 의해 편집,수정되었습니다.
▣ LINUX 기본 명령어
# ls
: 파일 시스템 상의 파일을 목록을 보여준다.
문법 ls [ -aCxdlstucriFR ][ 파일명(들) ]
옵션 • -a : 도트로 시작되는 이름을 가진 파일명도 전부 보여준다.
• -C : 가로 순서로 나열하여 출력한다.
• -x : 세로 순서로 나열하여 출력한다.
• -d : 현재 디렉토리에 대한 정보를 출력한다.
• -l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
• -s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 보여준다.
• -t : 파일 갱신일 순서대로 정렬한다.
• -u : 엑세스(access)한 날짜 순서대로 정렬한다.
• -c : inode가 마지막 바뀐 시간 순서대로 정렬한다.
• -r : 정렬된 순서의 역으로 출력한다.
• -i : 파일의 inode 번호를 보여준다.
• -F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다. +는 실행 가능한 파일을, /는
디렉토리 이름을 의미한다. @는 심볼릭 링크를 나타내고, =는 소켓(socket)을
나타낸다. 하지만 여러분의 리눅스는 기본적으로 이러한 특성을 보여줄 것이
다.
• -R : 현 디렉토리의 내용은 물론이고 서브 디렉토리의 내용까지 전부 보여준다.
# cd
: 현재 작업하는 디렉토리를 변경한다.
문법 cd [ 디렉토리 ]
디렉토리 이름과 cd 명령 사이에 반드시 공백이 있어야 한다. 디렉토리 이름을 주지
않고 수행하면 사용자의 홈 디렉토리로 이동한다. 자신이 이동하고자 하는 디렉토리
는 자신에게 실행 권한(execution permission)이 있어야 한다.
예제 $ cd /home [Enter]'
$ pwd [Enter]'
/home
# pwd
: 현재 작업하는 디렉토리를 알기 위해서 pwd 명령을 사용한다.
문법 pwd
현 디렉토리(current directory)가 무엇인지 보여준다.
예제 $ pwd
/home/blade
# cat
: cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.
문법 cat [ -benstuvETA ] [ 파일명(들) ]
옵션 • -b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
• -e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
• -n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
• -s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
• -r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
• -u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
• -v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
• -E : 각 행마다 끝에 $ 문자를 출력한다.
• -T : 시로서 탭(tab) 문자를 출력한다.
• -A : -vET 옵션을 사용한 것과 같은 효과를 가진다.
예제 $ cat document.1
설명 document.1 파일을 화면으로 출력한다.
# finger
: 시스템 상의 사용자들에 대한 정보를 보여준다.
문법 finger [ -slpm ][ 사용자 ]
옵션 • -s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
• -I : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
• -p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.
설명 인수로 아무 것도 주어지지 않으면, finger는 현재 시스템에 로그인되어 있는 사용자들을 보
여준다. 옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.
예제 $ finger
Login Name Tty Idle Login Time Office Office Phone
blade kimtaihan 2 1 Oct 20 11:31
root root 1 Oct 20 11:28
# mkdir
: 디렉토리를 새로 만들기 위해 mkdir 명령을 사용한다.
문법 mkdir [ -m mode ][ -p ] directory
옵션 • -m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄 수 있다.
• -p : 만들 디렉토리의 상위 디렉토리까지 한꺼번에 만든다.
예제 $ mkdir blade.seoul [Enter]' ,,현재 디렉토리의 하위 디렉토리 작성
$ cd blade.seoul [Enter]'
$ mkdir -p blade/books [Enter]'
설명 이것은 현재 디렉토리에서 하위 디렉토리 blade를 먼저 만든 후에 다시 그 하위 디렉토리로
books를 만든다.
# rm
: 파일을 지우는 명령이다. 이것은 remove의 의미를 가진 이름임을 기억하라.
문법 rm [ -firv ] 파일명
옵션 • -f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 성가신 작업을 하지
않고서도 강제로 파일을 지울 수 있다.
• -i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.
• -r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
• -v : 파일을 지우기 전에 파일의 이름을 나타내준다.
예제 $ rm blade.Z [Enter]'
$ rm report.txt tempfile object.mainroutine hello.java[Enter]'
$ rm -r blade ,, blade와 하위 디렉토리 파일 모두를 제거
# rmdir
: 원하는 디렉토리를 제거한다.
문법 rmdir [ -p ] 디렉토리
옵션 • -p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할
수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지
를 보여준다.
# who
: 현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
문법 who [ -uTHqs ] [로그온 정보파일 ]
whoamI
옵션 • -u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
• -T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있
고, -는 그렇지 않음을 보여준다.
• -H : 헤더 라인을 프린트한다.
• -q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
• -s : 호환을 위해 포함된 옵션으로 무시된다.
예제 $ whoamI [Enter]'
이런 명령도 가끔은 필요할 것이다. 가령 친구의 계정으로 로그인했는데 그것을 잊어버렸을
경우라든지 아무도 없는 학교 실습실에 켜진 채 놓여진 터미널을 발견했을 때 누가 사용하
다가 자리를 비웠는지 알고 싶을 때 등이다.
# more
: 한 화면씩 츨력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.
문법 more [ -ncdflspu ][ +줄번호 ][ 파일이름(들) ]
옵션 • -n : 여기서 n은 숫자를 의미하여, 숫자는 출력 윈도우의 행수를 지정한다.
• -c : 위에서부터 한 행씩 지운 후 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을
출력하기 시작한다. 특정한 터미널을 위해 사용한다.
• -d : 스페이스나 q 키를 누르라는 프롬프트를 출력한다.
• -f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바
꿈을 하여 새로운 행으로 계산된다. -f 옵션을 사용하면 이러한 행은 계산하지 않는다.
• -s : 여러 개의 빈 공백행은 하나로 취급한다.
• -p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
• -u : 밑줄 차기를 금지한다.
예제 $ cat document.97 | more
기본적으로 more 명령은 첫 번째 줄 내용부터 출력한다. 하지만 원하는 부분부터 출력을 원
한다면 다음과 같은 방법으로 실행할 수 있을 것이다. 다음은 13번째 행부터 출력을 시작한다.
$ more +13 loveletter.txt [Enter]'
# clear
: clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.
# hostname
: 현재 설정되어 있는 호스트의 이름을 표시하거나 변경한다.
문법 hostname [ 호스트이름 ]
설명 이것은 인수없이 사용된다면 현재 설정되어 있는 호스트 이름을 보여준다. 리눅스는 기본
적으로 프롬프트에서 호스트의 이름을 보여줄 것이다. 혹은 사용자가 프롬프트에 호스트
이름이 나타나도록 할 수도 있다. 인수로서 새로운 호스트 이름을 지정한다면 새로 지정된
이름으로 호스트 이름을 바꾼다. 하지만 이런 작업은 수퍼 유저만이 할 수 있다.
예제 $ hostname
Blade
# cp
: 파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다.
문법 cp [ -abdfilPprsuvxR ] 파일명1 파일명2
cp [ -abdfilPprsuvxR ] 파일명(들) 디렉토리
옵션 • -a : 가능한한 원 파일의 구조와 속성을 그대로 복사한다.
• -b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
• -d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유
지한다.
• -f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
• -i : 복사시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
• -I : 하드 링크를 만든다.
• -P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
• -r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
• -s : 디렉토리가 아닌 파일의 심볼릭 링크를 만든다. 소스 파일의 이름은 전체 경로 이름
으로 한다. 목적지 파일 이름은 전체 경로를 주지 않아도 현재 디렉토리로 간주되므
로 상관없다.
• -u : 파일의 정보를 갱신한다.
• -x : 다른 파일 시스템인 하위 디렉토리는 무시한다.
• -R : 디렉토리를 재귀적(recursive)으로 복사한다.
설명 만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복
사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있
다. -i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할
수 있게 물어온다.
예제 $ cp -i blade.Z temp.Z
$ cp -r * /somewhere
당연히 -r 옵션은 파일명2가 디렉토리 이름일 때만 사용이 가능하다.
# mv
: 파일의 위치를 이동하거나 파일의 이름을 바꾸어준다.
문법 mv [ -fi ] 파일명1 파일명2
mv [ -fi ] 파일명(들) 디렉토리명
옵션 • -f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기
를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
• -i : 파일을 덮어쓰기 전에 사용자에게 확인한다.
설명 기존에 있던 파일을 원치않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용
하는 것을 권한다.
예제 $ mv sisap.hong victor.dongki readme.txt ../friend [Enter]'
$ mv blade.Z ../kimtaihan.Z [Enter]'
$ mv /home/blade /home/friend [Enter]'
$ mv sisap.doc LeeKiHong.doc [Enter]'
# date
: 시스템은 현재의 날짜와 시간을 유지하고 있다. date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.
예제 $ date [Enter]'
The Oct 1 15:57:23 KST 1996
# df
: 디스크의 여유 공간을 검사하여 보고한다.
문법 df [ -aikpvtx ] 파일시스템
옵션 • -a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.
• -i : 블록 사용 대신 incode 사용 정보를 보고한다.
• -k : 블록의 크기를 1K바이트로 계산한다.
• -p : POSIX 형태의 출력을 한다.
• -v : System V의 df와의 호환을 위한 옵션이다. 무시된다.
• -t 형태 : 특정 형태의 파일 시스템으로 검사를 제한한다.
• -x 형태 : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.
설명 이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적
으로 512바이트 크기로 한 블록을 다룬다.
# env
: 현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다.
문법 env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]
옵션 • - : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
• -i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
• -u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.
설명 '이름=값'의 형식으로 특정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대
로 여러 개 나열하면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의
상태는 이전과 다름없게 된다.
예제 $ env HOME=/usr/victor tsh
홈 디렉토리 변수를 지정하여 셸을 실행한다.
$ env ,,현재 설정되어 있는 환경 변수들을 보여준다.
# find
: 원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.
문법 find [ 디렉토리 ] 탐색 조건
탐색 조건
• -name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
• -perm 모드 : 파일 권한(permission)이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수
있는 형태와 같이 지정한다.
• -type ? : 형태가 같은 파일을 찾는다. 물음표(?) 부분에 디렉토리는 d, 파이프는 p, 심볼
릭 링크는 l, 소켓은 s, 블록 파일은 b, 일반 파일은 f 등의 기호를 사용한다.
• -links ? : 특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
• -size ? : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 물음표 부분에
지정한다. 한 블록은 512바이트로 내정되어 있지만 블록 숫자 뒤에 단위로 k자
를 붙이면 1키로바이트 크기의 블록 숫자로 간주된다.
• -user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.
• -atime ? : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 ?에 명시한다.
• -exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행한다. 명령의 끝
은 \;을 사용하여 끝낸다. find가 검색해낸 파일의 이름을 인수로 사용하고
싶다면 그 위치에 {}를 사용한다.
• -newer 파일 : 어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.
예제 $ find /bin -name ro*
$ find -user qwfwq -exec cat {} list\;
# chmod
파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.
문법 chmod [ -cfvR ] 모드 파일명(들)
chmod [ -cfvR ] 레벨 동작 권한 파일이름(들)
옵션 • -c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
• -f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
• -v : 변경된 권한에 대해서 자세히 기술한다.
• -R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.
예제 $ chmod 666 broadboard ,,파일을 모두가 읽고 쓸 수 있도록 한다.
$ chmod 746 broad ,,파일 권한을 -rwxr--rw-로 변경한다.
$ chmod o+x,g-w broadboard
# file
: 파일이 어떠한 형태의 파일인지 알아낸다.
문법 file [-czL ][ -fm 파일명 ] 파일명(들)
옵션 • -c : 매직 파일의 파싱된 형태를 보여준다.
• -z : 압축되어 있는 파일의 형태를 검사한다.
• -L : 뒤따르는 심볼릭 링크를 야기시킨다.
• -f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
• -m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.
설명 파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다.
에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.
예제 $ file -z /home/Book.Z
# ln
: 두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근이 가능하도록 한다.
문법 ln [ -s ] 파일명1 파일명2
ln 파일명들 디렉토리
옵션 • -s : 하드 링크 대신 심볼릭 링크를 만든다.
예제 $ ln project theplan ,,두 개의 이름은 같은 문서를 의미한다.
# man
: 사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다.
문법 man [ 장 ] 단어
man -k 키워드
옵션 • -k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내
용을 검색하여 보여준다.
설명 셸을 사용할 때 어떤 명령의 사용법이 기억나지 않는 경우가 있다. 혹은 매번 사용하던 명령
이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있
다. 물론 참고 서적을 보면 되겠지만 터미널 상에서 필요한 도움말을 언제라도 제공받을 수
있다. 시스템에 내장된 매뉴얼은 빠르게 볼 수 있을 뿐만 아니라 그 내용도 완벽한 것이어서
옵션의 종류 같은 것은 빠진 것이 없다. 만일 온라인 레퍼런스를 모두 종이로 출력한다면 그
분량은 엄청날 것이 틀림없다.
위에서 보인 첫 번째 형식은 매뉴얼의 장 번호를 이름과 함께 명시해서 검색할 수도 있다.
하지만 보통은 그것을 생략하고, 검색하고자 하는 제목만을 인수로 전달해서 사용한다. 그
러면 자세한 내용을 볼 수 있을 것이다. 출력된 내용은 화살표 키를 사용해 위아래로 자유로
이 스크롤할 수 있다.
예제 $ man telnet