리다이렉션(Redirection)
표준 입출력 기능
표준 입력(0) ---> 키보드
표준 출력(1) ---> 모니터
표준 에러(2) ---> 모니터
리다이렉션 연산자
사용 예시
명령어 > 파일 : 파일이 없다면 생성, 기존 파일이 잇다면 삭제 후 결과를 출력(Write) - 덮어쓰기
명령어 >> 파일 : 파일이 없다면 생성, 기존 파일이 있다면 내용을 추가(Append)
명령어 < 파일 : 파일에서 표준 입력을 받음
명령어 2> : 에러의 방향을 바꿈
명령어 1>&2 : 출력을 에러로 보냄
명령어 2>&1 : 에러를 출력으로 내보냄
cat을 이용하여 파일을 만들고 내용 입력 및 출력하기
cat > Hi_Linux 로 파일을 생성한다.
현재 Hi_Linux 파일에는 아무 내용도 없기 때문에 사용자가 입력한 내용을 화면에
출력해준다.
내용을 입력 후 ctrt+d를 사용하여 내용을 저장
cat Hi_Linux 명령어로 입력 시 아래와 같이 화면에 출력되는 것을 확인할 수 있다.
echo -e를 이용하여 출력할 내용에 이스케이프 문자 추가하기
echo -e "나는 오늘 무척이나 \n 더웠다"
명령어를 사용하여 위의 내용을 출력할 경우 아래와 같이 출력된다.
나는 오늘 무척이나
더웠다
이스케이프 문자를 사용하여 내용을 출력할 수 있다.
시간 세팅 설정 변경하기
timedatectl 명령어를 사용하여 Local Time, Universal Time, RTC Time, Time Zone 등을
확인할 수 있다.
시간 세팅 설정 변경 방법 (2가지)
timedatectl list-timezones | grep Seoul
Seoul이 포함된 키워드를 출력한다
1-2. 변경할 timezone 설정
timedatectl set-timezone Asia/Seoul
Asia/Seoul로 TimeZone 설정을 한다
- 기존 파일 삭제
rm -rf /etc/localtime
- zoneinfo에 있는 zone 설정 파일 링크하기
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
이후 생성 확인 및 시간 확인 처리
시스템 종료 및 재부팅
shutdown
시스템을 종료하는 명령어
- 형식
shutdown [옵션] [시간(n) - 분단위, now] [comment]
- 옵션
-h : 시스템 종료 (halt, init 0)
-r : 시스템 재부팅 (reboot, init 6)
-k : 시스템 종료 로그 메시지 전송 (Warnning 메시지 전송 - 실제 종료 X)
-c : 시스템 종료 설정에 대한 취소
Linux System Run Level
레벨 0
시스템 종료 (halt, shutdown -h now)
레벨 1
싱글모드(관리모드) - 콘솔로만 접근 가능 (EC2의 다이렉트로만 연결)
시스템 관리 또는 root 패스워드를 변경하고자 하는 경우에 사용하는 런레벨(init 1)
레벨 2
NFS를 지원하지 않는 멀티 유저 실행 모드 (init 2)
레벨 3
NFS를 지원하는 멀티 유저 실행 모드 (init 3)
레벨 4
실행하지 않는 실행 모드 (init 4)
(사용자가 별도로 지정하여 사용할 수 없음)
레벨 5
X윈도우(GUI) 환경으로 실행되는 멀티 유저 실행 모드 (init 5)
레벨 6
시스템 재부팅 (reboot, shutdown -r now)
Alias
alias(별칭)
자주 사용하는 명령어가 길 때, 줄여서 표현(사용)이 가능하다
불러오고 싶은 내용들을 alias를 이용하여 별칭을 생성 후 간단한 키워드로 불러올 수 있다
- 목록 확인
alias
1. 별칭 생성
alias name='명령' # alias 추가
2. 별칭 삭제
unalias name # alias 삭제
which, whereis, locate
1. which
명령어의 위치를 출력하는 키워드
which 명령어 => 위치 출력
which -a 명령어 => 검색 가능한 모든 경로에서 명령어를 찾음
2. whereis
실행 파일, source, man(manual) 페이지의 파일을 찾아준다
ex)
whereis git
=> git: /usr/bin/git /usr/share/man/man1/git1.gz
3. locate (ubuntu / debian 계열)
파일명을 패턴으로 빠르게 검색한다
ex) locate *.java => .java 확장자인 파일을 검색한다
VI(Visual Editor) / VIM(Visual Editor Improved)
리눅스에서 사용되는 가장 대표적인 문서 편집기(기본 지원)
윈도우 메모장과 비슷한 기능을 가지고 파일 편집이 가능하다
vi와 vim 차이점
vim은 에디터에서 화살표 방향키로 커서의 이동이 되지만 vi는 커서 이동이 되지 않는다.
vi의 경우 순수 h, j, k, l을 이용하여 이동한다
사용법
vi(m) file_name : vi(m)로 파일을 열기
vi(m) +file_name : 기존 파일 맨 마지막 라인에 커서를 위치 시킴
vi(m) +숫자(n) file_name : 기존 파일의 원하는 라인(n행)부터 커서를 위치 시킴
vi(m) +/문자열 file_name : 기존 파일의 원하는 문자열부터 커서를 위치 시킴
n을 누르면 아래 쪽으로 이동하고, shift + n을 누르면 역방향으로 이동
vi 편집기 모드(3가지)
입력 모드
글자를 입력할 수 있는 모드
명령 모드(default)
파일을 편집할 수 있는 작업이 가능한 모드
실행 모드
파일 저장, 읽기, 외부 명령 실행, 종료 등을 수행할 수 있는 모드
모드 간 이동
각 모드별 직접 연결된 모드 간에 이동이 가능하지만 건너뛰어 이동하는 것은 불가
모드 | 방향 | 모드 | 방향 | 모드 |
---|---|---|---|---|
입력 모드 | ↔ | 명령 모드(default) | ↔ | 실행 모드 |
→ | "ESC 키 입력" | ← | ||
a, A, i, I, o, O | ← | → | "." |
k : 위로 이동
j : 아래로 이동
h : 왼쪽 이동
l : 오른쪽 이동
^ : 행 맨 왼쪽의 첫 글자로 커서 이동
$ : 행 마지막 글자의 위치로 커서 이동
G : 파일의 마지막 행
nG : n번째 행으로 이동
[[ : 커서를 파일의 맨 처음으로 이동
]] : 커서를 파일의 맨 마지막 행으로 이동
a : 커서 바로 다음부터 편집
A : 커서를 행의 마지막으로 이동 후 편집
i : 커서 위치에서 편집
I : 커서를 행의 처음으로 이동 후 편집
o : 커서 아래에 행을 추가하고 편집
O : 커서 위에 행을 추가하고 편집
x : 한 글자씩 삭제
b : 한 단어씩 뒤로 이동
db : 한 단어씩 뒤로(왼쪽) 삭제
dd : 한줄(행) 삭제
ndd : n(숫자)만큼 행을 삭제
yy : 한줄(행) 복사
nyy : n(숫자)만큼 행을 복사
p : 현재 커서 아래에 붙여넣기
P : 현재 커서 위치에 붙여넣기
np : n(숫자)만큼 행을 붙여넣기
dw : 커서 위치에 한 단어 삭제
D : 커서 위치에서 라인 마지막까지 삭제
ndw : n(숫자)만큼 단어 삭제
nx : n(숫자) 글자만큼 삭제
y$ : 커서의 위치에서 라인 마지막까지 복사
u : 마지막 변경된 내용 취소
U : 현재 행에서 변경된 내용 모두 취소
/(단어)
문서 내에 단어를 위에서 아래로 검색
n : 아래로, N : 위로
?(단어)
문서 내에 단어를 아래에서 위로 검색
n : 위로, N : 아래로
[사용 형식]
:[n]s/old/new
- n : 라인(행)
- old : 이전 단어(검색 단어)
- new : 새로운 단어(변경할 단어)
ex)
:39s/PASS/Word => 39줄에 있는 PASS를 Word로 변경
:34,42s/PASS/Word => 34 ~ 42줄에 있는 PASS를 Word로 변경
:%s/PASS/Word => 문서 전체에 있는 PASS를 Word로 변경
"/g" 옵션 : 전부를 의미함(all 개념)
"/i" 옵션 : 대소문자를 구분하지 않음
:w => 파일 저장
:q => 종료
:wq => 파일을 저장하고 종료
:{}! => 강제 실행( {}명령 )
:x => 저장하고 종료
:e file_name => file_name의 파일을 불러들여 기존 파일 대체
:r file_name => file_name의 파일을 불러들여 현 커서 위치에 추가
:nr file_name => file_name의 파일을 불러들여 n줄 이후에 추가
:! 명령어 => 외부 명령어를 실행
ex)
:! ls -l => ls -l을 터미널에서 사용하는 것과 같은 출력 결과
:e! => 현재 문서 내에서 변경한 모든 내용을 취소 (문서를 다시 불러온다)
:set nu => 편집 문서에서 행 번호를 표기
:set nonu => 편집 문서에 행 번호를 표기 제거(비활성화)
:set ai => 자동 들여쓰기
:set wrap => 자동 줄바꿈 설정
:set ts=숫자 => 탭키를 숫자만큼 공간으로 설정하기 (기본 8자)
:n => n(숫자)번째 행으로 이동
:f => 현재 파일 정보를 확인
추가적인 내용들
- :1,$y => 파일 전체 복사
- 1,$ => 1줄부터 마지막 줄까지
- 10,15 => 10줄부터 15줄까지
- -5,+5y => 현재 커서 위치에서 5줄 이전부터 5줄 이후까지 복사
- :3,. => 3줄부터 현재 커서 위치까지
- :.,$ => 현재 커서 위치에서 마지막까지
- :.,$-2 => 현재 커서 위치에서 마지막 라인 2줄 이전까지
리눅스는 실제 파일 형식, 실행된 데이터, 디렉터리 모두 파일로도 인식한다
vi 편집기 추가 기능
[화면 분할]
:sp or ctrl+w,s => 수평 분할 화면 처리
:vsp or ctrl+w,v => 수직 분할 화면 처리
창 이동: ctrl+w 방향키
ctrl+w,h => 왼쪽 창으로 이동
ctrl+w,j => 아래 창으로 이동
ctrl+w,k => 위쪽 창으로 이동
ctrl+w, l => 오른쪽으로 창 이동
vim file1 file2 file3
- :ls => 파일 정보 보기
- 1 %a "file1" 1줄
- 1 "file2" 0줄
- 1 "file3" 0줄
%a : 현재 작업 파일 / # : 이전 작업 파일
:n => 파일 이동
:bn => 다음 파일로 이동하기 (next)
:bp => 이전 파일로 이동하기 (Previous)
:bf => 동시에 연 파일 중 첫 번째 파일로 이동
:bl => 마지막 파일로 이동하기
ctrl+^(6) => 현재 파일과 이전 파일을 열어주는 토글 기능
sudo
제한적 관리자 권한 사용 명령어, 관리자 권한으로 명령을 실행해야 하는 경우
[형식]
sudo [옵션] or [명령어-관리자 권한으로 실행할 명령어]
(옵션)
-i : 해당 터미널에서 관리자 권한 세션으로 처리
sudo는 관리자 권한을 사용할 수 있는 설정이 되어 있는 경우에만 사용이 가능하다
sudo 설정 변경은 "visudo"를 통해서 변경이 가능하다.
(설정 파일의 위치 ./etc/sudoers)
%wheel ALL = (ALL) ALL
첫 번째 ALL : Server
두 번쨰 ALL : 명령어
세 번째 ALL : NOPASSWD
sudo gpasswd -a testuser1 wheel