file,
readlink
pwd
clear
cat
ln -s / ln
ls -l, ls -d, ls -a <-ll, ldd
0>, 1>, 2>,
>, >>, <, <<
touch
sr
mv
rename
mkdir -p
rm -rf
cd, pushd, popd
shred
head, tail
.
cd ., cd ../, cd ../../
PS1
date,
&&, ;
cp -arp
md5sum : md5sum은 어느 파일 등을 인터넷에서 다운받았을 때 소스(원본) 파일이 중간에 오류나 변형 등으로 변경된 여부를 확인하는 무결성(integrity)을 확인할 때 사용한다. 보통은 소스 파일을 제공하는 소스 사이트에 해당 파일에 대한 해시키(md5, sha1식으로 표시됨)가 있고 다운 받은 파일에도 해시키가 내장되어 있어서 서로 비교해서 변형여부를 판단할 수 있다.
5af5a1501da4d77cc5ea702ee5e40787 (md5 hash) socat-1.7.4.3.tar.gz
date, rdate(원격지의 시간을 현재 시스템에 맞춤), clock, hwclock(컴퓨터의 하드웨어가 가지고 있는 내장 시간 <-CMOS battery가 유지(컴퓨터 전원이 없어도 HDD, CDROM, ... 하드웨어적인 정보 유지)
clock 명령어는 컴퓨터의 CMOS 배터리에 의해 유지되는 hardware time을 보이고,
date와 rdate 명령어로 보는 시간을 software time으로 부른다.
=>소프트웨어 시간(software time=system time)을 하드웨어 시간(hardware time=CMOS battery time)과 맞출 수 있다.
lp(line printing)는 인쇄에 사용되는 명령어들
lpd(프린터 데몬(daemon)), lpr(인쇄 명령어), lprm(인쇄 명령어 취소(rm)), lpq(인쇄 대기(queue)), IPP(네트워크 프린팅 프로토콜:Line Printing Protocol)
type(명령어의 종류)
내부 쉘, 외부 쉘, Alias가 있다.
lsof(현재 사용중인 파일들 목록, 소유자 등의 정보를 보임)
pidof(특정 프로그램의 프로세스 번호를 보임)
=>process는 하나의 실행 단위로써 어느 프로그램의 실행 중인 상태를 의미하기도 한다.
어느 '명령어&' 해주면 해당 명령어를 백그라운드로 실행하라는 의미이다.
scp(ssh copy)
이 명령어는 네트워크에서 암호화된 ssh 세션을 통한 호스트 간의 파일 전송에 사용된다. 따라서 ssh 프로그램이 노드에 설치되어 있지 않으면 실행되지 못하는데 CentOS에는 디폴트로 설치되어져 있고 방화벽도 열려 있지만, Ubuntu에서는 apt-get -y install openssh- server 해서 설치한 뒤, ufw allow 22/tcp 해주고 사용해야 한다.
scp의 용도나 형식은 rsync와 사용 구문이 같지만 rsync와 다르게 별도의 데몬 없이 간단하게 보안된 파일 송수신이 가능해서 널리 유용하게 사용되고 있다.
'scp 보낼_파일_위치 타겟_사용자@타겟_호스트(OR IP):/저장될_위치'형식으로 보낸다.
'scp 타겟_사용자@타겟_호스트(OP IP):/받아올_위치 저장될_내_위치' 형식으로 받아온다.
∎ 디렉터리 송수신은 scp -r 디렉터리 ~ 식으로 사용하고,
∎ 여러 파일 송수신에서는 scp file1 file2 ... ~ 식으로 사용하면 된다.
빈파일 생성과 파일의 접속 속성을 변경시키는 - touch
이 명령어는 파일이 있을 때는 파일의 접속시점을 변경하고, 파일이 없으면 빈 파일을 만들어 준다. 그리고 어느 작업을 수행하기 앞서 앞으로 쌓이는 데이터를 저장해야 할 빈 공간이 필요할 때에도 미리 생성해 두어야 하는 경우가 있다.
파일을 찾거나 찾은 파일로 작업하게 해주는 - find
파일이나 디렉터리를 찾는 find 명령어로 찾기 이외에 찾은 파일이나 디렉터리를 대상으로 다양한 작업을 추가해줄 수도 있는 매우 강력한 도구이다. 옵션은
atime ±n : n days 전후에 액세스한 파일 =>어제 접속했던 파일 : atime -1
mtime ±n : n days 전후에 변경된 파일
amin ±n : n minutes 전후에 액세스한 파일 =>1시간 전에 접속했던 파일 : amin -60
cmin ±n : n minutes 전후에 변경한 파일
empty : 비어있는 파일이나 디렉터리로 -size 0k 옵션과 같음
name "abc.txt" : 이름이 abc.txt인 파일, -name "*.txt"식도 가능
newer "abc.txt" : "abc.txt" 파일보다 최신인 파일
type d,l,s,b,f : 디렉터리(d), 심볼릭 링크(l), 소켓(s), 블록장치(b), 파일(f) 타입 찾기
perm 777 : 권한이 777인 파일
size 1024k : 크기가 1024k인 파일,
범위로 지정할 때에는 \( -size 10M –o -size 12M \) 해서 (10~12M)식으로 사용함, 여기서 -o는 and의 의미이다.
user paul : 소유자가 paul인 파일
maxdepth : 찾는 경로 지정. 현재 경로가 1이고, 2는 현재경로에서 하나 아래경로까지 찾기
print : 결과를 보이라는 옵션인데, 주로 |와 함께 사용해서 결과를 | 뒤에 지정한 파일로 저장함 등이 있다.
형식은 'find 찾을_시작_위치 -type f/d –name 찾을_파일/디렉터리_명 추가_옵션'식으로 사용한다. 추가_옵션으로 find ~ 뒤에 | 나 >, 특히 '-exec 명령어 { } \;' 를 사용하면 찾은 결과가 { }에 인자로 들어가서 찾은 결과를 대상으로 특정 명령어를 실행시킬 수 있다. \; 는 문장을 끝내는 ; 이 기호라는 것을 명시하려고 \를 붙인 것이다. 그리고 '–regex 명령어'를 사용해서 정규 표현식을 사용하게 할 수 있는데 이 명령어 뒤에는 $를 붙여준다.
명령어를 연결시켜주는 - | 와 데이터를 변경해주는 tr
∎ | [파이프로 읽음]는 리다이렉션의 한 방법인데 | 좌측 명령어의 실행 결과를 | 우측으로 넘기는 역할을 한다. |를 여러 개를 조합해서 사용할 수도 있으므로 응용범위가 매우 넓다.
참고로 Shell Script에서 ||는 or의 의미이고, &&는 and의 의미이다.
dmesg | less 하면 시스템에서 발생하는 메시지를 보이는 dmesg의 결과를 less 명령어의 입력으로 해서 페이지별로 갈무리해서 보인다. vi 화면에서 열리므로 q 입력하면 닫힌다.
=> ~ |grep는 Filtering 역할을 한다.
∎ tr은 문자열1을 문자열2로 바꾸는데 사용되는데 "tr 'set1' 'set2'" 구문이다.
파일에서 글자의 수, 줄의 수 등의 정보를 보이는 - wc
이 wc 명령어는 어느 파일의 크기, 단어 수, 문자 수 등을 보인다. 단독으로도 쓰이기도 하지만 보통 | 뒤에 붙여 쓰는데 옵션은
c : 문자 수,
l : 줄 수,
w : 단어 수 등이 있다.
파일에 대한 많은 정보를 보이는 - stat
Linux에서 자주 사용되는 중요한 명령어들이 많지만 이 stat 명령어도 매우 요긴한데 잘 사용되지 않고 있다. Linux에서 모든 파일은 파일명(hard link), 메타데이터(i-node), 그리고 데이터(data)를 가지고 있는데 stat 명령어는 이들 정보를 개별적으로나 모두 볼 수 있게 해준다. 특히 Access, Modify, 그리고 Change 등과 같은 정보를 보이므로 중요한 파일은 수시로 이 명령어로 보안 점검해 보는 것이 필요하다. 이 명령어로 특정 파일에 대한 수정이나 접근 시간 등을 보는 것은 매우 보안에서 중요하다고 볼 수 있다.
명령어의 위치를 검색해주는 - which, whereis, 그리고 locate
which 명령어는 환경변수 $PATH 값에 지정된 명령어 bin이나 sbin을 이용해서 디렉터리를 검색할 때 사용되며 절대경로로 결과를 보인다.
whereis와 locate는 명령어의 실행파일, 소스, man 페이지 파일 등의 위치를 알려주는 명령어이다.
파일생성, 변수 값 보기나 값 변경 등을 빠르게 설정해주는 - echo
이 명령어는 echo " " > 파일_명 식으로 사이에 내용을 넣어서 파일을 생성하거나, 시스템의 환경변수나 사용자 정의 변수의 내용을 볼 때, 설정 값을 변경할 때 등에서 사용된다.
웹에서 파일을 복사해오는 - wget, git, curl, 그리고 lftp, lftpget
필요한 파일 등을 다운받을 수 있는 웹 사이트 주소를 알고 있다면 콘솔에서 직접 파일을 다운받아 올 수 있는데 다음 몇 가지 도구가 유용하다.
∎ wget는 타겟 사이트에서 다운받고자 하는 파일을 반복적으로 접속해서 현재 사용 중인 디렉터리로 다운받아주는데 wget HTTP~ , wget FTP~식으로 사용될 수 있고, –c 옵션을 주면 다운이 중단 되었을 때 이어서 받아준다.
∎ curl이나 pip 명령어로도 다운로드나 업로드를 실행할 수 있다.
∎ lftp는 다운로드가 실패했을 때 에러를 예외처리해서 다시 받아주고 2GB 이상의 대용량 파일도 다운받아주며 방화벽이 있어도 우회해서 받게 해준다.
∎ lftpget 명령어는 lftp와 get를 합친 개념이지만 CentOS에서는 지원하지 않는다.
한 화면씩 출력해주는 - more와 less
이 more와 less 명령어는 내용이 많은 텍스트 파일을 페이지 단위로 화면에 출력한다. 그리고 cat 명령어 대신에 more나 less로 more /etc/passwd식으로 해서 작은 파일을 읽을 수도 있다.
∎ more는
more /etc/passwd식으로 작은 파일도 읽을 수 있다.
① 한 줄씩 보려면 엔터하면 되고,
② 한 화면씩 보려면 스페이스바를 누르며,
③ 이전 화면은 b키를 누르면 된다.
④ 종료는 q를 누르거나 내용의 끝에 닿았을 때 스페이스바를 누르면 자동으로 빠져나온다. Ctrl+c를 눌러서 빠져나올 수도 있다.
∎ less도 이와 유사하게 사용되는데 more보다 기능이 더 많다.
less /etc/passwd식으로 작은 파일도 읽을 수 있다.
① 한 줄씩 보려면 엔터해주고,
② 한 화면씩 이동하려면 스페이스바를 누른다.
③ Page Up/Down 키로 페이지별로 볼 수 있다.
④ vi 화면이기 때문에 q를 누르거나 (END)에 닿으면 빠져나온다.
텍스트 파일에서 필요한 만큼만 보여주는 - head와 tail
이 두 명령어는 해당 파일의 파일의 처음과 끝의 내용을 보이는데 디폴트로 10줄을 보인다. 숫자 : 해당 숫자만큼만 보임과
f : tail과 함께 사용되면 실시간으로 보임 등의 옵션이 있다.
Linux에서 Windows의 DOS 명령어 앞에 m을 붙여서
mdir, mcopy, mcd, mdel, mformat, mrd, mread, mren, mtype, 그리고 mwrite식으로 사용할 수 있다. DOS 상태에서 리눅스 파일을 읽거나 백업할 때, 리눅스에서 DOS용 플로피디스트에 파일을 저장하거나 역으로 DOS용 플로피디스크에서 Linux로 파일을 복사해 올 때 유용하다. 하지만 요즘에는 플로피디스크를 사용하지 않으므로 이 명령어들도 별로 사용할 일은 없다.
수식 계산을 해주는 - bc와 let
쉘 스크립트에서도 자주 사용되는 bc(basic calculator) 명령어를 사용하면 콘솔에서 수식계산을 쉽게 할 수 있다. 사칙연산은 물론 x의 y승(x^y) 계산과, 10법을 16진법, 2진법을 10진법 등으로 바꿀 수도 있다.
=>이런 사용법 때문에 Shell Scripts에서 수식계산에서 널리 사용된다.
보통 ‘계산식 | bc’ 식으로 사용한다.
콘솔로 보면서 파일로 저장시키는 - tee와 script
▪ tee 명령어는 콘솔에서 실행된 내용을 보면서 한편으로는 그 내용을 저장할 때 사용되는 명령어인데 | 좌측의 실행결과를 표준출력(stdout)으로 콘솔에 보이고, | 우측에 표준입력(stdin)으로 지정된 파일_명으로 저장해준다. 간단히 말하면 실행 내용을 콘솔에 보이면서 저장도 시켜준다고 알고 있으면 된다.
▪ script 명령어는 script 해두면 이후에 콘솔에서 작업하는 모든 내용이 typescript라는 파일명으로 자동으로 저장된다.
mail, mutt, mailx는 콘솔에서 메일을 보낼 때 사용된다.
사전에 시스템에 sendmail이라는 MX(Mail eXchanger) 도구가 설치되어져 있어야 한다.
*** Disposable Mail을 알아보자.
여기서 사용한 mailinator.com, guerrillamail.com, 10minutemail.com, yopmail.com 등을 말하는데 MX(Mail eXchanger)에 계정 없이 즉석에서 사용자를 만들어서 메일을 보낸 뒤, 해당 사이트로 들어가서 사용자_명을 입력하면 메일을 확인할 수 있다. 이중에서 mailinator.com이 가장 사용하기 편하고,
국내용으로는 ruu.kr도 많이 사용되고 있다. 이들은 원래 10분, 30분 정도만 메일을 보관했지만 현재는 오래 보관하기도 한다.
실행했던 이벤트와 명령어를 보이는 - history
이전에 실행했던 몇몇 명령어들은 보통 상하 방향키를 사용해서 찾은 뒤 엔터해서 실행할 수 있다. 그리고 이전에 실행했던 명령어를 모두 살펴보거나 그 중에서 실행했던 명령어를 다시 실행시키고자 할 때에는 history(혹은 fc –l) 명령어를 사용하면 된다.
정규 표현식에서 자주 쓰이는 연산부호(operand, handle)들을 정리했다
쉘 실행
엔터, ;, `명령어`,
$(명령어) 명령어를 실행함
{ } { }의 어느 문자와 매치되면 실행함 <={Aa}
\ \뒤의 것이 특수문자인 것을 표시함 <=\(
| | 앞의 실행결과를 | 뒤의 입력으로 함
& 백그라운드로 실행함
!숫자 history에서 해당 숫자를 실행함
* 임의의 여러 문자
? 임의의 한 문자
[ ] [ ] 범위에 매치되는 문자 <=[a-z]
> > 앞의 실행결과를 > 뒤의 입력으로 함
>! > 앞의 실행결과를 > 뒤로 강제 입력함
< < 뒤의 실행결과를 < 앞의 입력으로 함
>>, << >> 앞의 실행결과를 >> 뒤로 추가함
2> /dev/null 표준 에러를 콘솔에 표시 안 함
2>& 1 표준 에러를 표준 출력으로 보냄
2>& /dev/null 표준 에러를 파일이나 장치로 보냄
기호 역할
A>& B A 파일의 출력을 B 파일의 입력으로 써줌
A<& B A 파일을 읽어서 B 파일의 출력으로 써줌
0> A STDIN : 키보드 입력
1> A STDOUT : 화면 출력
2> A STDERR : 화면 에러
파일을 좀 더 잘 찾아주는 정규표현식 - *, ?, [], {}, 2>, 1>& 등
정규 표현식이란 [ ]나 { }, 그리고 *과 ?와 같은 부호를 사용해서 명령어 실행을 간략히 빠르게 하는 방법인데, 정규 표현식으로 많은 파일과 문장을 편리하게 조작하게 해준다.
쉘 스크립트나 데이터베이스 SQL 쿼리, Python, C, JAVA 등에서도 자주 사용된다.