현재 위치의 파일 목록을 조회하는 명령어 입니다.
주요 옵션
ls -l
: 파일들의 상세정보를 나타냅니다.
ls -a
: 숨어있는 파일들도 표시합니다.
ls -t
: 파일들을 생성된 시간별로(최신것 부터) 표시합니다.
ls -rt
: 파일들을 오래된 시간부터 표시합니다.
ls -F
: 파일을 표시할 때 마지막에 유형을 나타내는 파일명을 끝에 표시합니다. ( '/' - 디렉토리 , '*' - 실행파일 , '@' - 링크 )
각 옵션들은 자유자재로 합성해서 사용가능합니다.
ls -lrt
: 파일들의 상세정보를 나타내며, 오래된 것부터 포시합니다.경로를 이동할 때 사용하는 명령어 입니다.
주요 옵션
cd ~
: 어느 곳에든지 홈디렉토리로 바로 이동합니다.
cd ..
: 상위 디렉토리로 이동합니다.
cd /dir
: 절대경로 dir 로 이동할 경우 사용합니다.
cd -
: 이동하기 바로 전의 디렉토리로 이동합니다.
파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어 입니다.
주요 옵션
touch filename
: filename 의 파일을 생성합니다.
touch -c filename
: filename 의 시간을 현재시간으로 변경합니다.
touch -t 200001011200 filename
: filename 의 시간을 날짜정보(YYYYMMDDhhmm) 로 변경합니다.
touch -r filename1 filename2
: filename2의 날짜정보를 filename1 의 날짜정보와 같게 변경합니다.
새로운 디렉토리를 만들 때 사용하는 명령어입니다.
주요 옵션
mkdir dirname
: dirname 의 디렉토리를 생성합니다.
mkdir -p dirname/subdname
: 존재하지 않는 디렉토리의 하위디렉토리까지 생성합니다.
mk -m 644 dirname
: 특정 퍼미션을 갖는 디렉토리를 생성합니다.
파일을 복사하는 명령어 입니다.
주요 옵션
cp file cfile
: file 을 cfile 이라는 이름으로 복사합니다.
cp -f file cfile
: 복사할 때 복사대상이 있으면 지우고 강제로 복사합니다.
cp -R dir cdir
: 디렉토리 복사할 때 사용하며, 폴더안의 모든 하위경로와 파일들을 모두 복사합니다.
- cp 와 차이점
- cp는 파일을 복사하여 원본 파일이 남아있지만 mv 는 원본 파일이 남지 않는다
- 이름 변경시에도 사용가능합니다.
주요 옵션
mv fname mfname
: fname 의 파일을 mfname 의 이름으로 이동/변경 합니다.
mv -b fname mfname
: mfname 의 파일이 존재하면 mfname 을 백업한 뒤에 이동합니다.
mv -f fname mfname
: mfname 의 파일이 존재하면 백업 없이 덮어씁니다.
파일이나 디렉토리를 삭제할 때 사용하는 명령어 입니다.
주요 옵션
rm fname
: fname 을 삭제합니다.
rm -f fname
: fname 을 묻지 않고 삭제합니다.
rm -r dir
: dir 을 삭제합니다.
-r
옵션 없이는 삭제할 수 없습니다.파일이름을 인자로 받아서 그 내용을 출력할 때 사용합니다.
주요 옵션
cat fname
: fname 의 내용을 출력합니다.
cat fname1 fname2
: fname1 과 fname2 의 내용을 이어서 출력합니다.
cat fname1 fname2 | more
: fname1, fname2 를 출력하는데 페이지별로 출력합니다.
cat fname1 fname2 | head
: fname1, fname2 를 출력하는데 처음부터 10번째까지만 출력합니다.
cat fname1 fname2 | tail
: fname1, fname2 를 출력하는데 끝에서부터 10번째까지만 출력합니다.
리눅스 스트림의 방향을 조정하는 명령어 입니다.
명령 > 파일
: 명령의 결과를 파일로 저장합니다.
cat fname1 fname2 > fname3
: fname1,fname2 를 출력하고 fname3 이라는 파일에 저장합니다.명령 >> 파일
: 명령의 결과를 파일에 추가합니다.
cat fname4 >> fname3
: fname3 에 fname4 의 내용을 추가합니다.명령 < 파일
: 파일의 데이터를 명령에 입력합니다.
cat < fname1
: fname1 의 내용을 출력합니다.cat < fname1 > fname2
: fname1 의 내용을 출력하는 결과물을 fname2 에 저장합니다.자주 사용하는 명령어를 간단한 명령어로 설정하는 명령어 입니다.
unalias
를 사용합니다.alias new = 'command'
: command 를 실행하는 새 명령어 new 를 만듭니다.
ex) alias ls='ls -l'
: ls 를 실행하면 -l 옵션을 갖는 ls를 실행합니다.
alias
: 현재 alias 목록을 출력합니다.
unalias new
: new 라는 alias 를 해제 합니다.
쌍느낌표(Double exclamation) !!
주요 옵션
!! | grep Linux
sudo !!
다음과 같이 root 권한 명령어인데 'sudo' 없이 사용한 명령어를 쉽게 불러와 사용할수 있다.
이는 방향키를 올려서 이전 명령어를 불러 오고 다시 앞쪽으로 이동하여 에디트하는 번거로움을 피할수 있다.
echo !! > script.sh
'!'의 기능은 조금 다른데, 이는 명령어 이력번호를 호출하는데 사용된다.
! 이력번호
이전 명령어들이 각각 고유 식별번호가 존재하는데, 그 식별번호를 사용하여 재 사용이 가능하다.
!1093
!-이력상대순번
: 마지막 명령어로 부터 뒤로 두번째 명령어를 재호출할때 !-2
이렇게 사용하면 된다.
주요 옵션
!^
: 이전 명령어의 첫번째 argument이다.
!$
: 이전 명령어의 마지막 argument이다.
!*
: 이전 명령어의 전체 argument가 있다.
응용 - 특정 명령어의 인수를 사용할 수 있다.
$ ls !ls:2
chmod
: 파일과 디렉터리의 권한을 변경할 때 사용합니다.testfile2 파일의 소유자는 root이고 권한은 소유자 (읽기/쓰기), 그룹 (읽기), 다른 사용자 (읽기)의 권한이 부여된 파일
권한 부분은 직관적으로 표기하기 쉽게 숫자로도 설정이 가능합니다.
chmod [권한] [변경할 파일 또는 디렉터리]
변경 방법
개별 단위 부여
chmod g+rw/go+rwx testfile2
문자를 활용하여 파일의 g(그룹), u(사용자), o(다른 사용자), a(모두)에 권한을 지정하는 방법입니다.
(+), (-)를 사용하여 권한을 부여하거나 제외시킬 수 있습니다.
숫자 단위 변경
chmod 777/766/744 testfile2
숫자를 활용하여 똑같이 g(그룹), u(사용자), o(다른 사용자), a(모두)에 권한을 지정하는 방법입니다.
r=4, w=2, x=1 따라서 더하면 7!!! 확실하게 기억합시다.
chown
: 파일과 디렉터리의 소유주를 변경할 때 사용합니다.chown -R
: 디렉터리 안의 파일들의 소유권도 동일하게 변경됩니다.
형식
chown [소유주] [변경할 파일]
chown [소유주] [변경할 디렉터리]
chown [소유주]:[그룹] [변경할 디렉터리]
chgrp
: 파일의 그룹만 변경할 때 사용합니다.chgrp [그룹] [변경할 파일]
소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다
ex) whereis perl
: perl의 위치를 알려준다
vi 편집기 상태로 들어감
ex) vi newfile
: vi 편집기 상태로 들어감
tar
.tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
형식
tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리)
: 묶을 때
tar xvf [파일명(.tar, _tar)]
: 풀 때
확장자 .Z 형태의 압축파일 생성
형식
compress [파일명]
: 압축시
uncompress [파일명]
: 해제시
확장자 .gz, .z 형태의 압축파일 생성
형식
gzip [파일명]
: 압축시
gzip -d [파일명]
: 해제시
.tar.Z
- 이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
- 아니면 다음과 같이 한 번에 풀 수도 있다.
zcat [파일명].tar.Z
: 해제 시
.tar.gz또는 .tar.z
gzip -cd [파일명]
: 해제시
.tar.gz 또는 .tar.z .tgz
- gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나, 다음과 같이 하면 한 번에 처리를 할 수 있다.
gzip -cd 파일.tar.gz | tar xvf - 또는 tar xvzf 파일.tar.gz tar xvzf 파일.tgz
특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어입니다.
tail
이나 ls
등 다양한 명령어와 조합하여 응용되는 경우가 많다.
형식
grep [옵션][패턴][파일명]
# 특정 파일에서 'error' 문자열 찾기
grep 'error' 파일명
# 여러개의 파일에서 'error' 문자열 찾기
grep 'error' 파일명1 파일명2
# 현재 디렉토리내에 있는 모든 파일에서 'error' 문자열 찾기
grep 'error' *
# 특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기
grep 'error' *.log
주요 옵션
c
: 일치하는 행의 수를 출력한다.
i
: 대소문자를 구별하지 않는다.
v
: 일치하지 않는 행만 출력한다.
n
: 포함된 행의 번호를 함께 출력한다.
l
: 패턴이 포함된 파일의 이름을 출력한다.
w
: 단어와 일치하는 행만 출력한다.
x
: 라인과 일치하는 행만 출력한다.
r
: 하위 디렉토리를 포함한 모든 파일에서 검색한다.
m 숫자
: 최대로 표시될 수 있는 결과를 제한한다.
E
: 찾을 패턴을 정규 표현식으로 찾는다.
F
: 찾을 패턴을 문자열로 찾는다.
grep은 다른 명령어와 조합해서 사용하는 경우도 많습니다.
실시간 로그 보기 (tail + grep)
tail -f mylog.log | grep 192.168.15.86
mylog파일을 실시간으로 액세스하고 IP주소가 192.168.49.16인 행만 추출
특정 파일에서 여러개 문자열 찾기
cat mylog.txt | grep 'Apple' | grep 'Banana'
|
파이프를 사용하면 grep명령어를 여러 개 사용하여 특정 파일에서 여러 개의 문자열을 찾을 수 있을 수도 있습니다.
위의 명령어대로 입력한다면 mylog.txt 파일에서 Apple과 Banana이 있는 문자열들을 찾을 수 있겠습니다.
리눅스 파일 시스템에서 파일을 검색하는 데 사용되는 명령어입니다.
형식
find [옵션] [경로] [표현식]
find . -name "*log*"
: 현재 위치에서 log가 들어가는 파일 모두 찾기 주요 옵션
P
: 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.
L
: 심볼릭 링크에 연결된 파일 정보 사용.
H
: 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
D
: 디버그 메시지 출력.
경로
find의 인자값으로는 경로를 받습니다.
상대 경로, 절대 경로 모두 가능하며 대부분의 리눅스의 경우 이 경로 인자 값을 생략한다면 현재 위치(.
)를 입력받은 것으로 간주
유닉스의 경우 이 경로를 입력받지 않으면 명령어 실행이 안되니 유의하셔야 합니다.
표현식
name
: 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음
type
: 지정된 파일 타입에 해당하는 파일 검색
user
: 해당 유저에게 속한 파일 검색
empty
: 빈 디렉토리 혹은 크기가 0인 파일 검색
delete
: 검색된 파일 혹은 디렉토리 삭제
exec
: 검색된 파일에 대해 지정된 명령 실행
path
: 지정된 문자열 패턴에 해당하는 경로에서 검색.
print
: 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
print0
: 검색 결과를 출력. 검색 항목은 null로 구분.
size
: 파일 크기를 사용하여 파일 검색.
mindepth
: 검색을 시작할 하위 디렉토리 최소 깊이 지정.
maxdepth
: 검색할 하위 디렉토리의 최대 깊이 지정.
atime
: n일 이내에 액세스된 파일을 찾음.
ctime
: n일 이내에 만들어진 파일을 찾음.
mtime
: n일 이내에 수정된 파일을 찾음.
cnewer file
: 해당 파일보다 최근에 수정된 파일을 찾음.
# 현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
# 현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
# 현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
# 현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
# 현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 test가 들어가는 디렉토리 찾기
find . -name "*test*" -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
d : 디렉토리
f : 일반적인 파일
l : 심볼릭 링크
# 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
find . -empty
# 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제
find . -name "*test*" -empty -delete
# 현재 디렉토리에서 1024byte인 파일 검색
find . -size 1024c
# 현재 디렉토리에서 1024byte보다 큰 파일 검색
find . -size +1024c
# 현재 디렉토리에서 1024byte보다 작은 파일 검색
find . -size -1024c
# 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색
find . -size +1k -size -10k
b : 블록단위
c : byte
k : kbyte
w : 2byte 워드
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -name "*test*" -exec ls -l {} \;
# 현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기
find . -type f -exec grep "test" {} \;
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm {} \;
리눅스(Linux)에서 파일을 검색하기 위해 주로 find
명령어를 사용합니다.
find
명령어는 다양한 옵션이 있어서 원하는 파일을 거의 완벽하게 찾아낼 수 있지만 처음부터 하나하나 검색을 수행하기 때문에 속도가 느린것이 단점입니다. 단순하게 파일명으로 빠른 검색이 필요할 때는 locate
명령어를 사용하는 것이 좋습니다.
sudo apt-get -y install mlocate
sudo updatedb
locate 파일이름
locate 명령어가 파일 검색에서 빠른 속도를 보이는 이유는 검색DB(파일 목록 데이터베이스, mlocate.db 파일)를 미리 생성하기 때문입니다.
sudo updatedb
명령어로 DB파일을 만들어야 합니다. 그 다음 locate
명령 다음에 검색하고 싶은 파일이름을 입력하면 됩니다.locate 명령은 미리 만들어 놓은 DB파일에서 파일을 검색하기 때문에 최근에 삭제된 파일도 검색이 되는 문제가 발생하게 됩니다.
이런 문제를 피하고 싶다면 locate 명령어를 사용하기 전에 updatedb
를 실행해야 합니다.
참고로 updatedb
작업은 크론(cron)에 등록되어 있어서 매일 새벽에 자동으로 실행됩니다.
크론(cron)
- 윈도우에서는 스케줄러와 비슷하다
- "특정 시간에 특정 작업을 해야한다."
참고
주요 옵션
-n
: 검색할 파일의 수를 지정
- 각 프로레스는 고유한 번호를 가지고 있고 이를 PID(process identification number)라 부른다.
- PID는 1번부터 시작하고 프로세스가 실행되면서 하나씩 증가하여 부여되는데, 우분투에서 PID 1번은 init 프로세스가 실행되며, 2번은 kthreadd 프로세스가 실행된다.
- init 프로세스는 나머지 모든 시스템 프로세스의 부모 프로세스
- kthreadd 프로세스는 모든 스레드의 부모 프로세스
형식
kill PID
주요 옵션
kill -9 PID
: 9번 시그널을 프로세스에 보내 프로세스를 강제 종료한다. (9번 시그널은 강제 종료 신호)
pkill -x CMD
: kill과 달리 PID가 아니라 프로세스의 명령 이름(CMD)로 프로세스를 찾아 종료.
사용법
추가된 디스트 Volume 확인
sudo fdisk -l
파일시스템 생성
sudo mkfs.ext4 /dev/vdb
mount 받을 디렉토리 생성
sudo mkdir /bluexmas_db
mount 하기
sudo mount /dev/vdb /bluexmas_db
mount 확인
df -h
unmount 하기
sudo umount /bluexmas_db
unmount 확인
df -h
[자동 mount]
1.sudo blkid
- UUID 확인
2.sudo vi /etc/fstab
- fstab 파일에 파티션 추가
3.# 파티션 추가 UUID=6e0b7ac6-d17d-4829-839f-80662339cf6b /bluesanta ext4 defaults 0 0
<br/><br/>
### man
<br/>
- 로컬 시스템에서 여러 참고 문서들을 이용하여 특정 명령이나 자원들의 메뉴얼을 출력하는 영역으로 유닉스에서는 총 8개의 영역으로 되어 있으나 리눅스 커널 부분이 추가되어 총 9개의 영역으로 구성되어 있다.
- 형식
$ man [options][section] command
- 사용법
- `[SPACE]` : 한 페이지 밑으로 내려간다
- `[ENTER]` : 한 줄 밑으로 내려간다.
- `[b]` : 전 페이지로 올라간다.
- `[q]` : man 명령을 종료한다.
<br/>
- 메뉴얼 섹션
![](https://velog.velcdn.com/images%2Fcorone_hi%2Fpost%2F407d6fe1-b039-4599-841e-1335363e09a2%2Fimage.png)
<br/>
- 주요 옵션
- `k` : 해당 키워드로 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다.
- `-f` : 해당 키워드에 대한 완벽히 일치되는 매뉴얼 페이지에 대한 정보를 보여준다.
- `-w` : man 명령 실행 시에 호출되는 '메뉴얼 페이지' 파일의 위치를 보여준다.(--path)
- `-s, -S` : 특정 section을 지정할 때 사용한다. (--sections=섹션번호)
<br/><br/>
### ps
<br/>
- 프로세스 목록 보기
- 형식
ps
- 현재 셸이나 터미널에서 실행한 사용자 프로세스의 정보를 출력
- 출력정보 PID : 프로세스 번호
- 출력정보 TTY : 현재 터미널 번호
- 출력정보 TIME : 해당 프로세스가 사용한 CPU 시간의 양
- 출력정보 CMD : 프로세스가 실행 중인 명령
<br/>
- 주요 옵션
- `ps au` : 터미널에서 실행한 프로세스의 상세 정보 출력
- 출력정보 USER : 사용자 계정 이름
- 출력정보 PID : 프로세스 번호
- 출력정보 %CPU : CPU 사용량을 퍼센트로 표시
- 출력정보 %MEM : 물리적 메모리 사용량을 퍼센트로 표시
- 출력정보 VSZ : 사용하고 있는 가상 메모리 크기(KB)
- 출력정보 RSS : 사용하고 있는 물리적 메모리의 크기(KB)
- 출력정보 TTY : 터미널 번호
- 출력정보 STAT : 프로세스의 상태(필요하면 상태 나타내는 주요 문자의 의미 정리)
- 출력정보 START : 프로세스 시작 시간
- 출력정보 TIME : 해당 프로세스의 CPU 사용 시간
- 출력정보 COMMAND : 프로세스가 실행 중인 명령
- `ps ax | more` : 시스템에서 실행 중인 모든 프로세스 출력(너무 많아 프로세스 목록을 제대로 확인하기 힘드므로, more 명령 함께 사용)
- `ps aux | more` : 시스템에서 실행 중인 모든 프로세스의 자세한 정보 출력
- `ps -fu user` : 특정 사용자(여기선 user)가 실행한 프로세스의 목록 확인
- 출력정보 PPID : 부모 프로세스의 PID 번호
- 출력정보 C : CPU 사용량(% 값)
- 출력정보 STIME : 프로세스의 시작 날짜나 시간
>[특정 프로세스 정보 검색하기]
- `ps -ef | grep 명령` : ps명령을 통한 특정 프로세스 정보 검색. 사용 예) ps -ef | grep bash (배시 셸에 대한 정보 검색)
- `ps -fp $(pgrep -x 명령)` : pgrep 명령을 이용해 특정 프로세스 정보 검색 (pgrep로 검색하려는 프로세스의 PID를 찾아 ps 명령으로 자세한 정보를 확인)
<br/><br/>