터미널 실행하기 / 닫기
실행: 프로그램 >보조프로그램 > 터미널
닫기: $ exit 또는 Ctrl + D
파일과 디렉토리 목록보기
$ ls
$ ls -a :숨김파일도 표시
$ ls -l : 자세한 정보 표시
$ ls -h : size단위를 읽기 쉽게 표시 (human)
$ ls --show-control-chars : 일반 영어가 아닌 글자들을 출력하는 옵션
$ ls --color :파일의 종류에 따라 다른 색으로 표시
$ ls -c : 파일의 생성이나 변경된 시간에 따라 정렬하여 표시
$ ls -F : 파일의 종류에 따라 파일 이름 뒤에 특정 문자를 추가하여 표시
$ ls -R : 하위 디렉토리의 내용까지 모두 표시
$ ls -al --colorpwd
현재의 작업 디렉토리 표시
$ pwd
디렉토리 이동하기
$ cd /home
$ cd /: 최상위 디렉토리로 이동
$ cd ~: 홈 디렉토리로 이동
$ cd ./xxx: 현재 디렉토리 및에 xxx디렉토리로 이동
$ cd ..: 바로 위 디렉토리로 이동
$ cd ../..: 2단계 위 디렉토리로 이동
$ cd ~/Downloads: 홈디렉토리 아래에 있는 Downloads 디렉토리로 이동
파일 복사하기
$ cp [원본파일이름] [대상파일이름] : 파일을 복사하되 이름을 [대상파일이름]으로 변경하여 복사
$ cp [원본파일이름] [대상디렉토리이름] : 디렉토리안에 파일 복사
$ cp [원본파일이름] [대상디렉토리/파일이름] : 이름을 바꾸어서 지정한 디렉토리에 복사
$ cp -r [원본디렉토리이름] [대상디렉토리이름] : 디렉토리를 통채로 복사하되 이름을 [대상디렉토리이름]로 변경하여 복사
$ cp -rb [원본디렉토리이름] [대상디렉토리이름] : 디렉토리를 통채로 복사하되, 같은 이름이 있을 때는 ~문자를 덧붙여 백업 파일 생성
$ cp -d : 링크되어 있는 파일 자체를 심볼릭 링크 정보와 함께 복사
$ cp -f : 복사할 파일이 존재하는 경우에 기존의 파일을 강제로 삭제하고 복사
$ cp -p : 원본 파일의 소유, 권한 등의 파일 정보를 그대로 유지하면서 복사
$ cp -u : 대상 파일보다 원본 파일이 새로운 것일 때만 복사
$ cp -i : 복사할 파일이 존재할 경우에는 복사할 것인지 묻는다.
$ cp -a : archive, -dpR과 동일
$ cp -rfdpu : 옵션들을 복합적으로 줄 수 있다.
파일이나 디렉토리 이동하기
$ mv [원본파일명] [대상디렉토리명] : [원본파일명]을 [대상디렉토리명]안으로 이동
$ mv [원본파일명] [대상파일명] : [원본파일명]을 [대상파일명]로 변경
$ mv [원본디렉토리] [대상디렉토리] : [대상디렉토리]가 존재하면 [대상디렉토리] 밑으로 이동, 존재하지 않으면, [원본디렉토리]를 [대상렉토리]로 이름 변경 효과
디렉토리 만들기/ 삭제하기/ 파일 삭제하기/ 파일 유형 표시하기
만들기
$ mkdir [디렉토리명]
$ mkdir -p /project/src : 'project' 와 'src'디렉토리를 한번에 만들 때
삭제
$rm -i [파일이름] : 삭제할 때마다 정말 삭제할 것인지 물어 봄
$ rm -rf [디렉토리명 : 해당 디렉토리 및 그 서브디렉토리까지 모두 삭제
파일 정보 확인
$ file [파일명] : 해당 파일의 유형을 알려준다.
빈 파일 만들기
$ touch couter.text
파일의 내용 보기
텍스트파일의 내용을 페이지 단위로 보기
$ more [파일이름] : 옵션( 스페이스바 : 다음 페이지, 엔터 : 한줄이동 , ' : 파일의 맨앞장으로 이동, v : vi로 편집, q : 종료 )
텍스트파일의 앞 부분 보기/ 텍스트파일의 끝 부분 보기
$ tail -n [파일이름] : 맨 뒤의 n 개의 줄만 표시
$ cat aaa.txt | more
$ head -n [파일이름] : 처음 n 개의 줄만 표시 (dmesg | head -5)
텍스트파일의 내용보기
$ cat [파일이름] : 지정한 텍스트 파일의 내용을 보여 줌
$ cat -n [파일이름] : 파일에 줄번호를 삽입하여 표시
파일의 문자와 단어, 줄의 수 알아내기
$ wc [파일이름]: 파일에 포함된 줄, 단어, 글자수, 해당파일명 순으로 표시
$ cat aaa.txt | wc
$ wc -l : 줄 수 와 해당파일명 만 표시
텍스트파일 정렬하기
sort 명령으로 텍스트 파일의 내용을 정렬할 수 있다. 정렬은 행을 기준 단위로 한다.
숫자의 크기별로 정렬할 내용이면 -n 옵션을 준다. 역순으로 정렬할 때는 옵션 -r을 준다.
정렬한 내용을 파일로 저장하려면 옵션 "-o 저장할 파일명"을 추가하면 된다.
$ sort fruits
$ sort fruit -o fruits-1
사용자 조회하기 / 자신의 사용자 ID 표시하기 / 비밀번호 변경하기
$ who : 현재 시스템에 로그인하여 사용중인 사용자의 목록 표시
$ whoami : 자신의 사용자 ID 표시
$ passwd : 자신의 비밀번호 변경
$ passwd [사용자ID] : 슈퍼유저인 경우에 사용자의 비밀번호 변경
현재 날자와 시간 정보 표시하기 / 화면 삭제하기
$ date : 현재의 날짜와 시간 정보 표시
$ date [MMDDhhmmYYYY] : 시스템의 시간을 변경 (월일시분년)
$ clear : 화면을 깨끗하게 지울 때
특정 명령어에 대한 도움말 보기
$ man [명령어] : 해당 명령어의 도움말 보기 ( 스페이스바 : 다음 페이지, q : 종료)
특정 내용을 포함하는 파일 찾기 / 파일 찾기
text 파일일 경우만 해당됨.
$ grep [특정내용] [찾을 파일] : (텍스트 파일에서 특정 내용을 포함하는 파일을 찾아서 포함된 행을 표시해 준다.)
$ grep linux * : 현재 디렉토리에 있는 모든 파일 중에서 linux가 글자가 들어간 파일 찾아서 내용을 해당 행을 보여준다.
$ grep -r linux ./* : 하위 디렉토리를 모두 검색
$ grep -n linux * : 줄 번호까지 표시
$ grep -i linux * : 찾을 글자의 대소문자를 구분하지 않음
$ find [찾을경로] [옵션] [찾을파일명]
$ find . -name "search*" -print (. : 현재 디렉토리, 현재 디렉토리에서 search로 시작하는 이름을 가진 파일을 찾아서 화면에 print해라!!! )
$ find [경로] -name [찾을 파일명] -exec 명령어 {} \; -print : 찾은 파일을 지정에 대해 지정한 명령어를 적용시킴
$ find . -name "*.bak" -exec rm {} \; -print : 현재 디렉토리에서 그 하위의 디렉토리에 존재하는 이름이 '*.bak'인 파일을 모두 찾아 삭제한다. find는 기본적으로 하위 디렉터리까지도 검색한다. 옵션에서 지정하기에 따라서 이름별, 날짜별,형태별, 길이별 등등으로 파일을 찾을 수 있다. 또한 찾은 파일에대해 일정한 명령을 수행하도록 할 수 있다. 사용 형식은 다음과 같다. $find 찾을디렉터리 옵션 '찾을파일' 연산자, 연산자란 찾은 파일에대한 명령이다. -print(화면에 출력), -exec rm {}(파일 지우기)등을 말한다. -print외의 연산자 뒤에는 명령이 끝난 다음에 \;로 명령의 끝을 알린다.
$ find . -name "file*" -exec grep linux {} \; -print
디스크 용량 확인하기/ 특정 디렉토리 사용량 확인하기 / 현재 구동 중인 프로세스 표시하기 / 프로세스 종료하기
$ df -m: 마운트되어 있는 하드 디스크의 용량을 메가 바이트 단위로 표시
$ df -h : 사람이 보기에 익숙한 단위로 표시해줌.
$ du -m [디렉토리명]: 특정 디렉토리의 디스크 사용량을 메가바이트 단위로 확인
$ du -h 현재 디렉토리의 사용량을 보여준다. 사람이 보기에 익숙한 단위로 표시해줌.
프로세스 표시
$ ps : 자신이 구동한 프로세스 표시
$ ps -ef : 현재 구동 중인 모든 프로세서 목록 표시
$ kill [해당프로세스ID] : 해당 프로세스 종료 시킴
파일 링크
$ ln hangle kangle : 하드링크로 동일한 파일에 대해 다른 이름을 갖는다.
$ ls -i : inode가 같으면 하드 링크다. 리눅스에서 모든 파일은 독립적인 inode를 갖는다.( 실제로 symbolic 링크가 주로 사용된다.)
$ ln -s [링크시킬파일이름] [링크파일이름]
$ ls -l : 서로 다른 inode를 가지며 파일구조도 다르다. 링크시킬 파일을 삭제하면 링크된 파일이 존재해도 실행되지 않는다.
$ unlink [링크시킨파일이름] : 링크를 해제한다.
<9/6 월>
명령어에서 사용 가능한 메타 문자
Redirection 사용하기 (출력: >, >> 입력: < , << )
$ ls -al > list.txt : 명령어 실행 결과를 list.txt 파일에 저장함, 지정한 파일이 없으면 생성하고 있으면 모두 지우고 새로 기록
$ ls -al >> list.txt : list.txt 파일이 없으면 생성하고 저장하며, 존재하면 기존의 내용은 놔두고 새로운 내용을 맨 뒤에 기록
$ cat -n < [파일이름] : 명령어의 입력으로 파일을 지정할 수 있도록 함
pipe 사용하기( | ) : 명령어의 출력을 다음 명령어의 입력으로 전달한다.
$ 명령어1 | 명령어2 : 명령어1의 출력을 명령어2의 입력으로 전달$ ps -ef | grep mysql : 많은 프로세스 중에서 mysql 관련된 명령어만 보여줌
와일드카드 사용하기 (*, ? )
$ ls -al kim* : *은 모든 문자를 대치
$ ls -al kim?.??? : 지정한 위치의 모든 문자를 대치
명령어 순차 실행시키기 ( ; ) / 백그라운드 실행하기( & )/ 문자 범위 지정하기 ( [..])
순차적인 실행
$ ls -al ; who ; ps
위 명령어는 아래의 3개 명령어를 각각 실행시킨 것과 같다.
$ ls -al kill
$ who
$ ps
백그라운드 / 포그라운드 (backgroud / foreground)
$ jobs (현재 백그라운드 작업 리스트를 보여줌)
$ fg %num (num 백그라운드를 포그라운드로 되돌려준다)
$ (콘트롤 + Z) :일시 정지
$ bg %num (해당 번호의 작업을 백그라운드로 전환)
$ fg %num (num job을 다시 실행)
$ ./my_program & (처음부터 백그라운드로 실행)
파일 권한 변경 (chmod)
Owner Group others
rwx rwx rwx
421 421 421
r : 읽기 권한
w : 쓰기/수정/삭제
x : 실행(디렉토리일 경우는 그 디렉토리로 들어갈수 있는 권한)
u 파일 소유자, g 그룹, o 기타 사용자, a 모든 사용자
+ 사용허가부여, - 사용허가박탈
r 읽기 허가, w 쓰기 허가, x 실행 허가
특정 사용자를 지정하지 않으면 모든 사용자를 의미한다
$ chmod +go+r test.c : 소유자 그룹과 기타 사용자에게 읽기 허가
$ chmod ugo-w test.c : 소유자,그룹,기타 사용자에게 읽기 허가 박탈
$ chmod +x test.c : 소유자, 그룹, 기타 사용자에게 실행권한 부여
$ chmod o -rwx test.c : 그룹사용자에게서 모든 권한 박탈
$ chmod 744 test.c
-rwxr--r-- 1 edul user 235 Oct 15 13:23 test.c
$ chmod 724 test.c
-rwx-w-r-- 1 edul user 235 Oct 15 13:23 test.c
주로 사용되는 것 x(실행) 권한을 주는 것과 관련되어 있다.
일반 유저로 권한변경이 잘 않되는 경우는 root유저로 변경후 실시할 것.
root로 변경
$ su 엔터 : root user가 원래 갖고 있었던 환경값들(path 설정등등) 가져오지 않고 root user로 변경
$ su - 엔터 : root user가 원래 갖고 있었던 환경값들(path 설정등등) 가져오면서 root user로 변경
파일 소유자 변경 (chown)
# chown jason file1 : file1의 소유자를 jason으로 변경
# chown jason dir1: dir1의 소유자를 jason으로 변경
chwon -R jason dir1: dir1 하위 모든 파일,디렉토리들의 소유자를 jason으로 변경
파일 압축 풀기
파일확장자의 의미 gz --> gzip, bz2 --> bzip2, zip --> zip 으로 압축됨
$ gzip -d linux-2.6.33.tar.gz ==> linux-2.6.33.tar 파일이 생성됨.
$ bzip2 -d linux-2.6.33.tar.bz2 ==> linux-2.6.33.tar 파일이 생성됨.
$ unzip file_name.zip
$ tar tvf linux-2.6.33.tar ==> 파일리스트 보기(t 옵션)
$ tar xvf linux-2.6.33.tar ==> 풀기(x : eXtract)
$ tar xvf(z) linux-2.6.33.tar.gz ==> linux-2.6.33 디렉토리가 생성되면서 그 아래 파일들과 디렉토리들이 압축/tar가 모두 풀린다.
$ tar xvf(j) linux-2.6.33.tar.bz2
==> linux-2.6.33 디렉토리가 생성되면서 그 아래 파일들과 디렉토리들이 압축/tar가 모두 풀린다.
c : create
v : verbose(장황하게)
f : 옵션다음에 만들어질 파일명을 쓴다.
t : list보기
x : eXtract
리눅스 명령어을 다른 이름으로 사용하기: alias
alias type='cat' : 여기서 type는 별칭, cat는 리눅스 명령어이다. alias를 항상 실행되게 하려면 홈 디렉터리의 .bashrc_profile이나 /etc/profile, .bashrc 등에 저장해 놓으면 된다.
unalias type : alias의 해제. 계속해서 사용하지 않을려면 ashrc_profile이나 /etc/profile, .bashrc등의 파일을 수정하면 된다.
파일 내의 특정 문자열 바꿀 때: sed
텍스트 파일에 있는 특정 문자열을 다른 문자열로 바꾸려면 sed를 사용한다.
예를 들어 test3.txt에서 unix라는 문자열을 linux로 바꾸려면
$sed -e 's/unix/linux/g' <> test3-1.txt 라고 하면 된다.
e는 에디트 모드를 뜻하는 옵션이다.
s의 의미는 치환(substitute)명령이고,
끝의 g는 플래그인데 한 행에 같은 단어가 여러 번 나와도 모두 치환하라는 명령이다.
> test3-1.txt은 문자열이 바뀐 것을 test3-1.txt로 저장하라는 뜻이다.
sed는 치환 이외에도 삽입, 삭제등 여러 가지 명령을 수행할 수 있다.
자세한 사용법은 $info sed나 $man sed 해서 알아 보면 된다.
여러 파일을 하나로 합치기: cat
$ cat text1.txt text2.txt text3.txt > text.txt : 세 파일을 합쳐서 하나의 파일 text.txt를 만든다.
$ cat 123.txt : 123.txt의 내용을 콘솔에 출력
$ cat love.wav > /dev/dsp 또는 /dev/audio :소리(.wav, .au)를 출력
cat는 단순히 파일을 표준 출력으로 내보내는 프로그램이다.
큰 파일을 작게 쪼개기: split
크기가 큰 파일을 나눌 때 split을 사용한다. 옵션을 -b(Bytes)로 주면 파일을 크기로 나누고, -l(Line)로 주면 텍스트 파일을 행으로 나눌 수 있다.
sort 명령으로 텍스트 파일의 내용을 정렬할 수 있다. 정렬은 행을 기준 단위로 한다.
숫자의 크기별로 정렬할 내용이면 -n 옵션을 준다.
역순으로 정렬할 때는 옵션 -r을 준다.
정렬한 내용을 파일로 저장하려면 옵션 "-o 저장할 파일명"을 추가하면 된다.
$ sort fruits
$ sort fruit -o fruits-1
사용자 조회하기 / 자신의 사용자 ID 표시하기 / 비밀번호 변경하기
#who : 현재 시스템에 로그인하여 사용중인 사용자의 목록 표시
#whoami : 자신의 사용자 ID 표시
#passwd : 자신의 비밀번호 변경
#passwd [사용자ID] : 슈퍼유저인 경우에 사용자의 비밀번호 변경
현재 날자와 시간 정보 표시하기 / 화변 삭제하기
#date : 현재의 날짜와 시간 정보 표시
#date [MMDDhhmmYYYY] : 시스템의 시간을 변경 (월일시분년)
#clear : 화면을 깨끗하게 지울 때
특정 명령어에 대한 도움말 보기
man [명령어] : 해당 명령어의 도움말 보기 ( 스페이스바 - 다음 페이지, :q -종료)
특정 내용을 포함하는 파일 찾기 / 파일 찾기
#grep [특정내용] [찾을 파일] : (텍스트 파일에서 특정 내용을 포함하는 파일을 찾기
#grep linux * : 현재 디렉토리에 있는 모든 파일 중에서 linux가 글자가 들어간 파일 찾기
#grep -n linux * : 줄 번호까지 표시
#grep -i linux * : 찾을 글자의 대소문자를 구분하지 않음
#find [찾을경로] [옵션] [찾을파일명]
#find . -name "search*" -print
#find [경로] -name [찾을 파일명] -exec 명령어 {} \; -print : 찾은 파일을 지정에 대해 지정한 명령어를 적용시킴
#find . -name "*.bak" -exec rm {} \; -print : 현재 디렉토리에서 그 하위의 디렉토리에 존재하는 이름이 '*.bak'인 파일을 모두 찾아 삭제한다. find는 기본적으로 하위 디렉터리까지도 검색한다. 옵션에서 지정하기에 따라서 이름별, 날짜별,형태별, 길이별 등등으로 파일을 찾을 수 있다. 또한 찾은 파일에대해 일정한 명령을 수행하도록 할 수 있다. 사용 형식은 다음과 같다. $find 찾을디렉터리 옵션 '찾을파일' 연산자, 연산자란 찾은 파일에대한 명령이다. -print(화면에 출력), -exec rm {}(파일 지우기)등을 말한다. -print외의 연산자 뒤에는 명령이 끝난 다음에 \;로 명령의 끝을 알린다.
#find . -name "file*" -exec grep linux {} \; -print
디스크 용량 확인하기/ 특정 디렉토리 사용량 확인하기 / 현재 구동 중인 프로세스 표시하기 / 프로세스 종료하기
#df -m: 마운트된어 있는 하드 디스크의 용량을 메가 바이트 단위로 표시
#du -m [디렉토리명]: 특정 디렉토리의 디스크 사용량을 메가바이트 단위로 확인
#ps : 자신이 구동한 프로세스 표시
#ps -ef : 현재 구동 중인 모든 프로세서 목록 표시
#kill [해당프로세스ID] : 해당 프로세스 종료 시킴
파일 링크
$ ln hangle kangle : 하드링크로 동일한 파일에 대해 다른 이름을 갖는다.
$ ls -i : inode가 같으면 하드 링크다. 리눅스에서 모든 파일은 독립적인 inode를 갖는다.
$ ln -s [링크시킬파일이름] [링크파일이름]
$ ls -l : 서로 다른 inode를 가지며 파일구조도 다르다. 링크시킬 파일을 삭제하면 링크된 파일이 존재해도 실행되지 않는다.
명령어에서 사용 가능한 메타 문자
Redirection 사용하기 (출력: >, >> 입력: < , << )
$ ls -al > list.txt : 명령어 실행 결과를 list.txt 파일에 저장함, 지정한 파일이 없으면 생성하고 있으면 모두 지우고 새로 기록
$ ls -al >> list.txt : list.txt 파일이 없으면 생성하고 저장하며, 존재하면 기존의 내용은 놔두고 새로운 내용을 맨 뒤에 기록
$ cat -n < [파일이름] : 명령어의 입력으로 파일을 지정할 수 있도록 함
pipe 사용하기( | ) : 명령어의 출력을 다음 명령어의 입력으로 전달한다.
$ 명령어1 | 명령어2 : 명령어1의 출력을 명령어2의 입력으로 전달
$ ps -ef | grep mysql : 많은 프로세스 중에서 mysql 관련된 명령어만 보여줌
와일드카드 사용하기 (*, ? )
$ ls -al kim* : *은 모든 문자를 대치
$ ls -al kim?.??? : 지정한 위치의 모든 문자를 대치
명령어 순차 실행시키기 ( ; ) / 백그라운드 실행하기( & )/ 문자 범위 지정하기 ( [..])
$ ls -al ; who ; ps : 명령을 순차적으로 실행하여 보여줌
$ 명령어 & : 서버 프로그램 실행과 같이 쉘의 제어를 받지 않고 무한으로 구동시키는 방법으로 새로운 프로세스가 생성