자료실

홈 / 고객센터 / 자료실

[Unix, Linux] 자주 사용하는 유닉스 쉘 명령어

기본정보
  • 글쓴이
  • 고객지원팀
  • 조회수
  • 92회
상세내용

[Tip]

ctrl A : 명령문 맨 앞


ctrl E : 명령문 맨 뒤


ctrl C : 명령문 실행 전에 명령 취소


파일명 길 때 tab 하면 자동완성


 


 


[Introduction]

man

man 명령어를 치면 명령어에 대한 매뉴얼을 볼 수 있다. 


 


man man

매뉴얼 자체에 대한 매뉴얼을 보여준다.


매뉴얼은 키보드 상하(↑↓)로 움직이거나 Space바로 페이지를 업다운 할 수 있다. 


매뉴얼을 검색한 뒤 : 로 쓰인 곳 뒤에 / 슬래시를 입력하여 검색을 할 수 있다. (ex. /tips)


SYNOPSIS : man 명령어에 파라미터를 추가하는 방법이 나와있다. 

DESCRIPTION : 명령어가 어떻게 작동하는지 자세한 설명을 볼 수 있다. 

SEE ALSO : 현 페이지와 관련되거나 연결된 매뉴얼 페이지를 확인해볼 수 있다. 

 


man -f man

man 옵션에서 -f은 제목에 "man"이 있는 모든 설명 페이지를 받아볼 수 있다. (ex. man -f ls)


 


 


[Shell & File System]

파일 시스템을 통해 하드디스크, 즉 작업 공간에 파일을 저장할 수 있다.


파일 시스템은 디렉토리 구조에 설계되어 있다.


루트 디렉토리는 / 슬래시로 표현되고, 디렉토리는 다른 디렉토리를 포함할 수 있다.


 


[pwd]

pwd

파일 시스템에서 현재 위치한 곳을 말해준다.


 


[mkdir]

mkdir 디렉토리명

디렉토리를 생성한다.


 


[touch]

touch 파일명

파일을 새로 생성한다.


혹은 이미 존재하는 파일의 수정시간을 현재 시각으로 변경한다.


예를 들면 아래와 같다.


%%%%% touch test.txt


%%%%% ls -l


-rw-r--r--  1 taeekim  2020_seoul  2 Jul 30 18:46 test.txt



%%%%% touch test.txt test2.txt


%%%%% ls -l


-rw-r--r--  1 taeekim  2020_seoul  2 Jul 30 18:48 test.txt


-rw-r--r--  1 taeekim  2020_seoul  0 Jul 30 18:48 test2.txt


 


touch -t YYYYMMDDttmm 파일명

존재하는 파일의 수정시간을 원하는 일자로 변경한다.


예를 들면 아래와 같다.


%%%%% ls -l 


-rw-r--r--  1 taeekim  2020_seoul  2 Jul 30 18:48 test.txt



%%%%% touch -t 202501010842 test.txt


%%%%% ls -l


-rw-r--r--  1 taeekim  2020_seoul  2 Jan  1  2025 test.txt


과거, 미래는 시간이 출력되지 않고 연도만 찍힌다.


 


[rmdir]

rmdir 디렉토리명

디렉토리를 삭제한다.


 


[rm]

rm -r 디렉토리명

비어있지 않은 디렉토리를 삭제한다. yes로 대답한다.


 


rm 파일명

파일을 삭제한다.


 


[ls]

ls

현재 위치에 존재하는 파일과 디렉토리 리스트를 출력한다.


 


ls -l

ls 명령어의 상세 리스트 출력 옵션이다.


예를 들면 아래와 같다.


%%%%% ls -l


total 8


-rwxrwxrwx  1 taeekim  2020_seoul  32 Jul 29 18:43 print_groups.sh

-rw-r--r--  1 taeekim  2020_seoul   0 Jul 31 04:56 print_groups_2.sh


(파일/디렉토리 구분, access rights) (링크수) (소유자) (그룹) (bytes수) (마지막 수정 월, 일, 시간) (파일명) 


-                     read


d                    write


                      execute


첫 문자에는 -, d 외에 다른 문자(sticky bit)가 표시될 수 있다.


또한 원하는 파일명만 부여 가능하다.


%%%%% ls -l print_groups.sh


-rwxrwxrwx  1 taeekim  2020_seoul  37 Jul 31 04:56 print_groups.sh


 


ls -a

숨김 파일을 보여준다.


예를 들어 . 와 .. 따위가 있다.


. 와 .. 은 linux, unix OS에서 자체적으로 만들어둔 디렉토리다. 뒤로 가기와 앞으로 가기를 디렉토리로 표현한 것이다.


 


ls -al

.디렉토리를 포함한 상세 리스트를 볼 수 있다. 


명령어 옵션은 순서가 상관없기 때문에 ls -al과 ls -la은 같은 뜻이다.


예를 들면 아래와 같다.


%%%%% ls -al


total 8


drwxr-xr-x   3 taeekim  2020_seoul  102 Jul 29 18:43 .


drwxr-xr-x  11 taeekim  2020_seoul  374 Jul 29 22:14 ..


-rwxrwxrwx   1 taeekim  2020_seoul   32 Jul 29 18:43 print_groups.sh


 


ls -t 

수정시간을 최근(마지막) 순서대로 정렬한 리스트를 출력한다.


 


ls -U

생성시간이 빠른 순서대로 정렬한 리스트를 출력한다.


 


ls -m 

좌우 , 콤마로 구분해서 리스트를 출력한다.


 


ls -p

폴더에는 / 슬래시를 추가하여 구분해서 출력한다.


 


[cd]

cd .

자기 디렉토리로 간다.


 


cd ..

부모 디렉토리로 간다.


 


cd /경로

원하는 경로로 이동한다 (tab을 치면 갈 수 있는 경로 자동완성)


 


cd 

홈 디렉토리로 간다.


 


[chmod ①]

chmod는 접근 권한을 제어하는 명령어다.


첫 번째 방법은 chmod [대상+권한] [파일명/디렉토리명] 과 같은 방식이다.


 


access rights


read

write

execute

사용자 집단


u (user, 소유자)

g (group, 그룹)

o (other, 다른 사람)

a (all, 즉 user group other에 모두 적용)

동작


+ : adding right

- : removing right

 


chmod o+w 파일명/디렉토리명

다른 사람에게 쓰기 권한을 부여한다.


예를 들면 아래와 같다.


%%%%% ls -l

-rw-r--r--   1 taeekim  2020_seoul    0 Jul 30 17:42 test.txt

%%%%% chmod o+w test.txt 


%%%%% ls -l


-rw-r--rw-   1 taeekim  2020_seoul    0 Jul 30 17:54 test.txt


access rights는 user | group | others 순으로 나열된다. 


 


 


chmod a+x 파일명/디렉토리명

모든 사용자에게 실행 권한을 부여한다.


예를 들면 아래와 같다.


%%%%% chmod a+x test.txt 


%%%%% ls -l


-rwxr-xrwx   1 taeekim  2020_seoul    0 Jul 30 18:09 test.txt


 


chmod g-rx 파일명/디렉토리명

그룹에게서 읽기 권한과 실행 권한을 제거한다.


예를 들면 아래와 같다.


%%%%% chmod g-rx test.txt


%%%%% ls -l


-rwx---rwx   1 taeekim  2020_seoul    0 Jul 30 18:09 test.txt


 


[chmod ②]

chmod의 두 번째 방법은 chmod [권한숫자조합] [파일명/디렉토리명] 과 같은 방식이다.


r = 4

w = 2

x = 1

만약 rwx rw- r-- 조합의 접근 권한을 부여하고 싶다면


      421 420 400을 대신 부여하는 방식이다.


→     7    6    4  로 합한 수 한자리를 결과적으로 이용한다.  


 


 


chmod 764 파일명/디렉토리명

소유자에게 읽기/쓰기/실행 권한을, 그룹에게 읽기/쓰기 권한을, 다른 사람에게 읽기 권한을 부여한다.


예를 들면 아래와 같다.


%%%%% chmod 764 test.txt


%%%%% ls -l


-rwxrw-r--   1 taeekim  2020_seoul    0 Jul 30 17:54 test.txt


 


[echo]

echo 파라미터

입력한 파라미터를 표준 출력(standard output)에 재생(replay)한다.


예를 들면 아래와 같다.


%%%%% echo code4human


code4human


 


[cat]

cat 파일명

파일의 내용을 보여준다. 파일에 접근하진 못한다.


(tip : tab을 누르면 파일 이름이 자동완성된다.)


 


cat -e 파일명

파일의 내용을 보여주되, 줄바꿈(hard return) 표시로 $(non-printable characters)를 출력한다.   


예를 들면 아래와 같다.


%%%%% cat -e test.txt


hello$


myname$


is$


tenakim$


a.k.a.code4human$


 


[more]

파일에 접근하여 내용을 보여주고 man처럼 동작해서 문서 paginate한다.


예를 들면 아래와 같다.


%%%%% more t*.txt


hello


myname


is


tenakim


a.k.a.code4human

test.txt (END)


길이가 긴 문서의 경우 :로 접근 가능하며 arrows로 PgUp PgDown 할 수 있고 스페이스바로 페이지를 넘길 수 있다. 


또한 \로 원하는 부분을 검색할 수 있다.


검색부분이 많으면 스페이스바를 이용해서 다음 부분으로 넘어간다. 


중단하려면 q 입력한다.


 


[head]

head 파일명

파일의 앞부분만 출력한다.


 


head -n 라인수 파일명

앞에서부터 출력할 라인 수를 지정한다.


예를 들면 아래와 같다.


%%%%% head -n 2 practice.txt 


lsjflsdjlsdfj


djfjdljfsd


 


head -c 바이트수 파일명

앞에서부터 출력할 바이트 수를 지정한다.


예를 들면 아래와 같다.


%%%%% head -c 2 practice.txt


ls%


 


참고로 쉘에서 실행하면 결과 바로 뒤에 command prompt가 보이게 된다.


hard return 이후 $ 또는 %가 없기 때문이다.


%%%%% sh


sh-3.2$ head -c 2 practice.txt


lssh-3.2$


 


[tail]

tail 파일명

파일의 뒷부분만 출력한다.


 


tail -n 라인수 파일명

뒤에서부터 출력할 라인 수를 지정한다.


예를 들면 아래와 같다.


%%%%% tail -n 2 practice.txt


djfjdljfsd


fldjsl


 


tail -c 바이트수 파일명

뒤에서부터 출력할 바이트 수를 지정한다.


주의할 것은 줄바꿈 표시 $ 또는 % 이 라인 끝에 포함되어 있으므로 지정한 바이트보다 한개 적게 출력된다.이 부분은 쉘로 실행해도 동일하다.


예를 들면 아래와 같다.


%%%%% tail -c 3 practice.txt 


sl


%%%%% sh


sh-3.2$ tail -c 3 practice.txt 


sl


 


[env, export - 환경변수]

$변수

변수 = 값 으로 변수를 선언하고 $변수 로 활용한다. 


예를 들면 아래와 같다.


%%%%% truc=bidle

%%%%% dream=coder

%%%%% echo dream

dream


%%%%% echo $dream


coder


 


export 변수

환경변수를 선언한다.


선언된 환경변수는 실행하는 프로그램에 전달 가능하다.


로컬 쉘에서 선언한 변수는 다른 프로그램을 실행할 때 인식되지 않는다. 


예를 들면 아래와 같이 bash 대신 sh로 다른 쉘을 사용해보면 서브 쉘(subshell)은 변수 dream을 인식하지 못 해서 출력하지 않는다.


%%%%% sh  

sh-3.2$ echo $dream


sh-3.2$ exit


exit


 


export 명령을 통해 내 환경으로 가져온 환경변수는 서브 쉘에서도 인식한다.


%%%%% export dream

%%%%% sh


sh-3.2$ echo $dream


code


 


env

환경 프로그램을 볼 수 있다. 선언한 환경변수가 있다면 함께 출력된다.


예를 들면 아래와 같다.


%%%%% env


USER=taeekim


LOGNAME=taeekim


HOME=/Users/taeekim


PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki


MAIL=/var/mail/taeekim


SHELL=/bin/zsh


TERM=linux


SSH_CLIENT=10.51.9.2 36946 22


SSH_CONNECTION=10.51.9.2 36946 10.15.1.6 22


SSH_TTY=/dev/ttys001


TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n000cf080033h2/T/


SHLVL=1


PWD=/Users/taeekim/Desktop/trash


OLDPWD=/Users/taeekim


dream=coder


_=/usr/bin/env


 


[grep]

grep 검색어 파일명

파일내용을 검색어 필터링을 걸어 존재하는 라인만 보여준다.예를 들면 아래와 같다.


%%%%% cat hello.txt


hi Guten Tag, taeekim!


this is not hello!



%%%%% grep ta hello.txt


hi Guten Tag, taeekim!


 


grep -v 검색어 파일명

역으로 검색어가 포함되지 않은 라인만 보여준다.


예를 들면 아래와 같다.


%%%%% cat hello.txt


hi Guten Tag, taeekim!


this is not hello!



%%%%% grep -v ta hello.txt 


this is not hello!


 


grep -i 검색어 파일명

insensitive 하게 검색한다. 


즉, 대소문자(lower and upper case)를 구분하지 않고 필터링한다.


예를 들면 아래와 같다.


%%%%% cat hello.txt


hi Guten Tag, taeekim!


this is not hello!



%%%%% grep -i TAG hello.txt 


hi Guten Tag, taeekim!

자료실

유용한 자료들을 모아두었습니다.

자료실 목록
번호 제목 글쓴이
열람중 고객지원팀
65 고객지원팀
64 고객지원팀
63 고객지원팀
62 고객지원팀
61 고객지원팀
60 고객지원팀
59 고객지원팀
58 고객지원팀
57 고객지원팀
56 고객지원팀
55 고객지원팀
54 고객지원팀
53 고객지원팀
52 고객지원팀
51 고객지원팀
50 고객지원팀
49 고객지원팀
48 고객지원팀
47 고객지원팀