★ vi
vi ( VIsual editor ) : 리눅스의 기본 텍스트 편집기
vim ( VI iMproved ) : vi 기능을 향상 시킨 모드형 편집기.
설치법 : yum -y install vim
형식 : vi [ 파일명 ]
파일이 있을때 : 해당 파일을 수정
파일이 없을때 : 새로운 파일을 만들고 수정
명령모드 --> 입력모드 : i , a , o
입력모드 --> 명령모드 : ESC
명령모드 --> 실행모드 : ? , / , :
실행모드 --> 명령모드 : ESC
실행모드
:w : 저장
:w! : 강제 저장
:q : 종료
:q! : 강제 종료
:wq : 저장 후 종료
:wq : 저중 후 강제 종료
:[숫자] : [숫자]라인으로 이동
:set number , :set nu : 라인 번호를 출력
/[문자열] : [문자열] 검색 (이동키 n, N)
명령모드
dd : 커서가 위치한 라인을 삭제
[숫자]dd : [숫자] 만큼 라인 삭제
y : 복사
[숫자]yy : 해당 숫자만큼 복사
p : 붙여넣기
gg : 문서 처음
GG : 문서 마지막
(숫자)g : 해당 숫자 라인으로 이동
치환기능
:%s/[Old]/[New]/g
grep
정규표현식 메타문자
메타문자 의미
^ 행의 시작
$ 행의 끝
. 하나의 문자와 대응
[] [] 사이의 문자 하나와 대응 ex) [a-z] : a~z가 들어가는 단어 검색
[^] [] 사이의 문자를 제외한 문자와 대응
A{N\} A문자를 N번 반복
sort : 파일내의 내용을 알파벳 순서대로 정렬
형식 : #sort [옵션] [파일]
-n : 숫자를 기준으로 정렬
-r : 역순으로 정렬
-u : 중복행 제거 (#uniq)
-o : 출력결과를 파일로 저장 ex) sort -n sort_test1 -o test123 // sort-test1을 숫자로 정렬후 test123파일에 저장
wc ( Word Count ) : 단어, 라인, 문자 수 계산
형식 : #wc [옵션] [파일]
-l : 라인 수 출력
-m : 문자 수 출력
-w : 단어 수 출력
#wc /etc/resolv.conf
#wc -l /etc/passwd // passwd 파일의 라인수 풀력
#nl /etc/passwd // passwd 라인 수 확인
#cat -n /etc/passwd // passwd 라인 수 확인
cut : 필드 잘라내기
형식 : #cut [옵션] [파일]
-c : 잘라낼 글자 위치를 지정
-f : 잘라낼 필드를 지정
-d : 필드와 필드를 구분하는 문자를 지정 (기본값 tab)
#vi cut_test로 cut_test 파일 행성
아래의 내용을 입력
aaa:bbb:ccc:ddd:eee:fff
123:456:678:111:222:333
#cut -c 1 cut_test를 입력
a
1
#cut -c 2 cut_test를 입력
a
2
#cut -c 3 cut_test를 입력
a
3
#cut -c 1-3 cut_test를 입력
watch - 주기적으로 지정된 명령 재실행, 결과를 출력
형식 : watch [옵션] '[명령]'
-n [N] : N초 주기로 명령 결과 출력
-d : 변경된 부분에 음영처리
파일 디스크립터 - 커널이 리눅스 일반 파일과 장치 파일을 포함한 모든 파일을 관리하는 방식
- 표준입력장치 ( 키보드 ) fd/0 stdin
- 표준출력장치 ( 모니터 ) fd/1 stdour
- 표준에러장치 ( 모니터 ) fd/2 stderr
리다이렉션 : 표준입력과 출력 방향을 재 지정하는 방법
1. 출력 리다이렉션
[명령어] > [파일] : 파일 생성 및 덮어쓰기
ex) test > test2 : test의 내용을 출력하지 않고 test2파일에 입력한다.
set -o noclobber // 덮어쓰기 방지 Enable
set +o noclobber // 덮어쓰기 방지 Disable
2. 추가 리다이렉션
[명령어] >> [파일] : 파일의 내용 추가 후 저장
#ls > ls_test // ls 명령어의 출력 결과를 ls_test파일로 리다이렉션
#date >> ls_test
#pwd >> ls_test
#cal >> ls_test
#ls >> ls_test
3. 오류 리다이렉션 (모르겠다)
#ls error_test : 오류 메세지 발생
#ls error_test1 > err1 : 파일생성 불가
#ls error_test2 > err2 : 파일생성 가능
오류 메세지 출력하지 않기.
/dev/null : 리눅스 특수 파일로 파일의 내용을 지우거나 오류메세지를 해당 파일로 리다이렉션하여 출력하지 않을 수 있다.
#cat err10 1> /dev/null 없는 파일, 오류메세지 발생
#cat err10 2> /dev/null 오류메세지를 출력하지 않음
#cat ls_test 1> /dev/null 표준출력을 /dev/null로 방행을 재지정
#cat ls_test 2> /dev/null ??????
4. 표준 입력 리다이렉션
[명령어] < [파일]
sort < test.txt test.txt의 내용을 sort 명령어의 입력으로 받는다.
sort < a.txt > b.txt = cp a.txt b.txt a 의 내용을 정렬하고 그 출력을 b에 넣는다.
tip ) ctrl+d : 저장
파이프 ( pipe )
표준 입출력(키보드,모니터)이 아니라, 프로세스간에 실행되는 입출력을 다음 프로세스에게 전달하는 방식 (명령)
형식 : [명령어1] | [명령어2] ( 주의! | 는 \+shift 의 | 이다.)
ex) ls -l | grep '^d' | wc -l // 디렉토리 개수
ls -l | grep '^d' | wc -l // 파일 개수
다중 명령어
ERR - 에러 명령어
CMD -
1. cmd1 ; cmd2
-첫번째 명령어 부터 순차적으로 실행
-첫번째 명렁어가 실패해도 반드시 실행
ex)
ls ; date ; cal ; pwd
#sfsef ; date ; pwd ; sdft ; ls
2. cmd1 && cmd2 ( AND )
-첫번째 명령이 에러가 아닐시 두번째 명령을 실행
[cmd1] && [cmd2] && [cmd3] --> cmd1,2,3 정상 출력
[ERR1] && [cmd2] && [cmd3] --> 오류 메세지 출력
[cmd1] && [ERR2] && [cmd3] --> cmd1만 출력 후 오류 메세지 출력
[cmd1] && [cmd2] && [ERR3] --> cmd 1,2만 출력 후 오류 메세지 출력
즉, 오류메세지 출력 시점부터 종료
ex)
#ls && pwd && date
3. cmd1 || cmd2 ( OR ) ( 주의! | 는 \+shift 의 | 이다.)
[cmd1] || [cmd2] --> cmd1 실행
[EER1] || [cmd2] --> 에러메세지 후 cmd2 실행
[cmd1] || [cmd2] || [cmd3] --> cmd1만 실행
[cmd1] || [ERR2] || [cmd3] --> cmd1만 실행
[cmd1] || [cmd2] || [ERR3] --> cmd1만 실행
[ERR1] || [ERR2] || [cmd3] ---> 오류 메세지 1,2 출력 후 cmd3 실행
즉, 명령어가 정상으로 실행된 시점까지만 출력
쉘 환경 변수의 종류
1. 지역 환경 변수 ( 쉘 변수 )
- 현재 사용하는 쉘에서만 적용되는 변수
- 변수 선언 및 초기화
변수명=값 ( 주의사항 : <변수명 = 값>(안됨) 공백 X)
-변수 해제
unset 변수명
-지역 변수 확인
#set
-변수 확인
#echo $변수명
지역 환경 변수 테스트 방법
#LOCAL=test //지역변수 LOCAL 에 test 대입
#set | grep LOCAL //지역변수 LOCAL 설정 확인
#echo $LOCAL // LOCAL 변수 값 확인
#echo $SHLVL // 현재 쉘 레벨 1
#/bin/bash // bash 실행
#echo $SHLVL // 현재 쉘 레벨 2
#echo $LOCAL // 지역 변수 local 출력값
#exit
#echo $SHLVL // 현재 쉘 레벨 1
#echo $LOCAL // test 정상 출력
#unset LOCAL // 지역 변수 LOCAL 해제
#set | grep LOCAL // 변수해제 확인
2. 전역 환경 변수 ( 환경변수 )
- 모든 쉘에 적용되는 변수
- 변수 선언 및 초기화
3export 변수명=값 ( 주의사항 : <변수명 = 값>(안됨) 공백 X)
-변수 해제
#unset 변수명
- 전역 변수 확인 명령어
#env
전역 환경 변수 테스트
#export GLOCAL=test
#env | grep GLOBAL // 전역 변수 설정 확인
#/bin/bash // /bin/bash 실행
#echo $GLOBAL // 전역 변수 GLOBAL 확인
#GLOBAL=test2 // 2번째 쉘에서 지역 변수 GLOBAL
#echo $GLOBAL // 같을대 지역변수가 우선이다 (test2)
#exit // 1번재 쉘로 이동
#echo $GLOBAL // 원래 GLOBAL값인 test
종류
$PATH 실행 파일을 찾는 경로
$HOME 현재 사용자의 홈디렉토리
$LANG 쉘에서 사용하는 언어
$SHELL 로그인 시 사용하는 쉘
$HISTSIZE 히스토리 파일에 저장되는 개수
$HISTFILE 히스토리 파일 경로
$HOSTNAME 호스트의 이름
$PS1 프롬프트
$SHLVL // 쉘 레벨?
PATH=$PATH: [경로](path 경로 추가)
#echo $PATH ( 실행 파일이 있는 경로 = 명령어 )
명령어 입력 -> $PATH 변수를 확인하여 $PATH에 나열된 경로에서
해당파일을 순차적으로 찾는다. 이때 파일이 있다면 실행된다.
없다면 Command Not Found 출력
]#./ [파일명]
Login할때 실행되는 파일의 순서
1) /etc/profile
-환경변수와bash shell이 수행될때 실행되는 프로그램을 제어하는 전역적인 시스템 설정과 관련된파일
2)/etc/profile.d/* ( 모든 파일 )
-디렉토리아래 스크립트가 실행되면 여려가지 변수들이 동작하며 쉘 환경을 제공한다.
3) ~/.bash_profile
- 환경변수와bash shell이 수행될때 실행되는 프로그램을 제어하는 지역적인 시스템 설정과 관련된 파일
4) ~/.bashrc
- 사용자에게 기본으로 적용할 alias 정보가 담겨져 있다.
5) /etc/bashrc
- 사용자가 로그인 하였을때 사용자의 계정에 있는 .bashrc 파일에 의해서 실행되는 파일이며, 전역적으로 적용할 alias 및 쉘 환경값을 설정하고 있는 파일이다.
#vi /etc/bashrc : alias 설정 저장
alias c='clear'
사용자 계정 관리 종류
--------------
/etc/passwd - 사용자 기본 정보 파일 ( 계정명, UID, GID, 홈 디렉토리 SHELL 등등 )
/etc/shadow - 사용자 패스워트가 암호화되어 담기는 파일 _ 패스워드 정책
/etc/group - 그룹의 기존정보 파일
/etc/gshadow - 그룹의 패스워드가 암호화되어 저장되는 파일
/etc/default/useradd - 사용자 계정 생성시 기본 정보가 되는 내용을 가지고 있는 파일
/etc/login.defs - 시스템 사용자의 전체를 제한하기 위해 사용하는 설정파일
/etc/skel ( 디렉토리 ) - 사용자 계정 생성 시 홈디렉토리에 기보적으로 새엉되는 파일이 있는 디렉토리
사용자 계정 생성 과정
---------------------------
1) useradd 명령어 실행
2) /etc/default/useradd와 /etc/login.defs 파일에 설정을 참고한다.
3) /etc/passwd, /etc/group 파일에 계정을 추가한다.
4) 홈디렉토리에 사용자 계정명으로 된 디렉토리를 생성한다.
5) /etc/skel에 있는 파일들을 사용자 홈 디렉토리에 복사한다.
6) /var/spol/mail 디렉토리에 메일 관련 파일 생성
/etc/passwd
[사용자계정명]:[패스워드]:[UID]:[GID]:[코멘트]:[홈디렉토리]:[쉘]
1. 사용자 계정명
- 사용자의 계정 명을 나타내며 사용자 정보를 가지고 있는 여러파일에서
사용자에 대한 정보를 찾는 기준이 되며, 이름은 중복되면 안된다.
2. 패스워드
- ' x '의 의미는 패스워드가 암호화 되어 /etc/shadow 파일에 저장되어 있음을 나타낸다.
3. UID ( User IDentification )
- 사용자 개인을 숫자로 구별하는 고유 ID이며, root는 0번, 0~99번은 시스템 관리 계정을 위해
예약되어 있으며, 일반 사용자는 보통 500번부터 시작한다.
4. GID ( Group IDentification )
- 각 사용자는 계정은 고유한 그룹 ID를 가지고 있다.
- 만약 사용자 계정을 생성할 때 그룹을 지정하지 않으면, 사용자 계정명과 같은 이름으로 그룹이 생성된다.
- 그룹번호와 함께 /etc/group 파일에 저장된다.
- 한 사용자는 여러 그룹에 속할 수 있다.
5. 사용자 정보 ( Comment )
- 사용자에 대한 정보를 표시하는 필드로, 시스템에 영향을 주지 않는 필드다.
- 반드시 기록해야하는것은 아니며, 주로 실제 이름을 기록하낟.
6. 홈 디렉토리
- 사용자의 홈디렉토리에 위치한다.
- 일반 사용자일 경우 /home 경로에 홈디렉토리가 위치한다.
- 사용자가 로그인 시 가장 처음에 위치한 디렉토리
- 반드시 절대 경로로 기록된다.
7. 로그인 쉘 ( login shell )
- 사용자의 쉘을 정의한다. ( 기본설정은 /bin/bash )
useradd : 사용자 계정 추가
형식 : useradd [ 옵션 ] [ 계정명 ]
-c : 코멘트
-d : 홈디렉토리
-e : 사용종료일자 지정
-f : 패스워드 유효일자
-g : 주 그룹
-G : 보조그룹
-s : shell 지정
-u : UID 지정
-m -k : skel 디렉토리 지정
su ( Substitute User / Switching User )
su [ 계정명 ] : 해당 계정으로 전환하지만 환경변수를 바꾸지 않는다.
su - [ 계정명 ] : 해당 계정으로 전환하고 환경변수도 함께 바꾼다.
passwd - 패스워드 설정
passwd [ 계정명 ] : 해당 계정명의 패스워드 변경 및 설정
passwd : 현재 로그인한 계정의 패스워드 변경 및 설정
ex
계정명 : test-user7
암호 : 1234
계정명 : test-user8
암호 : 1234
댓글