유닉스 - 정리 전

박상원·2024년 2월 13일

메모

목록 보기
2/8

경로를 표기할 때 디렉토리와 디렉토리, 또는 파일 간의 구별하는 구별자는 / 사용
경로 가장 앞에 /가 있다면 루트 디렉토리를 뜻한다
경로가 디렉토리 이름으로 끝난다면 맨 뒤에 /를 표기하거나 표기하지 않고 디렉토리 이름으로 끝남

루트 디렉토리 : 디렉토리 계층구조 중 가장 상위의 디렉토리
상위 디렉토리는 .. 으로 표기, 현재 디렉토리는 . 으로 표기, 하위는 디렉토리 이름으로 표기
디렉토리 상에서 ~는 홈 디렉토리를 의미, cd ~하면 홈디렉토리로 이동

절대경로 : 루트 디렉토리 부터 시작해서 경로를 표기, 항상 /로 시작
상대경로 : 현재 디렉토리를 기준으로 경로 표기, /이외의 문자로 시작

ex)
/ (root)
s1 s2
s3 s4 s5 s6
s7 s8

현재 디렉토리가 s2일때, s8의 절대 경로 : /s2/s6/s8
현재 디렉토리가 s2일때, s6의 상대 경로 : s6/s8
현재 디렉토리가 s5일때, root의 절대 경로 : /
현재 디렉토리가 s5일때, root의 상대 경로 : ../..

■■■■■■■■■■■■■■■■■■■■명령어■■■■■■■■■■■■■■■■■■■■■■■
ls : 현재 디렉토리의 파일목록 출력
pwd : 현재 디렉토리 확인(절대경로)
date : 현재 날짜와 시간 출력
clear : 화면 지우기 및 커서를 좌측 상단으로 옮김
exit : 접속 해제
logout : 접속 해제 (로그인 셸에서만 사용 가능)
Ctrl + d : 접속 해제
file 파일 : 파일의 종류를 출력
man 명령 : 명령의 사용법을 화면으로 출력
groups [사용자] : 사용자의 그룹을 알려준다 (사용자 안적으면 본인의 그룹)
passwd [인자] : 사용자 계정의 비밀번호 변경
cd [디렉토리 경로] : 디렉토리 이동 (경로 적으면 해당 디렉토리로, 안적으면 홈 디렉토리로 이동, 절대 상대경로 둘 다 사용가능)
~ 또는 ~아이디 : 자신의 홈 디렉토리
Ctrl + w : 단어지우기
Ctrl + u : 문장지우기
mkdir [옵션] 디렉토리명 : 디렉토리 생성
rmdir [옵션] 디렉토리명 : 디렉토리 삭제
cat [옵션] 파일명 : 파일의 내용을 화면에 연속적으로 출력
more [옵션] 파일명 : 파일 내용을 화면 단위로 출력
tail [옵션] 파일명 : 파일의 뒷부분 몇 행을 출력
cp [옵션] 파일명1/디렉토리명1 : 파일이나 디렉토리를 복사
rm [옵션] 파일명/디렉토리명 : 파일을 삭제한다
mv [옵션] 파일명1/디렉토리명1 : 파일을 이동한다
ln [옵션] 원본파일명 링크파일명 : 파일의 링크를 생성한다
touch [-acm][-r ref_file | -t time] 파일 : 빈파일을 생성하거나 파일 관련 시간을 변경한다

chmod [옵션] 권한모드 파일/디렉토리명 : 파일, 디렉토리 접근 권한 변경
umask [마스크값] : 기본 접근 권한을 출력, 변경 한다.
grep [옵션] 패턴 [파일명] : 지정한 패턴을 포함하는 행을 찾는다
find 경로 검색조건 [동작] : 조건에 맞는 파일을 지정한 위치에서 찾는다
which 명령 : 명령어 파일의 위치를 찾아서 그 경로를 출력
ps [옵션] : 현재 실행중인 프로세스에 대한 정보를 출력
users : 현재 시스템에 로그인하고 있는 사용자명을 출력한다
who [옵션] : 시스템을 사용하고 있는 사용자의 정보를 출력한다
w [사용자명] : 로그인한 사용자 정보와 현재 작업의 정보를 출력
whoami : 사용자(본인)의 로그인 ID를 출력
id [옵션] : 사용자(본인)의 로그인 ID와 그룹정보 출력
su [-][사용자명] : 현재 사용자를 다른 사용자로 전환
tar 기능[옵션][아카이브파일] 파일명 : 여러 파일과 디렉토리를 묶어 하나의 아카이브 파일을 생성한다
compress [옵션] 파일명 : 파일을 압축한다.
uncompress [옵션] 파일명 : compress로 압축한 파일을 압축해제한다
zcat 파일명 : 압축된 파일의 내용을 본다
zip [옵션] 파일명 : 파일 압축
unzip 파일명 : zip으로 압축된 파일 압축 해제
write 사용자명 [단말기명] : 다른 사용자에게 메시지전달
wall [파일명] : 모든 사용자에게 메시지를 전달
talk 사용자주소 [단말기명] : 다른 사용자와 일대일로 대화한다 (사용자주소 : 사용자명@호스트명 ex) user1@solaris11.com)
mesg [n|y] : 메시지를 단말기로 출력하는 것을 막거나(n) 허용한다(y)
mailx [-s][이메일주소] : 메일을 보내거나 읽는다
hostname : 현재 시스템의 호스트명 출력
nslookup [도메인명] : DNS서버와 대화식으로 도메인명이나 IP주소를 질의하고 응답을 받는다
ping hostname 또는 IP주소 : 지정한 시스템이 네트워크를 통해 연결되는지 알려준다
finger [사용자명|사용자명@호스트명|@호스트명] : 사용자에 관한 자세한 정보를 출력
wc [옵션] 파일명 : 파일의 행 수, 단어 수, 문자 수를 출력
sort [옵션][파일명] : 입력한 내용을 정렬해 출력
uniq [옵션][파일명] : 중복 행을 삭제
cut [옵션][파일명] : 파일에서 선택된 필드를 추출
paste [옵션] 파일명1 파일명2 : 파일의 내용을 결합
dd [옵션][if=입력파일명] [of=출력파일명] : 입력한 내용을 변환하여 출력
env : 사용자의 환경 변수명 및 변수의 값을 표시
set : 자신의 현재 쉘에서 모든 변수의 값과 변수명 표시
id : 사용자의 id와 그룹id번호 출력
unset : 쉘에서 정의한 변수들을 제거 (디폴드 변수는 제외)

-------------------------------ls-----------------------------------------------------------------------------------------------------------
ls [옵션][파일 또는 디렉토리명]

디렉토리의 내용을 출력한다.
파일이나 디렉토리 명을 지정하지 않으면 현재 디렉토리의 파일 목록 출력
파일 이름을 지정할 때 옵션없이 하면 파일이 존재하는지 확인 (있으면 파일 이름을, 없으면 없다는 메시지 출력)
-l 옵션 쓸 때 인자가 디렉토리면 디렉토리에 포함된 파일의 상세정보, 파일이면 해당 파일의 상세정보 출력

ex) ls -l g? -> g로 시작하는 두글자 파일 찾기

**옵션***
-a : 숨김 파일을 포함해 모든 파일 목록 출력
-d : 지정한 디렉토리 자체의 정보 출력
-i : 첫번째 행에 inode 번호 출력
-l : 파일의 상세 정보 출력
-A : .과 ..을 제외한 모든 파일 목록 출력 (.과 ..는 현재, 상위 디렉토리가 파일 형식으로 생성된것)
-F : 파일의 종류 표시 (* : 실행파일, / : 디렉토리, @ : 심볼릭 링크)
-L : 심볼릭 링크 파일의 경우 원본 파일의 정보 출력
-R : 하위 디렉토리 목록까지 출력

****파일 상세정보***
ex)
drw-r-xr-- 1 root sys 9 Aug 20 2018 boot

d : 파일의 종류
rwxrwxrwx : 파일 접근 권한 r은 read(읽기), w는 write(쓰기), x는 execute(실행) rwx rwx rwx <-처럼 3개씩 나눠서 각각 소유자, 그룹, 제3자의 접근 권한을 뜻한다, -는 해당 권한이 없다는 뜻
1 : 하드 링크의 수
root : 파일 소유자
sys : 파일이 속한 그룹
9 : 파일크기 (바이트 단위)
Aug 20 2018 : 파일이 마지막으로 수정된 시간
boot : 파일이름

파일의 종류

  • : 일반(정규) 파일
    d : 디렉토리 파일
    l : 심볼릭 링크 파일
    b : 블록 단위로 읽고 쓰는 블록장치 특수 파일
    c : 섹터 단위로 읽고 쓰는 문자 장치 특수 파일
    p : 파이프. 프로세스간 통신에 사용되는 특수 파일
    s : 소켓. 네트워크 통신에 사용되는 특수 파일

---------------------------mkdir--------------------------------------------------------------------------------------------------------------------
mkdir [옵션] 디렉토리명

디렉토리를 생성한다
ex) mkdir dir1 -> 상대경로로 dir1이라는 디렉토리 생성
mkdir dir1 dir2 dir3 -> 여러 디렉토리 생성, 공백으로 구분
mkdir -p temp/work/prog -> 만약 work라는 폴더가 없다면 work를 생성하고 prog를 만든다

****옵션**
-p : 하위 디렉토리를 계층적으로 생성할 때 중간의 디렉토리가 없으면, 생성하면서 전체 디렉토리를 생성

---------------------------rmdir--------------------------------------------------------------------------------------------------------------------
rmdir [옵션] 디렉토리명

디렉토리 삭제
rmdir을 사용하려면 삭제하려는 디렉토리가 반드시 비어있어야 한다. 아니면 삭제 불가
ex) rmdir dir1 dir2 dir3 -> 디렉토리 여러 개 동시에 삭제

***옵션****
-p : 지정한 디렉토리를 삭제한 뒤, 그 디렉토리의 부모 디렉토리가 빈 디렉토리일 경우 부모 디렉토리도 자동으로 삭제

---------------------------cat--------------------------------------------------------------------------------------------------------------------
cat [옵션] 파일명

파일의 내용을 화면에 연속적으로 출력

***옵션***
-n : 행 번호를 붙여서 출력

---------------------------more--------------------------------------------------------------------------------------------------------------------
more [옵션] 파일명

파일 내용을 화면 단위로 출력
more은 화면 단위로 출력한 뒤 출력할 내용이 더 있으면 화면 하단에 --ㅡMore--(00%) 와 같이 나타내 알려준다
이때 Space Bar를 누르면 다음 화면을 출력, Enter를 누르면 행 단위로 스크롤된다
/문자열 을 입력하면 해당 문자열 찾을 수 있음
more을 중지하려면 q 입력

**옵션***
+행번호 : 출력을 시작할 행 번호를 지정

---------------------------tail--------------------------------------------------------------------------------------------------------------------
tail [옵션] 파일명

파일의 뒷부분 몇 행을 출력

**옵션**
+행번호 : 지정한 행부터 끝까지 출력
-숫자 : 화면에 출력할 행의 수를 지정 (기본값 10)
-f ; 파일 출력이 종료되지 않고 주기적으로 계속 출력

---------------------------cp--------------------------------------------------------------------------------------------------------------------
cp [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2

파일을 파일로 복사 ex) cp /etc/hosts text1 -> hosts파일을 현재 디렉토리의 text1이라는 파일로 복사
파일을 디렉토리로 복사 ex) cp /etc/hosts . -> hosts를 현재디렉토리(.) 아래에 같은 이름으로 복사
ex) cp hosts temp/hosts1 ->hosts를 temp의 hosts1이라는 이름으로 복사
여러개의 파일을 디렉토리에 복사 할 때 마지막 인자는 반드시 디렉토리명이어야 함 ex) cp text1 text2 temp -> text1과 text2파일을 temp디렉토리로 복사
디렉토리를 복사할 때는 -r을 사용하고 첫번째 인자를 디렉토리 이름으로 지정해야 한다 ex) cp -r temp temp -> temp를 temp로 복사한다
디렉토리를 복사하면 하위 파일이나 디렉토리 또한 모두 복사된다.
ex) cp -r data/mustc/* . -> 해당 디렉토리를 전체 카피하여 현재 디렉토리에 복사

***옵션**
-i : 대화식 복사 방법으로 파일명2가 기존에 존재할 경우 덮어쓸 것인지 물어봄
-r : 디렉토리를 복사할 때 지정

---------------------------rm--------------------------------------------------------------------------------------------------------------------
rm [옵션] 파일명/디렉토리명

파일을 삭제한다 유닉스는 삭제된 파일은 복구할 수 없으므로 주의해야 한다.
rmdir은 빈 디렉토리가 아니면 삭제할 수 없었지만 rm -r을 사용하면 삭제 가능하다
rm은 정확하게는 파일의 하드링크 수를 1 감소하고 그 값이 0이 되었을때만 파일을 삭제한다.
0이 되지 않으면 해당하는 하드링크만 삭제함

**옵션***
-i : 대화식으로 지정한 파일을 정말 삭제할 것인지 확인 (두번째 인자에 지정한 파일명이 기존에 있을경우 덮어쓸 것인지)
-r : 디렉토리를 삭제할 때 지정

---------------------------mv--------------------------------------------------------------------------------------------------------------------
mv [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2

파일을 이동한다
파일을 파일로 이동 ex) mv text1 data1 -> 첫번째 인자로 지정한 파일 이름이 두번째 인자로 지정한 파일 이름으로 변경된다. text1이 data1로 변경됨
이때 두번째 인자로 이미 존재하는 파일명을 지정하면 첫번째 파일이 덮어씌워서 원래 내용은 없어지고 새로운 내용만 남는다
파일을 디렉토리로 이동
ex) mv data1 tmp -> 두번째 인자에 디렉토리 지정하면 파일을 해당 디렉토리로 이동
mv text2 tmp/data2 -> 두번째 인자에 디렉토리명과 파일명을 둘 다 지정하면 해당 디렉토리로 파일명을 바꿔서 이동
여러개 파일을 디렉토리로 이동. 첫번째 인자에 파일명을 여러개 지정하면 두번째 인자는 반드시 디렉토리가 되어야 한다.
ex) mv tmp/data1 tmp/data2 . -> tmp디렉토리의 data1과 data2를 현재디렉토리(.)로 이동
디렉토리를 디렉토리로 이동. 두 인자를 모두 디렉토리로 지정했을경우
ex) mv tmp2 tmp -> tmp2디렉토리를 tmp디렉토리 아래로 이동, 두번째 인자가 새로운 이름이면 첫번쨰 디렉토리 이름이 새이름으로 변경됨

***옵션***
-i : 파일명2/디렉토리명2가 존재하면 덮어쓸 것인지 물어봄
-f : 무조건 삭제

---------------------------ln--------------------------------------------------------------------------------------------------------------------
ln [옵션] 원본파일명 링크파일명

파일의 링크를 생성한다
유닉스는 하나의 파일에 둘 이상의 다른 이름을 붙일 수 있다. 이때 파일에 붙인 이름을 하드링크, 이런 파일을 하드링크파일이라 한다.
하드링크파일은 이름은 여러개여도 동일한 파일이며, inode 일련번호는 동일하다

심볼릭 링크는 윈도우의 바로가기 아이콘과 같다. 파일 내용은 원본 파일의 경로이다
심볼릭 링크 파일 생성 ex) ln -s ln.hl ln.sl >> ln.hl파일에 대한 ln.sl이란 심볼릭 링크파일 생성
●심볼릭 링크파일 특징
▶파일종류 : l, 심볼릭 링크로 표시됨
▶하드링크 수 : 1(숫자), 이름 추가가 아님
▶파일 이름 : 파일 이름뒤에 원본 파일의 이름이 표시됨 (-> ln.hd)
▶inode번호 : inode번호가 다른 별개의 파일임

심볼릭 링크와 하드링크의 공통점은 심볼릭(하드링크)파일을 수정하면 원본이 수정된다.
차이점은 하드링크는 원본 삭제해도 사용가능, 심볼릭은 불가
하드링크는 디렉토리에 설정 불가, 심볼릭은 가능

***옵션***
-s : 심볼릭 링크 파일 생성

---------------------------touch--------------------------------------------------------------------------------------------------------------------
touch [-acm][-r ref_file | -t time] 파일

빈파일을 생성하거나 파일 관련 시간을 변경한다
지정한 파일이 존재하지 않으면 빈 파일을 생성 ex) touch test -> 빈파일 생성
여러 파일 생성 ex) touch t1 t2 t3 -> t1 t2 t3 생성

**옵션***
-a : 접근 시간만 변경
-c : 지정된 파일이 없는 경우 새로 생성하지 않음
-m : 수정시간만 변경
-r ref_file : 시간을 파일에서 읽음
-t [[CC]YY]MMDDhhmm[.ss] : 시간을 직접 입력

---------------------------chmod--------------------------------------------------------------------------------------------
chmod [옵션] 권한모드 파일/디렉토리명

파일이나 디렉토리의 접근 권한을 변경한다.

**옵션***
-R : 하위 디렉토리까지 모두 변경

**기호모드**
사용자 카테고리 : u(소유자), g(그룹), o(제 3자), a(전체)
연산자 : +(권한부여), -(권한제거), =(접근권한설정)
권한 : r(읽기권한), w(쓰기권한), x(실행권한)

ex) chmod u+rwx,o-x+r,g=r gold >>> gold파일에 대해 소유자는 rwx추가, 제 3자는 r추가 x제거, 그룹은 r로 설정
ex) chmod a+r gold >>>gold에 대해 모두에게 r추가, a생략 가능 -> chmod +r gold

**숫자모드**
rwx에서 권한이 있으면 1, 없으면 0으로 표현 ex)r-x >>> 101
101을 2진수로 계산하면 5 (10)
이 5가 접근권한을 표현하는 숫자가 된다.
ex) 소유자 rwx, 그룹 r-x, 제3자 r-- 일경우 -> 754

ex)현재 권한은 751 일 때, 소유자 x제거, 그룹 w제거, 제3자 r추가 >>> chmod 615 first.dat

-----------------------------------umask------------------------------------------------------------------------------------------
umask [마스크값] : 기본 접근 권한을 출력, 변경 한다. 마스크 값은 8진수로 설정

마스크 값은 파일, 디렉토리 생성 시 "부여하지 않을 권한"을 지정한다
파일이나 디렉토리의 최대접근 권한에서 부여하지 않을 권한을 뺀다.
최대 접근권한 (일반 파일 666(실행권한이 없기때문), 실행 가능 파일 777, 디렉토리 777)

마스크값 없이 쓸 경우 현재 설정된 마스크값 출력 ex) umask
마스크값 설정
ex) umask 077 >>> 소유자는 최대접근권한 부여, 그룹과 제 3자는 권한 없음
적용결과 >>> 일반파일일 경우 600, 실행 가능 파일일 경우 700

 umask 022 >>> 적용결과 일반파일 644 디렉토리, 실행가능파일 755
 umask 027 >>> 적용결과 일반파일 640 디렉토리, 실행가능파일 750

------------------------------------grep-----------------------------------------------------------------------------------
grep [옵션] 패턴 [파일명] : 지정한 패턴을 포함하는 행을 찾는다

패턴에 공백이 있으면 ""으로 묶어야함

**옵션**
-i : 대소문자 모두 검색
-l : 해당 패턴을 포함하는 파일 이름 출력
-n : 행 번호 출력
-v : 패턴을 포함하는 행을 제외한 행 출력
-c : 패턴을 포함하는 행 수 출력
-w : 패턴이 하나의 단어로 된것만 검색

ex)
grep unix grep.dat >>> grep.dat파일에서 문자열 unix가 들어있는 행을 찾아 화면에 출력
grep -n unix ~/*.txt >>> 홈디렉토리에서 모든 txt파일의 unix가 들어있는 행 번호 출력

---------------------------------find-------------------------------------------------------------------------------------------
find 경로 검색조건 [동작] : 조건에 맞는 파일을 지정한 위치에서 찾는다

**옵션**
-name filename : 파일명으로 검색
-type 파일종류 : 파일의 종류로 검색
-mtime [+-]n : 수정 시간이 +n일보다 오래됐거나 -n일보다 짧거나, 부호가 없으면 n일인 파일 검색
-atime [+-]n : 접근 시간이 +n일보다 오래됐거나 -n일보다 짧거나, 부호가 없으면 n일인 파일 검색
-user loginID : 지정한 사용자가 소유한 모든 파일을 검색
-size [+-]n : 파일 크기가 +n보다 크거나 -n보다 작거나, 부호가 없으면 n인 파일 검색
-newer 파일 : 지정한 파일보다 나중에 생성된 파일을 검색
-perm 접근권한 : 지정한 사용 권한과 일치하는 파일을 검색

**동작**
-exec 명령 {}\; : 검색된 파일에 명령을 실행
-ok 명령 {}\; : 사용자의 확인을 받아서 명령을 실행
-print : 검색된 파일의 절대 경로를 화면에 출력
-ls : 검색 결과를 긴 목록 형식으로 출력

***파일 종류**
d : 디렉토리 파일
f : 일반파일
l : 심볼릭 링크 파일
b : 블록 장치 파일
c : 문자 장치 파일
s : 소켓 파일

**검색조건 조합**
-a : and
-o : or
! : not
조건 두개 이상 사용하면서 결합기호 사용안하면 자동으로 and결합

ex) find ~ -name grep.dat >>> 홈디렉토리 내에서 grep.dat 이름을 가진 파일 검색
find ~ -type d >>> 홈디렉토리 내에서 디렉토리 파일을 모두 검색
find ~ -mtime -1 -name grep.dat >>> 홈디렉토리 내에서 이름이 grep.dat이고, 마지막 수정시간이 1일보다 짧은 파일 검색
find ~ -newer grep.dat >>> grep.dat보다 나중에 생성된 파일 검색
find ~ -type d -name Unix >>> 종류가 디렉토리, 이름이 Unix인 파일 검색
find . -type d -o -name grep.dat >>> 현재 디렉토리에서 종류가 디렉토리 또는 이름이 grep.dat인 파일 검색
find /tmp -user $LOGNAME -exec rm {} \; >>>/tmp디렉토리 아래 있는 내 소유의 파일을 모두 찾아 삭제

-------------------------------------which----------------------------------------------------------------------------------------------------
which 명령 : 명령어 파일의 위치를 찾아서 그 경로를 출력

ex) which ls >>> ls명령어 파일의 경로를 출력

-------------------------------------ps----------------------------------------------------------------------------------------------------
ps [옵션] : 현재 실행중인 프로세스에 대한 정보를 출력

**옵션**
-e : 시스템에서 실행중인 모든 프로세스 정보 출력
-f : 프로세스에 대한 자세한 정보 출력
-u uid : 특정 사용자에 대한 모든 프로세스 출력

ex) ps -ef
ps -u user1

------------------------------------who------------------------------------------------------
who [옵션] : 시스템을 사용하고 있는 사용자의 정보를 출력한다

**옵션**
-q : 사용자명만 출력
-H : 출력 항목의 제목도 함께 출력
-b : 마지막으로 재부팅한 날짜와 시간 출력

-----------------------------------id---------------------------------------------------------------------------------
id [옵션] : 사용자(본인)의 로그인 ID와 그룹정보 출력

**옵션**
-a : 모든 그룹 정보 출력

-a지정안하면 uid와 기본 그룹에 대한 정보만 출력

-----------------------------------su-------------------------------------------------------------------------------------------------------
su [-][사용자명] : 현재 사용자를 다른 사용자로 전환

전환하려는 사용자의 비밀번호를 알고 있어야 함
원래 사용자로 돌아가려면 exit사용
사용자명 없이 사용하면 root 사용자로 전환

ex) su user2 >>> 현재 사용자를 user2로 전환
su - user2
-를 지정하지 않으면 사용자는 전환하지만 현재 디렉토리는 그대로 사용한다
-를 지정하면 작업 디렉토리 또한 전환하는 사용자의 디렉토리로 바뀐다

------------------------------------tar-----------------------------------------------------------------------------------------
tar 기능[옵션][아카이브파일] 파일명 : 여러 파일과 디렉토리를 묶어 하나의 아카이브 파일을 생성한다

**기능**
c : 새로운 tar파일 생성
t : tar 파일에 저장된 파일의 목차 출력
x : 아카이브 풀기
r : tar 파일에 새로운 파일 추가
u : 수정된 파일을 tar파일에 업데이트
업데이트 : 이미 생성된 아카이브에 파일을 추가할 수 있다. 1.txt가 아카이브에 있을 때, 수정된 1.txt를 추가하면 아카이브 내에 1.txt가 두개가 되는데,
아카이브를 해제할 때, 나중에 추가된 1.txt가 먼저 추가된 1.txt를 덮어씌운다.

**옵션**
f : 아카이브 파일이나 테이프 장치를 지정. 파일이름을 "-"로 지정하면 tar 파일 대신 표준 입력에서 읽어들임
v : verbose모드. 처리하고 있는 파일 정보 출력
h : 심볼릭 링크의 원본 파일을 포함
p : 파일 복구시 원래의 접근 권한을 유지

아카이브 생성 cvf ex) tar cvf txt.tar *.txt >>> 모든 txt파일을 묶어서 txt.tar 이름으로 아카이브 파일 생성
아카이브 내용 확인 tvf ex) tar tvf txt.tar >>> txt.tar의 상세정보를 확인
아카이브 풀기 xvf ex) tar xvf txt.tar >>> txt.tar 아카이브를 푼다
아카이브 업데이트 uvf ex) tar uvf txt.tar 2.txt >>>txt.tar에 2.txt를 추가

---------------------------------------compress--------------------------------------------------------------------------------------------------------------
compress [옵션] 파일명 : 하나의 파일을 압축하여 용량을 줄인다

**옵션**
-f : 강제 압축 (원래 용량이 작아서 압축이 안될 때 사용)
-c : 압축 결과를 화면에 출력
-v : 압축 정보를 화면에 출력
옵션없이 사용하면 정상압축일땐 메시지X, 오류있을 때만 메시지O

ex) compress 1.txt >>> 1.txt를 압축하여 1.txt.Z 파일을 생성
compress -v *.txt >>> txt파일을 모두 압축

--------------------------------------uncompress-------------------------------------------------------------------------------------------------------
uncompress [옵션] 파일명 : compress로 압축한 파일을 압축해제한다

**옵션**
-c : 복원 결과를 화면에 출력

--------------------------------------zip-----------------------------------------------------------------------------------------------------------
zip [옵션] 파일명 : 파일 압축

zip은 디렉토리도 압축 가능

**옵션**
-v : 압축 정보를 화면에 출력
-r : 디렉토리 압축
-u : 수정되거나 추가된 파일만 출력

ex) zip -v txt.zip 1.txt 2.txt >>> 1.txt와 2.txt를 압축하여 txt.zip을 생성한다

---------------------------------------mailx---------------------------------------------------------------------
mailx [-s][이메일주소] : 메일을 보내거나 읽는다

**옵션**
-s : 메일 제목 지정

**메일을 읽을 때 mailx의 내부 명령**
메일번호 : 해당 번호의 메일을 읽는다
d [메일번호] : 메일 삭제. 번호 지정 안하면 마지막에 읽은 메일 삭제
u 메일번호 : 지워진 메일 복원
엔터 : 다음 메일 읽기
h : 메일 헤더 목록을 다시 출력
r : 메일에 답장 보내기
s 파일명 : 메일을 지정한 파일명으로 저장
q : 읽은 메일을 홈 디렉토리의 mbox 파일에 보관하고 종료
x : 읽은 메일을 별도로 저장하지 않고 그냥 종료
? 또는 l : 사용할 수 있는 내부 명령의 목록을 보여줌

ex) mailx user1 >>> 같은 시스템 내의 사용자 user1에게 메일을 보낸다
옵션없이 쓸경우 메일 확인

-----------------------------------------------wc---------------------------------------------------------------------------
wc [옵션] 파일명 : 파일의 행 수, 단어 수, 문자 수를 출력

**옵션**
-c : 바이트 수
-m : 문자 수
-C : -m과 동일
-l : 행 수
-w : 화이트 스페이스나 새로운 행으로 구분된 단어의 수

옵션없이 실행하면 행수, 단어수, 바이트 수 출력

ex) wc 1.txt
wc -cm 1.txt
wc -cl 1.txt
wc -mw 1.txt

--------------------------------------------sort---------------------------------------------------------------------
sort [옵션][파일명] : 입력한 내용을 정렬해 출력

**옵션**
-b : 앞에 붙는 공백 무시
-c : 정렬이 되지 않은 상태로 출력
-d : 사전순으로 정렬, 숫자, 문자, 공백만 비교
-f : 대소문자 구분없이 정렬
-k # : 정렬의 기준이 되는 필드번호(#) 지정
-m : 정렬된 파일을 통합
-n : 숫자를 산술값으로 전환해 정렬
-r : 역순으로 정렬
-u : 행이 2개 이상 중복되면 한 행만 출력
-o 파일명 : 정렬된 결과를 파일로 저장
-t 문자 : 지정한 문자를 필드 구분자로 사용
+번호 : 번호+1 필드를 기준으로 정렬
+pos1 -pos2 : 정렬하고자 하는 필드의 열을 지정. pos1~pos2 열 정렬

---------------------------------------------uniq---------------------------------------------------------------------------
uniq [옵션][파일명] : 중복 행을 삭제

**옵션**
-c : 각 행의 처음에 중복 횟수를 출력
-d : 중복된 행 중 한 행만 출력. 원래 유일한 행은 출력X
-u : 중복되지 않은 행만 출력

------------------------------------------cut-------------------------------------------------------------------------------------------
cut [옵션][파일명] : 파일에서 선택된 필드를 추출

**옵션**
-c 리스트 : 각 행에서 잘라낼 문자의 위치를 지정
-f 필드번호 : 지정한 필드를 잘라냄
-d 문자 : 필드 구분자

-----------------------------------------paste-----------------------------------------------------------------------
paste [옵션] 파일명1 파일명2 : 파일의 내용을 결합

**옵션**
-s : 수평으로 붙인다
-d 문자 : 필드 구분자를 지정한다

  • : 파일대신 표준 입출력을 사용

------------------------------------dd---------------------------------------------------------------------------------
dd [옵션][if=입력파일명] [of=출력파일명] : 입력한 내용을 변환하여 출력

*옵션**
bs=n : 입출력 블록의 크기를 n바이트로 지정(default : 1블록=바이트)

■■■■■■■■■■■■■■■■■■■■VI편집기 명령어■■■■■■■■■■■■■■■■■■■■■■■
vi 파일명 : vi호출 (파일이 존재하지 않으면 새로 생성됨, 여러 개 파일을 열 수 있음)

●●●●●명령어 모드●●●●●

◆커서이동◆ (3j 하면 아래로 3줄이동)
: 다음 행이 공백이 아닌 첫 문자일 경우 아래로 이동
j : 아래로 이동
k : 위로 이동
w : 다음 단어의 첫문자로 이동
b : 이전 단어의 첫문자로 이동
e : 다음 단어의 끝으로 이동
0(숫자) : 선두의 공백을 포함해서, 현재 행의 첫문자로 이동
$ : 현재행의 끝으로 이동
^ : 선두의 공백을 포함하지 않고, 현재 행의 첫문자로 이동
G : 현 파일의 마지막줄로 이동
nG : 현 파일의 n번째 줄로 이동
( : 다음 구의 처음으로 이동
) : 이전 구의 처음으로 이동

◆화면제어◆ (^는 Ctrl)
^F : 화면을 아래로 한 화면(24행) 내린다
^B : 화면을 위로 한 화면(24행) 올린다
^E : 화면 아래쪽 한 행을 올린다
^Y : 화면 위쪽 한 행을 내린다
^l : 현 화면을 다시 출력한다

◆텍스트의 추가나 교체◆ (텍스트 모드로 복귀)
a : 현 커서 바로 뒤에 텍스트 추가
A : 현재 행의 끝에 텍스트 추가
i : 현 커서 앞에 텍스트 추가
I : 현재 행의 선두에 텍스트 추가
o : 현재 행 아래 새로운 라인을 열고 그 라인 선두에 텍스트 추가
O : 현재 행 위에 새로운 라인을 열고 그 라인 선두에 텍스트 추가
r : 현재 커서 위치에 있는 문자를 이 명령어 다음에 오는 문자로 치환 (텍스트 모드 복귀X)
R : 텍스트를 교환
s : 현재 커서의 문자를 교체
cc 또는 S : 행 전체를 교체
c : 지정된 텍스트 변경(다른 명령어와 조합해서 사용)
cw : 현재 커서 위치부터 한 단어를 ESC 누르기 전까지 스트링으로 치환
c$ 또는 C : 현 커서 위치부터 행의 끝까지 교체
cL : 현재 행에서 화면의 마지막 행까지 치환
cG : 현재 행에서 파일의 마지막 행까지 치환

◆텍스트 삭제◆
x : 현재 커서 위치의 문자 삭제, 숫자와 같이 사용가능
D : 현 커서 다음부터 라인의 끝까지 삭제
dw : 현재 커서 위치의 한 단어 삭제
db : 현재 커서 바로 좌측의 한 단어 삭제, 숫자와 사용가능
dd : 현재 행 삭제
d$ : 현재 커서에서 행의 끝까지 삭제, 숫자와 같이 사용가능
dL : 화면상 마지막 행까지 삭제
dG : 파일의 마지막 행까지 삭제

◆텍스트 복사◆
y : 다른 명령어와 같이 사용
yw : 현재 커서에 위치하는 단어를 복사
yy : 현재 커서에 위치하는 행을 복사
y$ : 현재 커서 위치에서 행의 끝까지 복사
yL : 현재 행에서 부터 화면의 마지막 행까지 복사
yG : 현재 행부터 파일의 마지막 행까지 복사
p(소문자) : 현재 커서의 오른쪽 또는 다음행에 버퍼의 내용을 붙여넣기
P(대문자) : 현재 커서의 왼쪽 또는 윗 행에 버퍼의 내용을 붙여넣기

◆텍스트 이동◆ (숫자, L, (, G 와 같이 사용가능)

: 현재 행을 오른쪽으로 shitf폭 길이만큼 이동시킨다 (기본값 8칼럼)

<< : 현재 행을 왼쪽으로 shitf폭 길이만큼 이동시킨다 (기본값 8칼럼)

◆기타◆
J : 현재 행과 그 다음 행을 결합 (현재 행 끝에 공백문자 두고 다음행과 결합, 숫자와 사용가능)
u : 마지막으로 변경한 명령을 취소
ZZ : 파일이 수정되었을 때 파일 저장 후 vi를 빠져나옴

●●●●●마지막라인 모드●●●●●

◆저장◆
:w : 현재까지 편집한 내용을 저장
:w 파일명 : 현재 편집중인 내용을 지정한 파일명으로 저장 (파일명이 이미 있으면 수행안됨)
:w! 파일명 : 파일명이 이미 존재해도 덮어씌워서 저장
:m, nw 파일명 : m번째 행에서 n번째 행까지를 지정한 파일명으로 저장
:q : 수정된 내용이 없을 때 파일 저장하지 않고 vi빠져나옴, 수정있으면 경고문없이 못나옴
:q! : 파일 저장안하고 vi나옴, 수정된 내용있어도 경고문없이 빠져나옴
:wq : w와 q가 연속으로 수행되며 파일이 수정되지 않았으면 마지막줄에 파일명, 라인수, 문자 수 를 출력

◆읽기◆
:r : 현재 행 다음으로 지정한 파일명의 내용을 읽어들인다
:nr 파일명 : n번째 행 다음으로 지정한 파일명의 내용을 읽어들인다
:r !명령 : 명령어를 실행한 결과를 읽어들인다
:nr !명령 : 명령어를 실행한 결과를 n번째 행 다음으로 읽어들인다

◆편집◆
:e 파일명 : vi를 떠나지 않고 지정한 파일을 편집한다
:e! 파일명 : 현재 편집중인 파일을 저장하지 않고 다른 파일을 편집한다
:e# : 현재 호출된 파일의 이전 파일은 현재 파일로 되돌아 간다
:e!# : 현재 호출된 파일을 저장하지 않고 이전 파일로 되돌아 간다
:e! : 현재 편집중인 파일에서 수정된 내용을 무시하고 새롭게 편집한다

◆여러 파일 편집◆
:n : 여러 파일들을 호출시 다음 파일을 불러온다. 현재 파일이 수정되고 저장되지 않았다면 수행X
:n! : 현재 파일의 수정된 내용을 저장하지 않고 다음 파일을 편집한다

◆패턴검색◆ (계속 찾을땐 또는 n, 역방향으로는 N)
/패턴 : 순방향으로 패턴 검색
?패턴 : 역방향으로 패턴 검색
/패턴/+-n : 순반향으로 지정한 패턴의 첫번쨰에서 +/- n라인 이동하여 해당라인의 처음에 위치
?패턴?+-n : 역방향으로 지정한 패턴의 첫번째에서 +/- n라인 이동하여 해당라인의 처음에 위치

◆기타◆
:! 명령 : 파일 편집 중 vi를 빠져 나가지 않고 unix명령어를 수행한다
:sh : 쉘 상태로 들어간다. 빠져나오려면 Ctrl + d
:set all : 현재 설정된 모든 옵션 리스트를 보여준다.
:set number 또는 :set nu : 파일의 내용에 행 번호를 붙인다.
:set nonumber 또는 :set nonu : 파일의 내용에 붙은 행 번호를 없앤다
:set shiftwidth 또는 :set sw=n : shift의 길이를 n칼럼으로 한다 (기본값 8)
:m, n g/스트링/플래그 : 커서를 이동하지 않고 수정할 수 있다

★플래그★
null : m행에서 n행 사이 마지막으로 스트링이 나타나는 행에 커서를 위치
P : m행에서 n행 사이 스트링을 포함하는 행들을 출력
nu : m행에서 n행 사이 스트링을 포함하는 행들을 행번호와 함께 출력

★플래그2★
null : match된 행의 첫번째 스트링1을 스트링2로 교체한다.
g : mtach된 행의 모든 스트링1을 스트링2로 교체한다
p : 바뀐 내용을 화면 아래쪽에 출력시킨다.
c : 스트링1과 match된 곳을 ^로 표시하며 치환 여부를 묻는다.

ex)
:4s/never/not/
4번째 행의 처음으로 나오는 never를 not으로 바꾼다

:3,11s/is/are /
3~11번째 행들에서 처음으로 나오는 is들을 are로 바꾼다

:3,11s/is/are/g
3~11번째 행들에서 모든 is를 are로 바꾼다

:1,$s/Love/Hate/
1~끝까지의 행에서 처음으로 나오는 Love들을 Hate로 바꾼다

:.,$s/long/short/
현재 행~끝까지의 행에서 처음으로 나오는 long들을 short로 바꾼다

.은 현재 행을 뜻한다

profile
주니어 개발자

0개의 댓글