ㅇ리눅스 기본 명령어 1. 기본 명령어 * which - 명령어 경로 확인 - PATH 환경변수의 경로에 따라 사용자가 실행할 명령어의 위치 혹은 alias를 표시 - which [명령어] ex. [LinuxMaster]#which bash /usr/bin/bash
[LinuxMaster]#which pwd /usr/bin/pwd
*whereis - 대상 명령어의 절대 경로, 소스 파일, 설정 파일, 메뉴얼 등 정보를 표시 - whereis <-옵션> [명령어] - 옵션 :-b(바이너리만 검색), -m(지정한 메뉴얼 섹션만 검색), -M(메뉴얼 페이지 위치 제한), -u(특정 파일 제외) ex. [LinuxMaster]#whereis find find: /usr/bin/find/usr/share/man/man1p/find.1pgz/usr/share/man/man1/find.1.gz
*alias - 명령어의 별칭 만들기 - 명령어에 별칭을 부여하여 자주 사용하는 명령을 편리하게 사용 - alias [별칭 = '명령'] ex. [LinuxMaster]#alias showall='ls -al' [LinuxMaster]#showall
- unalias - 명령어의 별칭 삭제하기
- 만들어 놓은 별칭을 삭제
-
unalias [별칭]
- unalias -a : 설정해 놓았던 별칭을 모두 삭제 ex. [LinuxMaster]#unalias showall [LinuxMaster]#showall -bash: showall: commond not found
-
PATH 환경 변수 - 명령어(프로그램)가 위치한 경로를 찾는 순서 지정
- PATH 환경 변수에 지정된 디렉터리를 순서대로 탐색하여 명령어(프로그램)을 찾고 실행
- 확인 : echo $PATH
-
설정 : export PATH = [설정값:설정값:...]
- ~/.bash_profile에 기본값 설정. (예) export PATH=$PATH:/bar/myfile 기타 환경 변수의 확인 및 설정 방법도 도잉ㄹ함 ex. [LinuxMaster]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [LinuxMaster]#export MYVAR=LinuxMaster [LinuxMaster]#echo $MYVAR LinuxMaster
-
man - 리눅스 명령어의 메뉴얼(manual) 확인
-
리눅스에서 사용할 수 있는 명령어의 메뉴얼을 확인 -man <섹션><-옵션> [명령어]
- 섹션 : 1(일반), 2(시스템 호출), 3(C 표준 함수), 4(장치/특수 파일), 5(특정한 파일), 6(게임/화면보호기) 7(리눅스 파일 표준, 프로토콜, 시그널 목록), 8(시스템 관리 명령어, 데몬 정보), 9(커널 관리 정보)
- -h(사용법 표시), -a(모든 페이지 표시), -w(검색 문자의 메뉴얼 패이지의 위치 표시), -f(키워드 검색하여 페이지 표시) ex. [LinuxMaster]#man find FIND(1) General Commands Manual FIND(1) NAME fine -search for files in a directory hierarchy ...
-
apropos - 명령어 메뉴얼에서 지정한 키워드가 포함된 것을 검색
- whatis 데이터베이스를 참조하여 지정한 문자열을 포함한 것을 검색하여 표시
-
apropos [문자열] ex. [LinuxMaster]#apropos find ffs(3) -find firsr bit set in a word ffsl(3) -find first bit set in a word tfind(3) -manage a binary tree ttyslot(3) - find the slot of the current user's terminal in some file ...
-
manpath - man 명령이 참조하는 메뉴얼의 경로 표시
- man 명령이 페이지를 찾기 위해 탐색하는 경로 정보를 표시
-
manpath ex. [LinuxMaster]#manpath /usr/local/share/man:/usr/share/man/overrides:/usr/share/man
-
info - 리눅스 명령어의 사용법, 옵션 등 표시
- 리눅스 명령어의 사용법, 옵션 등을 표시. man 명령보다 제한적인 기능 제공
-
info [명령어]
-
whatis - 명령어의 기능을 간략히 표시
- whatis데이터베이스에서 키워드를 검색하여 일치할 경우 명령어의 기능을 표시
-
whatis [명령어]
-
사용자 생성 및 계정 관리
- useradd, adduser - 사용자 계정 생성
- 사용자 계정과 관련 정보를 생성
- useradd<-옵션>[계정명]
- 옵션 : -s(로그인 셸 지정), -d(홈 디렉터리 지정), -f(패스워드 만료 후 계정 영구 정지까지의 기간) -e(계정의 유효기간, 임시계정 생성), -c(/etc/passwd에 사용자 설명 추가), -G(소속한 그룹 추가)
- 기본 홈 디렉터리 : /home/계정명
-
계정 정보 파일: /etc/passwd, /etc/shadow, /etc/group에 정보 추가 ex. [LinuxMaster]#useradd -d/CHRIS chris
-
passwd - 사용자 패스워드 변경
- /etc/shadow 파일에 패스워드 변경 및 저장
- passwd<-옵션>[계정명]
- 옵션 : -S(상태표시), -d(삭제), -l(잠금), -u(잠금해제)
-
상태표시 정보 : PS(정상), NP(패스워드 없음), LK(잠금 혹은 패스워드 없는 상태)
-
su - 사용자 전환 (switch user)
- 로그아웃 없이 다른 사용자의 계정으로 로그인, 다른 사용자의 권한을 획득
-
su<-옵션>[계정명]<셸변수>
- 옵션: -혹은 -l 혹은 -login(사용자 환경변수 적용), -s(쉘 지정), -c(계정 전환 없이 지정한 명령어 실행) ex. [LinuxMaster]#su chris [LinuxMaster]#pwd /root [LinuxMaster]#exit exit [LinuxMaster]#su - chris [chris@118-27-119-212 ~]$ pwd /CHRIS
-
사용자 설정 관련 환경 구성 파일
- /etc/default/useradd : 사용자를 추가할 때 기본 설정 정보로 활용
- SKEL : 사용자 홈 디렉터리로 복사될 초기 환경 설정 파일이 저장된 디렉터리 지정
- 텍스트 편집기 (vi,nano 등) 혹은 'useradd -D옵션'으로 변경 ex. [LinuxMaster]#cat /etc/default/useradd
useradd defaults file¶
GROUP=100 HOME=/home INACTIVE=-1 SHELL=/bin/bash SKEL=/etc/skel
- /etc/passwd : 사용자 계정 정보 저장
- 파일 형식) username:password:uid:gid:comment:home-directory:shell
- password:패스워드 -> pwconv 실행 (x로 표시, /etc/shadow에 패스워드 기록), pwunconv로 비활성화
- /etc/shadow:사용자 패스워드 암호화 파일
- 파일 형식) username:password:lastchange:mindays:masdays:warndays:inactive:expire:flag
- lastchage: 1970년 1월 1일 기준 최근 비밀번호 변경일
- mindays: 비밀번호 변경 후 재설정 가능한 최소 기간
- inactive: 비밀번호 만료 후 계정 사용 불가능 까지의 유예 기간
- expire: 계정 사용 정지 날짜 (1970년 1월 1일 기준으로 이후의 날짜 수)
- flag : 기본 0으로 설정
-
/etc/login.defs : 사용자 계정 설정 시 기본값
- 예) MAIL_DIR(메일 디렉터리), PASS_MAX_DAYS(패스워드 변경 없이 사용할 수 있는 최대 일 수) PASS_MIN_LEN(패스워드 최소 길이), CREATE_HOME(홈 디렉터리 생성 여부) 등
-
usermod - 사용자 계정 정보 수정
- 사용자 홈 디렉터리, 그룹, 유효기간, 셸 등 정보를 변경
- usermod<-옵션>[계정명]
- 옵션 :-u(새로운 UID), -g(새로운 GID), -G(새로운 보조 그룹), -d(새로운 홈 디렉터리), -s(새로운 셸), -c(새로운 주석), -ㅣ(새로운 계정명) ex. [LinuxMaster]#usermod -h Usage: usermod [options] LOGIN
Options: -c, --comment COMMENT new value of the GECOS field ...
*userdel - 사용자 계정 정보 삭제 - /etc/passwd, /etc/shadow, /etc/group에서 사용자 정보 삭제 - usermod<-옵션>[계정명] - 옵션: -r(사용자의 메일 파일과 홈 디렉터리 모두 삭제)
*chage - 패스워드 만료 정보 변경 -chage<-옵션>[계정명] - 옵션: -l(계정 정보 표시), -m (최소사용일자), -M(사용가능일자), -E(만기일), -W(만기 전 지정 날짜부터 경고)
*groupadd - 그룹을 추가하는 명령어 -groupadd<-옵션>[그룹명] - 옵션: -g(GID지정), -r(시스템 그룹 시 500번 이하의 값 중 가능 높은 범위 할당)
- groupdel - 그룹을 삭제하는 명령어(단, 소속 계정이 있을 경우 삭제 안 됨)
- groupdel[그룹명]
*groupmod - 그룹 설정 변경 - groupdmod<-옵션>[그룹명] - 옵션:-g(GID 변경), -n(새로운 그룹명 설정)
- 그룹 설정 관련 환경 구성 파일
- /etc/group:사용자가 소속된 그룹을 설정
- 파일 형식) groupname:password:gid:users
- users:콤마(,)로 구분된 사용자 계정
- /etc/gshadow: 그룹의 패스워드를 MD5로 암호화하여 저장
- 파일 형식) groupnamd:password:owner:users
- password: !이면 암호가 없는 상태
- users:콤마(,)로 구분된 사용자 계정
*users: 로그인한 사용자 정보 표시 - user<-옵션> - 옵션: --version (명령어 버전 정보) ex. [LinuxMaster]#users root
*who:접속한 사용자 정보 표시 - 계정명, 터미널 정보, 접속 시간, 접속 서버 등 표시 - who<옵션> - 옵션: -b(마지막 부팅 시간), -q(로그인 사용자, 사용자 수 표시), -r(현재 실행 레벨 표시)
*w: 접속한 사용자 정보 표시 - 서버 시간, 부팅 후 작동 시간, 접속자 수, 접속자별 평균 부하율, 접속자별 계정명, TTY 이름, 로그인 시간 등 - w - JCPU : TTY 장치명에서 사용되는 모든 프로세스의 CPU 사용 시간 - PCPU : WHAT에 표시된 프로세스의 CPU 사용 시간
*id:접속한 사용자 정보 표시 - uid, gid, group 정보 표시 - id<-옵션>[그룹명] - 옵션: -u(UID만 표시), -g(GID만 표시), -G(사용자가 표시된 모든 그룹 표시) ex. [LinuxMaster]#id uid=0(root) gid=0(root) groups=0(root)
- who am i, whoami:접속해 있는 자신의 정보를 표시
- who am i 혹은 whoami ex. [LinuxMaster]#whoami root
*groups:사용자가 속한 그룹 목록 표시 - group<계정명>
- 디렉터리 및 파일 관련 명령어
*pwd:현재 작업 디렉터리명 표시 - pwd ex. [LinuxMaster]#pwd /root [LinuxMaster]#cd/var/www/ [LinuxMaster]#pwd /var/www [LinuxMaster]#cd~ [LinuxMaster]#pwd /root
*cd:디렉터리 이동(change directory) -cd[경로명] -경로명: ~(홈 디렉터리), .(현재 디렉터리), ..(상위 디렉터리), /(루트 디렉터리)
*mkdir : 디렉터리 만들기 - mkdir<옵션>[디렉터리명] - 옵션: -m(권한 설정, 기본 755), -p(상위 디렉터리 생성), -v(생성 디렉터리 메시지 표시)
*rmdir:디렉터리 삭제하기(비어있는 디렉터리만 가능) - rmdir[디렉터리명] rm명령으로 비어있지 않은 디렉터리도 삭제할 수 있음 ex. [LinuxMaster]#ls One Two [LinuxMaster]#rmdir Two [LinuxMaster]#ls One
*ls: 디렉터리의 파일 목록(정보) 표시 - ls<옵션><디렉터리명> - 옵션: -a(숨김 파일 포함), -l(자세히 목록 보기) -d(디렉터리 지정), -r(역순으로 표시), -R(하위 디렉터리 포함)
- cp: 파일, 디렉터리 복사
- cp<옵션>[소스][타깃] -옵션: -b(타깃 파일 존재 시 백업), -f(타깃 파일 존재 시 강제로 삭제 및 복사), -i(타깃 파일 존재 시 덮어쓰기 확인) -r(하위 폴더 및 파일 포함) ex. [LinuxMaster]#ls One hell.txt hi.txt [LinuxMaster]#cp hell.txt hello.txt [LinuxMaster]#ls One hell.txt hello.txt hi.txt
*rm : 파일, 디렉터리 삭제 -rm<옵션>[파일명|디렉터리명] - 옵션: -f(확인없이 삭제), -i(사용자에게 확인), -r(하위 디렉터리 포함, 모든 파일 제거)
*mv:파일, 디렉터리 이동. 파일명 변경에서 사용 - mv<옵션>[소스][타깃] - 옵션: -b(타깃 파일 존재 시 백업), -f(타깃 파일이 있어도 강제 적용), -v(진행 과정의 정보 표시)
*touch:비어있는 파일 생성 혹은 파일의 시간(time stamp)변경 - touch<옵션>[파일명] - 옵션:-a(접근시간 변경),-m(수정시간 변경), -c(파일 시간을 현재 시간으로 변경) -t(특정 파일의 시간 변경), -r파일A 파일B(파일A의 시간을 파일B와 동일하게 변경)
*file : 파일의 종류와 속성값 표시 - file<옵션>[파일명] -옵션 : -b(파일 형식만 표시), -f(지정한 파일만 대상으로 실행), -z(압축 파일 내용 표시), -i(MIME로 출력) ex. [LinuxMaster]#file hi.txt hi.txt: ASCII text [LinuxMaster]#file -i hi.txt hi.txt: text/plain; charset=us-ascii [LinuxMaster]#file -b hi.txt ASCII text
- find: 지정된 조건에 따라 파일을 검색하는 명령어(지정한 경로 및 하위 경로를 대상으로 검색)
- find<경로><-옵션><정규표현식><파일명> -옵션 :-name(이름으로 검색), -user(사용자의 파일/디렉터리 검색), -perm(권한으로 검색), -type(파일 유형으로 검색), -atime숫자(숫자 일수 이전에 접근한 파일 검색), -size(파일 크기를 지정하여 검색) -exec(검색파일을 대상으로 실행할 명령어)
*locate:파일의 위치 검색 -locate[파일명]
*cat:파일 내용을 출력 -cat<-옵션>[파일명] -옵션: -n(행 번호 표시), -b(행 번호 표시, 비어있는 행 제외), -s(2개 이상 빈 행을 하나로 표시) -A(텍스트 파일의 개행 문자, 탭 문자 등 확인)
*head:파일의 앞 부분만 출력 - head<-옵션>[파일명] -옵션:-c(지정 숫자의 바이트만큼 출력), -n(지정 줄 수 만큼 출력, 기본 10줄)
*tail: 파일의 마지막 부분만 출력 -tail<-옵션>[파일명] - 옵션: -c(지정 숫자의 바이트만큼 출력), -n(지정 줄 수 만큼 출력, 기본 10줄) -f(새롭게 추가되는 내용을 실시간 출력), -v(파일명 표시), -q(파일명 표시하지 않음)
*more: 화면 단위로 파일의 내용을 출력 - more<-옵션>[파일명] - 옵션:-숫자(페이지 당 표시할 줄 수) - 보기 작업 : 다음 페이지(Space), 다음 줄(Enter), 1/2페이지(Ctrl+D), 이전 페이지(Ctrl+B), 종료(Q) 문자열 패턴 검색(/패턴)
*less:텍스트 파일을 한 화면씩 표시 - 특징: more와 다르게 커서를 이동할 수 있음
*wc:파일의 라인 수, 단어 수, 알파벳 수 표시 -wc<-옵션>[파일명] -옵션: -l(라인수 표시), -w(단어 수 표시), -c(알파벳 수 표시)
*grep: 특정한 문자열 패턴, 정규식을 이용하여 단어를 검색 - grep<-옵션>[문자열][파일명] -옵션: -r(모든 디렉터리, 파일), -E(정규표현식), -i(대소문자 무시), -v(검색 대상이 포함되지 않은 라인만 표시) -n(라인수 표시), -l(문자열이 포함된 파일명 표시)
*sort:정렬하여 표시하는 명령어 -sort<-옵션>[파일명] -옵션:-b(앞 공백 무시), -o(저장 파일명), -r(역순), -f(대소문자 구분하지 않음), -t(필드 구분자 지정) -u(중복 행 제거), -m(정렬 파일을 병합), -n(숫자만 비교)
*cut:구분자를 이용하여 특정 필드를 추출하는 명령어 -cut<-옵션>[파일명] -옵션: -b(바이트 수를 기준), -c(문자열, 콤마와 하이픈으로 범위 지정), -f(필드를 기준), -d(구분 문자, 기본값은 탭) -z(라인의 구분자로 개행이 아닌 NUL을 이용)
*split:여러개의 파일로 분리하여 저장 - split<-옵션>[파일명] - 옵션: -b(byte단위로 분할), -l(라인 수 단위로 분할)
*diff: 파일을 라인 단위로 비교하여 표시 -diff<-옵션>[파일A|디렉터리A] [파일B|디렉터리B] -옵션:-b(연속 공백 무시), -i(대소문자 구분 없음), -S(동일한 파일인지 확인), -r(디렉터리 차이점 출력)
*cmp: 파일을 바이트(문자) 단위로 비교하여 표시 -cmp<-옵션>[파일A] [파일B] - 옵션:-b(다른 바이트 출력), -l(다른 문자 위치, 문자 출력), -S(비고 결과만 표시)
*comm:파일을 라인 단위로 비교하여 표시 -comm<-옵션>[파일A] [파일B] -옵션:-1(파일 A에만 있는 내용 제외), -2(파일 B에만 있는 내용 제외), -3(공통으로 존재하는 내용 제외)
- 리다이렉션과 정규 표현식
ㅇ 리다이렉션(redirection)의 개념과 활용 - 표준 입력(stdin, standard input, 키보드), 표준 출력(stdout, standard output, 모니터), 표준 에러(stderr, standard, error, 모니터)의 방향을 재지정하는 방법 -방법: >(출력 재지정), >>(추가모드로 출력 재지정), <(입력 재지정)
ㅇ파이프(pipe)의 개념과 활용 - 두개 이상의 명령을 상호 연결하여, 한 명령의 출력을 다른 명령의 입력으로 지정하여 실행하는 방법 -방법: 명령 A|명령 B| ...
ㅇ 정규 표현식의 개념과 예 - 특정한 규칙을 갖는 문자열의 집합을 표현하는데 사용하는 형식 언어 - 정규 표현식의 예 - ^ (첫글자), $ (마지막 글자), .(한글자), * (0회 이상 반복), , ^, +(1회 이상 반복), ?(0혹은1개만존재), ()(부분 정규식의 시작, 끝), l(구분된 단어 중 최소 1개 이상), {m,n} (m개 이상, n개 이하)
- 기타 명령어 - 네트워크 관련 명령어
*ping - 상대 호스트와 IP 통신이 가능한지 확인하는 명령어 - ping<-옵션>[IP주소|도메인명] -옵션: -c(요청 수, 기본 무제한), -i(통신을 위한 신호를 전달하는 시간 간격, 기본 1초) -s(전송할 패킷 크기, 바이트)
*traceroute - 상대 호스트까지의 경로 표시 - traceroute [IP주소|도메인명]
*nslookup - 도메인 정보를 조회하는 명령어 -nslookup<옵션>[파일명] - 옵션:-type=레코드타입(레코드 타입 별 지정) - 레코드 타입:NS(네임서버), MX(메일서버), A(IPv4주소), AAA(IPv6주소), CNAME(별칭), SOA(도메인 정보), PTR(IP주소에 대한 도메인명)
*dig - 도메인 정보를 조회하는 명령어(domain information groper) -dig<서버명>[도메인명]<타입> - 서버명: 네임서버 지정, 기본값은 /etc/resolv에 등록된 네임서버 이용 - 타입:a(IPv4), any(모든 정보), mx(메일 서버), ns(네임서버), soa(SOA정보)
*host - 도메인/호스트 정보를 조회하는 명령어
-host<옵션>[도메인명|IP주소]
*hostname - 시스템(호스트) 이름 확인 및 변경 - hostname <옵션>[파일명] -옵션:-a(별칭 표시), -d(도메인명 표시), -F(파일에서 호스트명 설정), -v(세부 정보 출력) 참고: /etc/sysconfig/network에 HOSTNAME을 설정하면 리부팅 시에도 호스트 이름이 유지됨
*shutdown - 시스템을 종료 혹은 재부팅하는 명령어 -shotdown <옵션> 시간 <메시지> -옵션: -r(리부팅), -h(종료), -c(명령 취소), -k(경고 메시지만 출력), -f(리부팅시 fsck명령 생략), -n(init호출없이 종료), -t(지정 시간에 재시동) -사용 예) shutdown -h now(즉시종료), shutdown -r 10:00 (10시에 재부팅)
*init - 런레벨을 이용한 shutdown 수행 -init[런레벨] -런레벨 : 0~6
*reboot - 시스템 리부팅 명령어 -reboot<옵션> - 옵션: -f(강제 리부팅)
- halt - 시스템 종료 명령어
- halt<옵션> -옵션: -f(강제 종료)
*cal - 달력 출력 -cal<옵션><날짜> -옵션: -i(1월 1일 이후 날짜 수), -y(올해 달력 표시)
- date - 시스템 날짜 표시 혹은 변경
- date<옵션><날짜>
-옵션:-s(설정,시간순서는 hh
ss)
*clear - 화면 지우기
*tty - 접속에 사용한 장치 정보 표시
*time - 명령 수행에 소요된 시간 표시 -출력 결과 : real(총 수행 시간), user(사용자 모드 수행 시간), sys(시스템 호출 수행 시간)
*wall : 로그인한 사용자에게 메시지 전송 -wall[메시지]
*write - 특정 사용자에게 미시지 전송 - write[계정명]<터미널 이름> ->메시지 입력후 CTRL+D
*mesg - write로 전송되는 메시지 수진 여부 확인 및 제어 - mesg[y|n]