Linux Command Line 5

4 분 소요

환경 변수

쉘은 환경에 두 가지 기본적인 형식을 저장한다. 하나는 환경 변수, 다른 하나는 쉘 변수이다. 쉘 변수는 bash에 의해 저장된 작은 데이터고, 환경 변수는 기본적으로 그 외의 모든 것이다.

시험 삼아 printenv | less 해본다.

printenv

set | less 을 하면 쉘 변수와 환경 변수를 모두 볼 수 있다. 그 외에 정의된 쉘 함수가 있으면 그것도 볼 수 있다.

set

printenv 나 set은 alias를 보여주지 않기 때문에 이 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 이라고 나와있다.

bash_profile

**참고: 커맨드라인에 명령어를 입력하면 쉘은 명령어를 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으로 실행 된다.

vi

텍스트 입력 모드

입력모드로 들어가려면 I 키를 누르면 된다. 그러면 화면 하단에 -- INSERT -- 라고 나올 것이다.

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 명령으로 줄을 합칠 수 있다.

before

위 상황에서 LINE 3에 커서를 두고 J를 실행 해보면 아래 결과 처럼 나온다.

after

검색

/ 명령을 입력하면 아래 /가 나타난다. 거기에 검색하려는 글자를 입력하고 엔터키를 누르면 해당 문자가 있는 곳으로 커서가 이동한다. 정규표현식으로도 검색이 가능하다!

치환

찾아 바꾸기를 할 수 있다.

아까 그 파일에서 :%s/LINE/line/g 명령을 실행 시키면 다음과 같이 결과가 나온다.

change

명령을 뜯어보면

  • : - ex 명령어 실행
  • % - 작업 수행할 줄 범위 (%는 첫번째 줄부터 마지막 줄까지, 아니면 범위로 1,5 or 1, 이런식으로 지정할 수 있다.)
  • s - 작업 지정 (찾아 바꾸기)
  • /LINE/line - LINE을 찾아서 line으로
  • g - 파일 전체

:%s/LINE/line/gc 처럼 명령어 마지막에 c를 붙이면 사용자 확인 메시지를 보여준다.

다중 파일 편집

vi file1 file2 file3 와 같은 식으로 할 수 있다.

파일 간 전환은 :n 으로 다음 파일로 전환, :N으로 이전 파일로 전환한다.

:buffers 로 열려 있는 파일 목록을 볼 수 있다.

buffers

파일 내용 복사

test.txt에서 test2.txt로 파일 내용을 복사 하고 싶다면 test.txt에서 yy로 라인을 복사하고, :buffer 2로 두번째 파일로 이동해서 p로 붙여넣는다.

파일 전체를 다른 파일에 넣고 싶다면..

vi test3.txt

test3

원하는 위치(나는 5번째 줄)로 이동해서 :r test2.txt를 실행한다.

test3

이렇게 실행이 된다!

저장하기

저장은 알고 있는 것처럼 :w :wq로 저장 종료를 할 수 있다. 아니면 ZZ로 저장후 종료를 할 수 있다!

이름을 바꾸고 싶으면 :w [저장할 이름]으로 저장할 수 있다.


vim으로 게임을 할 수 있는 사이트가 있는데, 생각보다 재미있다. 가끔 심심할 때 하면 좋다.

vim-adventures

태그:

카테고리:

업데이트:

댓글남기기