
메타문자(=와일드카드)
: 모든 것 ex)home을 들어가야 하는데 home이 기억 안 나면 h만 적기
: 한 글자 ex)h?? 이렇게도 가능
키 : 자동완성, 사용할 수 있는 목록
pwd : 현재 경러 보기(절대 경로로 표시)
cd : 디렉토리 이동
cd[인수 값]
<인수 값>
- Directory : 이동하기 원하는 디렉토리 (절대 경로, 상대 경로)
- . : 현재 디렉토리
- .. : 상위 디렉토리로 이동할 수 있음
- ~ : 로그인 사용자 홈 디렉토리
- - : 이전 작업 디렉토리
Q1. var로 이동 (절대 경로) : #cd /var
Q2. var -> etc -> init.d(상대 경로) : #cd ../etc/init.d
ls : 파일 내역 출력
ls[옵션][디렉토리/파일] (디렉토리/파일 안 적으면 현재 위치)
<옵션>
-l : 자세히 나열 (ls -l을 ll이라고도 씀)
// 파일 종류, 권한, 포함된 파일 수, 소유자, 소유 그룹, 파일 크기, 파일 수정 일자, 파일 이름
-a : (all) 디렉토리 내의 모든 파일 출력(숨김 파일까지 포함. 앞에 .이 붙음)
-s : (size) 파일 사이즈 출력
-S : 파일 사이즈별로 출력
-r : (reverse) 알파벳순 거꾸로 출력
-d : 디렉토리 정보 출력
-n : UID, GID 출력(*UID란? / GID란?)
-R : (recursive) 하위 디렉토리까지 출력(하위 경로와 모든 파일 나열)
-h : (human) K,M,G 단위를 사용해 파일 크기를 사람이 보기 좋게 표현
-F : 파일의 종류별로 파일의 끝에 특수문자 표시
//일반파일 : 공백
//실행파일 : *
//디렉토리 : /
//심볼릭링크 : @
//FIFO파일 : |
//소켓 파일 : =)
#ls -al
//. : 현재 디렉토리 의미
// .. : 상위 디렉토리로 이동
// .bash_history : 입력한 명령어 내용이 저장되어 있는 파일
// .bashrc : alias 정보를 가지고 있는 파일
Q. ls 명령어 문제
#ls -al : 숨김 파일까지 포함해 자세히 나열
#ls -al/home/ : 출력하고 싶은 디렉토리 이름 지정해서 숨김 파일 포함해서 자세히 나열
#ls -alSrh : 숨김 파일까지 포함해서 파일 크기 역순으로 보기 좋게 단위 형식으로 나열
#ls -lSR : 파일/디렉토리 목록을 자세히 파일 사이즈 순으로 하위 디렉토리까지 나열
#ls h* : h로 시작하는 모든 디렉토리 내에 있는 파일/디렉토리 출력
#ls h??? : h로 시작하는 4글자 디렉토리 내에 있는 파일/디렉토리 출력
d : 디렉토리
- : 파일 (링크 파일은 l)
rxwr-xr-x. 권한
<참고> 리눅스에선 모든 것을 파일로 처리함. (ex. 텍스트, 이미지, 영상 등의 자료, 디렉토리 정보, 네트워크 소켓, 시스템 장치 등 -> 그래픽 환경이 아니더라도 텍스트 환경에서도 시스템 제어 가능)
mkdir : 디렉토리 생성
mkdir[옵션][디렉토리 이름]
<옵션>
-p : 하위 디렉토리 생성
rmdir : 디렉토리 삭제
rmdir[옵션][디렉토리 이름]
rm : 파일, 디렉토리 삭제
rm[옵션][디렉토리/파일]
<옵션>
-f : 강제 삭제(삭제 확인을 묻지 않고 바로 삭제)
-r : 디렉토리 삭제시 하위 경로와 파일 삭제
-v : 파일 삭제 정보를 자세히 보여줌
-i : 삭제에 대한 실행 여부를 물음(디폴트 값)
cp : 파일, 디렉토리 복사
cp[옵션][기준 파일][복사 위치]
<옵션>
-i : 복사에 대한 실행 여부를 물음(복사할 대상이 이미 있으면 사용자에게 물어봄)
-p : 파일에 내용 뿐만 아니라 속성도 그대로 복사
-f : 강제 복사(복사할 파일이 존재할 때 삭제하고 복사)
-r : 하위 디렉토리와 파일 모두 복사 -> 디렉토리 전체 복사
-R : 디렉터리를 복사할 경우 그 안에 포함된 모든 하위 경로와 파일들을 모두 복사
-v : 복사 진행 상태 출력
-a : 원본 파일의 속성, 링크 정보를 유지하면서 복사
mv : 파일, 디렉토라 이동. 파일 이름 변경
mv[옵션][기준 파일][이동 위치||파일 이름]
<옵션>
-i: 이동에 대한 실행 여부를 물음
-f : 강제 이동(같은 이름의 파일이나 디렉토리가 있는 경우 덮어쓸 지 묻지 않고 강제 이동)
-v : 이동 진행 상태 출력
-b : 대상 파일이 이미 있어 백업 파일 생성
touch : 파일 생성 및 시간 정보 변경 / 파일 사이즈가 '0'인 파일 생성
touch[옵션][파일 이름] //리눅스는 확장자가 없어서 이름이 겹치면 안 된다
<옵션>
-t : 지정 시간으로 변경 <MMDDhhmm>
<ls 옵션 중 --full-time : 시간 정보를 확인할 수 있음>
head : 파일 내용 중 처음부터 10줄을 출력
head[파일 이름]
<옵션>
-f : 실시간으로 작성되는 내용 보기 (로그 파일 확인 시 유용!>
// #tail -f /var/log/messages
// 프로세스 종료 : Ctrl+C
-n: 마지막 부분의 20행까지 출력
// #tail -n 20 /var/log/dmesg
-c: 마지막에서 200byte까지 출력
// #tail -c 200 /varlog/dmesg
cat : 파일의 내용을 화면에 출력
cat[파일 이름]
<옵션>
-n : 줄 번호를 화면 왼쪽에 나타낸다.
**// cat -n(파일)**
more : 파일 내용을 화면 단위로 출력
more[파일 이름]
<Enter> : 한 줄 이동
<Space bar> : 한 페이지 이동
<b> : 이전 화면 출력
<h> : 도움말
<q> : 종료
less : 파일의 내용을 출력함. (more 명령어를 더 보완한 명령어)
less[파일 이름]
<Enter> : 한 줄 이동
<Space bar> : 한 페이지 이동
<방향키> : 위, 아래 이동
:<num> : 해당 라인으로 이동
/<문자열> : 해당 문자열 검색
// 문자열 검색 후 정방향 검색 : n
// 역방향 검색 : N
<q> : 종료
file : 파일 종류 확인
file[파일 이름]
// file /root : diretory
// file /etc/password : ASCII text
// file /dev/sda : 장치 파일
// file /bin/ls : executable
history : 입력했던 명령어 확인
history[옵션][숫자]
<옵션>
-c : 입력했던 명령어 모두 삭제
-d : 입력했던 명령어 개별 삭제
//history하면 쭉 번호 붙여서 실행했던 명령어가 나옴
//history -d 100하면 100번 삭제
//history -c하면 올 삭제
// !2라고 하면 history 안에 있는 2번 명령어 실행.
Q1. root의 홈 디렉토리에서 시작 : #cd ~
Q2. /tmp에 abc 파일 생성 : #touch /tmp/abc
Q3. 생성한 abc 파일을 /root 디렉토리로 복사하면서 test 이름 바꾸기
#cp /tmp/abc /root/test
Q1. root의 홈 디렉토리에 Korea라는 디렉토리 생성 :
#mkdir /root/Korea
Q2. /tmp에 abc 생성 후 파일을 Korea 디렉토리로 복삭해 Korea123으로 이름 변경 :
#touch /tmp/abc
#cp /tmp/abc /root/Korea/Korea123
Q1. /tmp에 Korea 디렉토리 생성
: #mkdir /tmp/Korea
Q2. korea 디렉토리 안에 12345 파일 생성
: #touch /tmp/Korea/12345
Q3. 12345 파일 -> /tmp에 복사
: #cp /tmp/Korea/12345/tmp
Q4. 생성된 디렉토리 및 파일 제거
: rm -r Korea, rm abc, rm 1234
date : 시스템 시간 조회
// 명령어는 단독으로 쓰일 수 있으며, 옵션과 포맷 인자는 때에 따라 추가 사용 가능.
date[옵션][포맷인자]
<옵션>
-s : 시스템 일시 변경
//]# date -s 10:00:00
//현재시간을 변경
//]# date -s 2019-01-25
//날짜만 변경, 시간은 0시 0분 0초
//]# date -s '2019-01-25 12:15:10'
//날짜와 시간을 같이 변경
-d : 포멧인자 값에 따라 일시를 조정하여 출력
> date -d'1 year' # 1년 후
> date -d'1 year ago' # 1년 전
> date -d'1 month' # 1개월 후
> date -d'1 month ago' # 1개월 전
> date -d'1 week' # 1주일 후
> date -d'1 week ago' # 1주일 전
> date -d'yesterday' # 어제
> date -d'tomorow' # 내일
> date -d'1 day ago' # 1일 전
> date -d'2 day' # 2일 후
> date -d'this monday' #이번주 월요일(일요일 시작 기준)
> date -d'last wednesday' #지나간 최근 수요일
> date -d'next friday' #다가오는 금요일
-f : 날짜가 입력된 파일을 라인 단위로 읽어서 출력
※ 파일 내용 : 문자 포멧인자값의 형식으로 기술되어 있어야 한다.
> 파일 : testfile.txt
1
2
3
4
2017-01-01
20170101
2017-01-01+2 year ago
20170101+1 year 1 month
> date -f 'textfile.txt'
-r : 파일/디렉토리를 참조하여 수정일시 출력
> ls -al test
> date -r 'testfile.txt'
rdate : 타임 서버 시간 조회 및 시스템 시간 변경
//리눅스의 시간을 timeserver와 동기화하는 명령어
//리눅스는 서버로 운영되는 경우가 많기 때문에 서버 시간은 동작하는 여러 서비스에 영향을 준다.
//항상 정확한 시간 정보를 유지하는 게 좋음.
//정확한 시간 정보 유지를 위해 타임서버의 시간 정보를 불러와서 시스템 변경 가능
//#yum -y install rdate
rdate[옵션][타임서버]
<옵션>
-p : 타임서버 시간 조회
-s : 타임서버 시간 시스템 동기화
<타임서버>
time.bora.net //203.248.240.140
time.nuri.net
time.windows.com
ntp.kornet.net
time.nist.gov
]# rdate -p time.bora.net // 타임서버 시간 조회
]# rdate -s time.bora.net // 타임서버와 시스템 시간을 동기화
find : 파일 찾기
find[디렉토리][옵션][액션]
<옵션>
-name [filename] : 가장 일반적으로 사용하는 옵션
-perm mode : 주어진 액세스 모드를 가진 파일을 찾음.
-type c : 지정된 타입에 관한 파일을 찾음.
-user name : name에 해당하는 사용자 파일을 찾음.
name에는 사용자 id 뿐만 아니라 UID도 들어갈 수 있음.
-group group명 : 그룹이 그룹인 명.
-size n : 해당되는 사이즈의 파일을 찾음.
n은 블록 길이의 파일을 찾고, 한 블록은 512와 같음.
+n이란 표시는 n 블록보다 더 긴 파일을 찾는다는 뜻.
-atime n : n일 전에 액세스한 파일을 찾음.
-mtime n : n일 전에 마지막으로 파일 내용이 수정된 파일들.
-ctime n : n일 전에 마지막으로 속성이 바뀌어진 파일들.
-newer file : 주어진 file 보다 더 최근에 수정된 파일을 찾음.
-exec command : 찾은 파일들을 command로 처리함.
command에서 찾은 파일의 경로명을 포함시키려면 중괄호를 사용.
{} command 명령을 실행시키고 난 뒤에 반드시 \; 사용.
[액션]
-print : 찾은 파일리스트를 보여줌.
-exec command {} \; : 찾은 파일과 디렉토리에 지정한 명령어 적용.
-ok command {} \; : exec와 비슷하나 명령어 시행 전 사용자에게 실행할 것인지를 물어 봄.
예시:
find / -name perl
find /usr -name rdate // /usr 디렉토리 하위 모두를 검색하여 rdate 파일 찾음
find /usr -name rd* // /usr 디렉토리 하위 모두를 검색하여 rd로 시작하는 파일 찾음
find /bin -name s* // * 사용시 ' '로 묶어주지 않으면 error 발생하는 경우 있음
find /bin -name '[a,s][b,e]*' -print // 첫글자가 a 또는 s로 시작하고, 두번째 글자가 b 또는 e로 된 파일
find /bin -name ‘[s-z]????’ -print // s~z로 시작하는 5자로 된 파일 출력
find /home -name *.bak -exec rm -f {} \;
find /home -perm 777 -print
find /home -empty -print
find / -size +102400k -print find /home -user skykim -print
find /home -type d -print // 일반파일 : f, 디렉토리 : d, 링크파일 : l, 블록/문자디바이스 : b/c
find /bin -type l // bin 디렉토리에서 파일 타입이 심볼릭링크 걸린 파일 찾기
find /root -name file1 ?exec ls -al {} \;
출처 : 시농준