본문 바로가기

Linux

Linux #6

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 등에서도 자주 사용된다.

 

'Linux' 카테고리의 다른 글

Linux #8  (0) 2023.01.20
Linux #7  (0) 2023.01.18
Linux #5  (0) 2023.01.16
Linux#4  (0) 2023.01.13
Linux #3  (0) 2023.01.12