2. vim
특정 행으로 이동

내용 수정

내용 삭제

명령 취소

편집

- 이름을 만들어서 사용
- 복사를 할 때
버퍼이름+yy를 사용하면 현재 행의 내용을 버퍼이름으로 저장
- 붙여넣을 때는
버퍼이름+p를 이용
내용 검색

- 검색은 명령어 입력 줄인 마지막 행으로 이동해서 입력
- 명령어가 아닌
/이나 ?를 눌러서 검색할 키워드를 입력
치환

- 대소문자 가리지 않고 바꾸기 수행(검색어 뒤에 /c 를 붙여도 됨)
- 대문자를 소문자로 변경할 때
- 소문자를 대문자로 변경할 때
파일 읽어오기

Shell 명령 수행

기타 명령

vi의 환경설정 방법
- 사용자 홈 디렉터리에 .exrc 파일에 설정 내용을 작성
- 환경 변수 EXINIT 에 지정
- vi의 마지막 행 모드에서 명령으로 설정
환경 설정 옵션

:set ai (autoindeant)
:set si
- 코딩 할때 if, for 같은 것을 입력 하고 다음 라인으로 이동시 자동으로 들여쓰기
:set paste
- set ai, set si 같은 옵션을 사용할 경우 붙여 넣기를 하면 계단 현상이 발생함으로 붙여넣기를 사용할 경우에 이 옵션을 켜주면 계단 현상을 방지할 수 있음
:set ts=4 (tabstop)
- [tab] 키를 입력 하였을때 이동하는 크기를 조정 합니다.
:set sw=4 (shiftwidth)
- set si 했을 경우 들여쓰기 하는 깊이를 설정
:set et (expandtab)
- [tab] 키를 입력 하였을 때 tab에 해당하는 space 만큼 이동
:set encoding=cp949 or utf8
- 작업하는 컴퓨터 또는 개발 언어에서 기본 인코딩 타입을 설정
:set fenc=cp949 or utf8
- 다른 인코딩으로 저장 하고 싶을때 명령을 내리고 저장하면 해당 인코딩으로 저장
:set t_ti= t_te=
- 터미널 환경에서 vi를 종료 할 때 편집 하던 화면이 그대로 남도록 하는 것으로 BSD에서는 기본값인데 Linux 에서는 화면이 지워짐
:set ruler
- 우측 하단에 라인 및 컬럼 위치 표시및 전체 문서의 위치를 %로 표시
:set ff=unix (dos, mac)
:set key=<password>, set key=
:set ic (ignorecase)
:set wam
:set sm (showmatch)
:set noai
vi의 환경 설정
adam@help:~$ EXINIT='set nu'
adam@help:~$ export EXINIT
nano
- 명령줄에서 작업할 때 텍스트 파일을 생성하거나 편집해야 하는 경우가 많은데 가장 강력하고 인기 있는 명령줄 편집자는 Vim과 Emacs
- GNU nano는 유닉스 및 리눅스의 메뉴 기반의 명령 줄 텍스트 편집기
- 구문 강조 표시, 다중 버퍼, 검색 및 정규식 지원으로 대체, 맞춤법 검사, UTF-8 인코딩 등과 같은 일반 텍스트 편집기에서 기대할 수 있는 모든 기본 기능이 포함되어 있음
- 나노 텍스트 편집기는 macOS 및 대부분의 Linux 배포판에 미리 설치되어 있음
3. Shell
사용자가 입력한 명령을 해석해 커널로 전달하거나 커널의 처리 결과를 사용자에게 전달하는 역할을 수행
기능
- 명령어 해석기
- 사용자가 입력한 명령이나 파일에서 읽어 들인 명령을 해석하고 적절한
프로그램을 찾아서 실행
- 프로그래밍
- 사용자 환경 설정
- 사용자 환경을 설정할 수 있도록 초기화 파일 기능을 제공
- 초기화 파일에는 명령을 찾아오는 경로를 설정하거나 파일과 디렉터리를 새로 생성할 때 적용하는 기본 권한을 설정하거나 다양한 환경 변수 등을 설정할 수 있음
- 사용자가 로그인할 때 이 초기화 파일이 실행됨.
종류
- 본쉘(sh)
- C쉘(csh)
- 2BSD 유닉스에서 발표
- 콘쉘(ksh)AT&T 에서 개발해서 SVR4 유닉스에서 발표
- bsh
- 본 쉘과 호환성을 유지하고 C쉘과 콘쉘의 편리한 기능 모두 포함
- 리눅스이 기본 쉘로 제공
- tsch
- zsh
- 최근에 개발된 쉘로 bash와 tsch의 기능에 독자적인 기능을 추가
- 다양한 기능을 제공
로그인 쉘, 서브 쉘

- login shell
- sub shell
- 사용자가 프롬프트에서 다른 쉘을 실행할 수 있는데 이 쉘이 sub shell
- 종료하는 명령은
CTRL + d or exit
- sub shell이 종료되면 이전 쉘 환경으로 돌아가지만 로그인 쉘을 종료하면 터미널이 종료되거나 원격접속이 해제됨.
bash shell
- 우분투 기본 제공 쉘
- 특징
- alias (명령 단축 가능)
- history
- 연산
- Job Control
- 자동 이름 완성
- 프롬프트 제어
- 명령 편집
지원하는 Shell 확인
cat /etc/shells
Shell 변경
-
shell 확인: 특정 사용자의 정보를 찾아서 확인
grep developowl /etc/passwd
developowl:x:1000:1000:developowl:/home/developowl:/bin/bash
- 가장 앞의 정보가 로그인 ID이고 가장 마지막에 나온 /bin/bash 가 사용자의 기본 Shell
- 사용자가 로그인하면 자동으로 실행되는 기본 Shell → Login Shell
-
C shell 설치
sudo apt-get install csh
cat /etc/shells
[shell name] -s sh [username]
- 절대경로
- 상대경로
- 현재 위치로부터의 경로(
./는 현재 디렉토리를 나타내는 것인데 생략해도 되고, ../는 상위 디렉토리를 의미
Shell 내장 명령
- 쉘은 자체적으로 내장 명령을 가지고 있는데 일반적인 리눅스 명령들이 /bin이나 /usr/bin 디렉터리에 별도의 실행 파일로 있는 것과 달리 쉘 명령은 별도의 실행 파일이 없이 쉘 안에 내장되어 있음.
- 쉘 내장 명령은 cd
출력 명령
- echo
echo [-n] [문자열 또는 변수]
- printf
특수 문자
-
? 와 [ ]
-
하나의 문자를 의미

- ?
- [ ]
- 대괄호 안의 문자 하나와 매칭
- 소문자: a-z
- 대문자: A-Z
- ls -l tmp[1 3 5].txt
- tmp1.txt
- tmp2.txt
- tmp3.txt
- ls [A-Za-z][0-9]
- 영문으로 시작하고 두번째 글자는 숫자
- 한글은 [가-힣]
-
~
-
-
-
`(백틱)
- 문자열에서 명령을 수행해서 명령의 결과로 대체
- echo “Today is
date" -> date 라는 명령을 수행해서 출력
-
; - ⭐️
- 여러 개의 명령을 순차적으로 실행할 때 사용하는데, 앞의 명령어가 실패해도 다음 명령어를 수행
- date , ls , pws 명령을 순차적으로 전부 수행
-
&& - ⭐️
-
| - ⭐️
- 앞 쪽 명령의 실행 결과를 뒤에 전달(Pipe)
- 앞의 명령이 출력일 때 그 안에서 검색을 하는 경우 많이 사용하고, 앞의 내용을 출력할 때 내용이 너무 많은 경우 more 같은 명령으로 페이지 단위로 출력되도록 할 때 많이 사용
ls -al / | more
-
\(역슬래시)
-
‘ ‘ 와 “ “
‘ ‘ 안에 명령어를 기재하면 모든 특수문자의 기능 무력화
“ ” 안에 명령어를 기재하면 $, ₩(), ${ }, { } 는 원래대로 처리
표준 입출력 장치

- 0 - stdin - 표준 입력(기본: 키보드)
- 1 - stdout - 표준 출력(기본: 모니터)
- 2 - stderr - 표준 에러(기본: 모니터)
출력 redirection - 출력 방향을 변경하는 것
에러 redirection
2>
명령 2> 출력 경로 를 이용하면 에러가 발생했을 때 에러 내용을 리다이렉션 함
오류 메시지 버리기
표준 출력과 에러를 하나의 파일에 redirection
입력 redirection
- 표준 입력을 바꾸는 기능
명령 0< 경로
명령 < 경로
- 매개변수가 없는 명령어에 매개변수를 설정할 수 있음
변수
- 종류
- 쉘 변수: 현재 쉘(터미널)에서만 사용 가능한 변수
- 환경 변수: 시스템 전체에 적용되는 변수
- 변수 확인
echo $변수
env: 환경 변수 전부 출력
set: 모든 변수와 함수를 출력
- 변수 수정(공백이 있으면 안 됨!!!)
- 쉘 변수 생성 및 수정:
변수명=값
- 환경 변수 생성 및 수정:
export 변수명=값
- 환경 변수를 로컬 변수로 수정:
export -n 변수명
- 변수 삭제
프롬프트 설정
PATH
-
리눅스에서는 프로그램을 설치할 때 압축 파일을 다운로드 받아서 압축을 해제하는 것만으로 하는 경우가 있음
-
이때 압축이 해제된 디렉토리의 실행 파일을 명령어 만으로 실행하고자 하는 경우 이를 구현하는 방법은
- (잘 사용하지 않음) 전체 경로를 alias 로 만들어서 사용
- 전체 경로를 PATH에 추가
- 추가된 디렉토리에 실행하고자 하는 명령어나 파일을 복사함
-
홈 디렉토리 안의 bin 이라는 디렉토리를 PATH에 추가
PATH="$PATH:~/bin"
- 환경변수를 편집할 때는 번거롭더라도 다른 변수에 복사를 해두고 편집을 하는 것이 좋음
LANG
- 로케일 정보를 저장하고 있는 환경변수
- 현재 사용 중인 로케일 확인
echo $LANG
- 시스템에서 지원하는 로케일 확인
locale -a
기타 환경 변수
HISTFILE: 커맨드 라인 이력을 저장할 파일 이름으로 기본값은 ~/bash_history
HISTFILESIZE: 파일에 저장할 커맨드 라인 이력의 최대 개수
HISTSIZE: 메모리에 저장할 커맨드 라인 이력의 최대 개수
HOME: 홈 디렉터리
SHELL: 로그인 쉘의 경로
PWD: 현재 작업 디렉터리
환경 설정 파일
- 시스템을 사용하는 사용자의 환경을 설정하는 파일로 로그인할 때마다 무조건 실행되는 파일
시스템 환경 설정 파일

사용자 환경 설정 파일
- 각 사용자의 홈 디렉토리에 숨김 파일로 존재하고 사용자가 내용을 수정하고 관리하는데 로그인을 하면 시스템 환경 설정 파일이 실행돼서 시스템 공통 환경을 만들고 이후 사용자 환경 설정 파일을 순서대로 실행하여 사용자별 환경을 설정

-
우분투에서 .profile 은 .bashrc 파일이 있으면 실행시키고 환경 변수 PATH 에 기본 경로를 설정
-
.bash_logout 파일에는 콘솔 화면을 클리어 하는 코드가 설정되어 있음
-
로그아웃을 하고 로그인을 다시 해야 적용이 되는데 . 이나 source 명령을 이용해서 현재 상태에서 적용 가능
-
별명 관련 환경 설정 파일 만들기 및 적용
bash 옵션
-
set 명령
- -o 나 +o를 지정하여 옵션 기능을 활성화하거나 비활성화 할 수 있음
- -o를 지정하면 기능이 활성화되고 +o를 지정하면 비활성
- ignoreeof(쉘을 빠져나가는 기능인 eof를 무시하는 기능) 활성화: CTRL + D를 눌러도 쉘을 빠져나가지 않음
-
set -o noclobber
4. File System
1) 디렉토리와 파일
- 리눅스는 유닉스의 많은 부분을 그대로 사용
- 시스템과 관련된 정보와 하드웨어 같은 장치를 모두 파일로 관리
- 리눅스에서는 언제나 시스탬 전체에 하나의 트리만 가짐(물리적인 디스크가 2개 이상이어도)
- windows 는 HDD C: 와 D: 간의 결합 혹은 공유가 안 된다. 늘릴 수가 없음.(파일 저장 경로의 시작이 다르기 때문에)
- 클라우드 환경에서는 가급적이면 windows는 사용하지 않는다. → 확장성이 안 좋기 때문이다.
파일의 종류
일반 파일
- 일반적인 파일
문서 파일
바이너리 파일
- 바이트 코드 그대로 해석 - 실행(바이너리) 파일
디렉터리 파일
- 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보를 소유
- 파일에 액세스 하기 위한 정보를 저장
링크 파일
- 시스템 사용자에게 편리성을 제공하기 위한 파일
하드 링크
- 원본 파일을 복사해서 동일한 내용의 다른 사본 파일을 만드는 것
- 원본 파일과 링크 파일이 서로 다른 파일로 취급되기 때문에 하나가 삭제되어도 나머지 하나는 그대로 남아 있음
- 하나의 파일을 수정하면 다른 하나도 수정됨
- 백업의 용도로 가장 좋음
- i-node(파일에 대한 정보를 가짐)를 공유하기 때문에
심볼릭 링크(소프트 링크)
- 바로가기 기능처럼 원본 파일의 위치를 기억해서 이 파일을 실행하면 원본 파일을 찾아서 실행하도록 만들어진 링크 파일
- 원본 파일이 삭제되면 동작하지 않음
장치(특수) 파일
- 리눅스 시스템에 부착된 장치들을 관리하기 위한 특수 파일
- /dev 디렉토리 하단에 위치
파일의 종류 확인