Linux Command Line 5
환경 변수
쉘은 환경에 두 가지 기본적인 형식을 저장한다. 하나는 환경 변수, 다른 하나는 쉘 변수이다. 쉘 변수는 bash에 의해 저장된 작은 데이터고, 환경 변수는 기본적으로 그 외의 모든 것이다.
시험 삼아 printenv | less
해본다.
set | less
을 하면 쉘 변수와 환경 변수를 모두 볼 수 있다. 그 외에 정의된 쉘 함수가 있으면 그것도 볼 수 있다.
printenv 나 set은 alias를 보여주지 않기 때문에 이 alias는 alias
명령어로 보면 된다.
이제와서 확인해보니 git에 대한 alias가 굉장히 많았다..
로그인 여부에 따른 쉘 환경
쉘 세션은 로그인 쉘 세션과 비로그인 쉘 세션이 있다.
로그인 쉘 세션에서는 사용자 이름과 비밀번호를 입력하도록 되어 있다. 예를 들면 가상 콘솔 세션이 시작할 때다. 비로그인 세션은 일반적으로 GUI환경에서 터미널 세션을 실행할 때 나타난다.
로그인 쉘 세션용 시작파일
파일 | 내용 |
---|---|
/etc/profile | 모든 사용자에게 적용되는 일반 환경설정 |
~/.bash_profile | 개인 사용자 시작 파일. 일반 환경설정을 확장하거나 무시할 수 있다. |
~/.bash_login | ~/.bash_profile 파일이 없으면 이 파일을 읽는다 |
~/.profile | 위의 두파일이 모두 없으면 이 파일을 읽는다. (ubuntu에서는 이 파일이 default다) |
비로그인 쉘 세션용 시작파일
파일 | 내용 |
---|---|
/etc/bash.bashrc | 모든 사용자에게 적용되는 일반 환경설정 |
~/.bashrc | 개인 사용자 시작 파일. 일반 환경설정을 확장하거나 무시할 수 있다. |
맥의 경우엔 /etc/bashrc_Apple_Terminal
에 bash support for Terminal 이라고 나와있다.
**참고: 커맨드라인에 명령어를 입력하면 쉘은 명령어를 PATH 변수에 있는 디렉토리에서 찾는다.
.bashrc 를 수정하여 터미널이 처음 켜졌을 때 상태를 바꿀 수 있다. alias를 넣어 놓는다거나, 기본 설정들을 추가 할 수 있다.
.bashrc를 수정한 후에 source .bashrc
를 통해 다시 실행 시킨다.
참고하고 있는 책에 이런 예제가 있다.
bashrc
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
이렇게 추가 해두면 다음 terminal 실행 시에 저런 alias들이 추가된 채로 실행된다.
맥에서는 oh-my-zsh + iterm을 사용해서 예쁜 터미널을 사용하곤 한다.. 이에 대해서는 따로 정리를 해두어야 할 것 같다. (다시 셋팅하려면 오래 걸린다..)
간단한 VI 사용
$ vi
간단하게 vi가 실행 된다.. vi를 실행 시켜도 기본적으로 vim으로 실행 된다.
텍스트 입력 모드
입력모드로 들어가려면 I 키를 누르면 된다. 그러면 화면 하단에 -- INSERT --
라고 나올 것이다.
입력을 한 후에 이제 esc키를 누르고 저장을 하고(:w) 종료(:q)를 하면 된다.
vim에는 많은 커서 이동 명령어들이 있다. 이를 잘 쓰면.. 괜히 멋있고.. 생각보다 유용하다.
키 | 커서 이동 방향 |
---|---|
L, 오른쪽 방향키 | 오른쪽 한 문자 |
H, 왼쪽 방향키 | 왼쪽 한 문자 |
J, 아래쪽 방향키 | 한 줄 아래로 |
K, 위쪽 방향키 | 한 줄 위로 |
0 | 현재 줄 처음으로 |
^ | 현재 줄 첫 번째 공백이 아닌 글자로 |
$ | 현재 줄 마지막으로 |
W | 다음 단어나 구두점 기호 처음으로 |
SHIFT-W | 다음 단어 처음으로, 구두점 기호 무시 |
B | 이전 단어나 구두점 기호 처음으로 |
SHIFT-B | 이전 단어 처음으로, 구두점 기호 무시 |
CTRL-F, PAGE DOWN | 한 페이지 아래로 |
CTRL-B, PAGE UP | 한 페이지 위로 |
숫자-SHIFT-G | 줄 번호로 이동 |
SHIFT-G | 파일의 마지막 줄로 |
기존에 편집하고 있던 문서가 있다면 A명령어로 덧붙이기 할 수 있다. I 대신에 A를 쓰면 커서를 줄의 맨 끝으로 이동 시켜준다.
o
는 현재 줄 아래에 빈 줄 추가, O
는 현재 줄 위에 빈 줄을 추가 해준다.
u
명령으로 방금한 작업을 취소 할 수 있다.
x
명령으로 문자를 지울 수 있다. 숫자x
로 숫자에 해당하는 개수만큼 문자를 지울 수 있다.
D
명령 앞에 숫자로 여러 줄을 지울 수 있다. 현재 줄을 포함한 숫자에 해당하는 개수 만큼의 줄을 지운다.
텍스트 삭제 명령어
명령어 | 삭제 내용 |
---|---|
x | 현재 문자 |
3x | 현재 문자 포함 다음 2개 문자 |
dd | 현재 줄 |
5dd | 현재 줄 포함 다음 4줄 |
dw | 현재 커서 위치부터 다음 단어 앞까지 |
d$ | 현재 커서 위치부터 현재 줄 끝까지 |
d0 | 현재 커서 위치부터 현재 줄 맨 앞까지 |
d^ | 현재 커서 위치부터 그 줄의 공백이 아닌 첫 번째 글자까지 |
dG | 현재 줄부터 그 파일 끝까지 |
d20G | 현재 줄부터 파일의 20번째 줄까지 |
복사 명령어
명령어 | 복사 내용 |
---|---|
yy | 현재 줄 |
5yy | 현재 줄 포함 다음 4줄 |
yW | 현재 커서 위치부터 다음 단어 앞까지 |
y$ | 현재 커서 위치부터 현재 줄 끝까지 |
y0 | 현재 커서 위치부터 현재 줄 맨 앞까지 |
y^ | 현재 커서 위치부터 그 줄의 공백이 아닌 첫 번째 글자까지 |
yG | 현재 줄 부터 그 파일 끝까지 |
y20G | 현재 줄부터 파일의 20번째 줄까지 |
복사를 했으면 p
명령으로 붙여 넣을 수 있다.
줄 합치기
J
명령으로 줄을 합칠 수 있다.
위 상황에서 LINE 3에 커서를 두고 J를 실행 해보면 아래 결과 처럼 나온다.
검색
/
명령을 입력하면 아래 /가 나타난다. 거기에 검색하려는 글자를 입력하고 엔터키를 누르면 해당 문자가 있는 곳으로 커서가 이동한다. 정규표현식으로도 검색이 가능하다!
치환
찾아 바꾸기를 할 수 있다.
아까 그 파일에서 :%s/LINE/line/g
명령을 실행 시키면 다음과 같이 결과가 나온다.
명령을 뜯어보면
- : - ex 명령어 실행
- % - 작업 수행할 줄 범위 (%는 첫번째 줄부터 마지막 줄까지, 아니면 범위로 1,5 or 1, 이런식으로 지정할 수 있다.)
- s - 작업 지정 (찾아 바꾸기)
- /LINE/line - LINE을 찾아서 line으로
- g - 파일 전체
:%s/LINE/line/gc
처럼 명령어 마지막에 c를 붙이면 사용자 확인 메시지를 보여준다.
다중 파일 편집
vi file1 file2 file3
와 같은 식으로 할 수 있다.
파일 간 전환은 :n
으로 다음 파일로 전환, :N
으로 이전 파일로 전환한다.
:buffers
로 열려 있는 파일 목록을 볼 수 있다.
파일 내용 복사
test.txt에서 test2.txt로 파일 내용을 복사 하고 싶다면 test.txt에서 yy
로 라인을 복사하고, :buffer 2
로 두번째 파일로 이동해서 p
로 붙여넣는다.
파일 전체를 다른 파일에 넣고 싶다면..
vi test3.txt
원하는 위치(나는 5번째 줄)로 이동해서 :r test2.txt
를 실행한다.
이렇게 실행이 된다!
저장하기
저장은 알고 있는 것처럼 :w
:wq
로 저장 종료를 할 수 있다. 아니면 ZZ
로 저장후 종료를 할 수 있다!
이름을 바꾸고 싶으면 :w [저장할 이름]
으로 저장할 수 있다.
vim으로 게임을 할 수 있는 사이트가 있는데, 생각보다 재미있다. 가끔 심심할 때 하면 좋다.
댓글남기기