본문 바로가기
리눅스

리눅스 수업 8차시

by IT매니절 2024. 3. 17.

 

vim 단축키 이어서 수업

 

f
- 현재 커서가 위치한 라인 한 줄에서 오른쪽으로 검색 (프로그래밍에 자주 쓰임)
- ex fa => a를 찾음
- 검색후 , 왼쪽 ; 오른쪽 이동

- F는 반대로 왼쪽으로 검색( ,는 오른쪽 ;는 왼쪽)

- 하이라이팅은 유지되지 않음

 

*

- 전체 문서에서 단어를 찾을 때 사용

- 단어 앞에서 * 사용시, 하이라이팅 되면서 찾음

- 이전N, 다음n

 

문자열 치환 (ex 모드에서 사용)

:% 전체문서
:1,5 1~5번 라인까지
:%s/old/new/g : 전체문서에서 old 문자열을 모두 new로 치환
:%s/old/new : 처음 만나는 old -> new로 치환
:s/old/new : 현재 라인의 첫 old -> new로 치환
:-,+3s/old/new/g : 현재 커서기준 위1줄 아래3줄 범위내 치환

~/gc라고 쓰면 치환 여부를 물어봄
(TERM-RE(으)로 바꿈 (y/n/a/q/l/^E/^Y)? a는 모두 네, q는 치환중지, l은 하나 치환후 종료, ^E는 화면이동(아래), ^Y는 화면이동(위))

 

멀티창

F1 도움말 help.txt 열림
:new filename (새 창으로 열기/가로로(위쪽에 새창))                                          
:vs filename (새 창으로 열기/세로로(왼쪽에 새창))

^ww (Ctrl+ww) : 다음 창으로 이동

^ww (Ctrl+ww) : 다음 창으로 이동
^wt (Ctrl+wt) : 최상단 창으로 이동

^w_ (Ctrl+w_) : 현재 커서가 위치한 창을 활성화(크게)(가로창)

Ctrl + w + | : 최대활성화(세로창)

^w= (Ctrl+w=) : 모든 창 크기를 균일하게
:qa or :qa! 전부 닫기

:q or :q! 현재 창 닫기

Ctrl + w +( H왼쪽 K위 J아래 L오른쪽) 창 이동

 

vim 옵션 : ex 모드에서 설정한다
전역 : /etc/vimrc (root만 가능)
개인사용자 : $HOME/.vimrc

 

:set all 모든 옵션 표시
:set nu 라인 번호 표시

:set ruler 현재 커서 위치 표시


값이 여러 개 있는 경우 표기 
- scroll=15
토클(on/off)로 있는 경우
- number : On 또는 number : Off

 

vim을 IDE 환경으로 만들기

단축키 설정
<cr> 엔터키
% 현재문서
%:t 현재문서(상대경로)
%< 현재문서에서 확장자를 버린 이름
%:t:r 현재문서에서 확장자를 버린 이름(상대경로)
F1 도움말
F2 쉘스크립트 실행
F3 파이썬 실행
F4 C 실행
F5 C++ 실행
F6 JAVA 실행
F7 Rust 실행

 

 

(vim 재설치 : yum -y reinstall vim-commom )

더보기

" vimrc 기본설정파일

" (vimrc 설정하다가 기존 설정을 지워버리는 바람에, 꼬이게 되어 재설치하고 난리난 관계로...

백업느낌으로 포스팅...)

" vimrc에서 "는 주석으로 인식된다

 

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
   set fileencodings=ucs-bom,utf-8,latin1
endif

set nocompatible        " Use Vim defaults (much better!)
set bs=indent,eol,start         " allow backspacing over everything in insert mode
"set ai                 " always set autoindenting on
"set backup             " keep a backup file
set viminfo='20,\"50    " read/write a .viminfo file, don't store more
                        " than 50 lines of registers
set history=50          " keep 50 lines of command line history
set ruler               " show the cursor position all the time

" Only do this part when compiled with support for autocommands
if has("autocmd")
  augroup redhat
  autocmd!
  " In text files, always limit the width of text to 78 characters
  " autocmd BufRead *.txt set tw=78
  " When editing a file, always jump to the last cursor position
  autocmd BufReadPost *
  \ if line("'\"") > 0 && line ("'\"") <= line("$") |
  \   exe "normal! g'\"" |
  \ endif
  " don't write swapfile on most commonly used directories for NFS mounts or USB sticks
  autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
  " start with spec file template
  autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
  augroup END
endif

if has("cscope") && filereadable("/usr/bin/cscope")
   set csprg=/usr/bin/cscope
   set csto=0
   set cst
   set nocsverb
   " add any database in current directory
   if filereadable("cscope.out")
      cs add $PWD/cscope.out
   " else add database pointed to by environment
   elseif $CSCOPE_DB != ""
      cs add $CSCOPE_DB
   endif
   set csverb
endif

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

filetype plugin on

if &term=="xterm"
     set t_Co=8
     set t_Sb=m
     set t_Sf=m
endif

" Don't wake up system with blinking cursor:
" http://www.linuxpowertop.org/known.php
let &guicursor = &guicursor . ",a:blinkon0"

 

 

 

 

++ 추가설정

set nu         " 라인 번호
set bg=dark    " 백그라운드
set ai         " 자동 들여쓰기
set ci         " C언어 자동 들여쓰기
set sw=4       " 들여쓰기, 내어쓰기 4칸
set ts=4       " 탭크기 4칸
set expandtab  " 탭을 공백으로 변경
set cursorline " 커서라인 출력
set fileencodings=utf8,euckr  " 언어셋 인식

 

" 아래는 단축키로 각 쉘 스크립트, 파이썬, c언어, c++, java, rust 실행 키 설정이다

map <F2> :w<cr>:!clear;chmod 755 % && ./%:t<cr>
map <F3> :w<cr>:!clear;python3 %<cr>
map <F4> :w<cr>:!clear;gcc -Wall %:t -o %:t:r && ./%:t:r<cr>
map <F5> :w<cr>:!clear;g++ -Wall %:t -o ./%:t:r<cr>:!./%:t:r<cr>
map <F6> :w<cr>:!clear;javac %:t && java %:t:r<cr>
map <F7> :w<cr>:!clear;rustc % && ./%:t:r<cr>

 

gcc c++과 java 설치
=> yum -y install gcc gcc-c++ java-1.8.0-openjdk java-1.8.0-openjdk-devel

파이썬 3.8 설치 (centos7은 2버전이므로)
=> yum -y install centos-release-scl
yum -y install rh-python38
scl enable rh-python38 bash            <- 새로 로그인 할 때마다 리로드 해줘야 함 (불편... )

 

rust 설치
curl https://sh.rustup.rs -sSf | sh 
source "$HOME/.cargo/env" (바로 사용하기 위해 리로드)

 

$ vi
=> vi 기본 설명창이 뜨는데 이 때 :20vs. 입력하면 멀티창으로 열 수 있음

 

쉘 스크립트 실행
1. chmod 755 파일명; ./파일명
2. /bin/sh ./파일명

파이썬 실행
1. ptyhon 파일명
2. chmod 755 파일명; ./파일명

c언어와 c++은 gcc로 컴파일 한 후 실행한다

java 실행
javac 소스파일; java ./실행파일

(ex javac ./HH.java; java HH)

rust 실행
rustc 소스파일; ./실행파일

 

리눅스의 패키지 설치
1. rpm(Redhat Package Manager) 패키지 파일로 설치/삭제
- 1) 명령어로 설치
- 2) yum이나 dnf로 설치
2. (소스) 여러 파일을 압축파일로 묶어서 배포하는 것을 가지고 설치/삭제

패키지란
여러 명령어와 문서들이 하나의 패키지로 묶여진 파일
레드햇사에서 만든 패키징 방식

rpm의 구조 : 패키지명-버전-릴리즈번호.OS.아키텍처.rpm

~.tar.gz : tar + gzip (소스, 컴파일 (압축))
~.tar.bz2 : tar + bzip2 (소스, 컴파일 (압축))
~.tar.xz : tar + xz (소스, 컴파일 (압축))

~.src.rpm : 소스파일
~.x86_64.rpm : 컴파일 된 64bit 파일
yum, dnf : 레드햇 계열에서 네트워크를 통한 패키지 설치
apt-get, apt : 데비안 계열에서 네트워크를 통한 패키지 설치

 

rpm

장점 : 설치가 쉽다
단점 : 패키지 의존성이 존재하면 설치가 어려움
(의존성 : 패키지끼리 서로 연관된 형태. A패키지를 실행하려면 B패키지가 필요하는 등.)

 

yum
이미 컴파일 되어있는 패키지를 인터넷으로 다운로드 받아서 설치

 

(짤막지식 : 리눅스민트가 우분투보다 가볍고 빠르다 !

저사양 노트북에 리눅스를 설치한다면 민트 추천)

 

rpm 명령어 옵션
-i : 설치
-e : 삭제
-U : 업그레이드
-q : 검색
-a : 모든 패키지 검색

-f [파일]: [파일]을 포함하는 패키지 검색

 

gzip 압축 명령어 (여러 파일을 하나로 묶을 수 없다)
옵션
-d (--decompress) 압축해제  또는 gunzip 으로도 압축해제 가능

~.gz 로 변경됨 (원본 파일은 없어진다)

 

bzip2 압축 명령어 (gzip보다 압축률이 조금 더 좋음. 여러 파일을 하나로 묶을 수 없다)

옵션
-d (--decompress) 압축해제 또는 bunzip2 으로도 압축해제 가능

~.bz2

(centos7에는 없어서 yum -y install bzip2          설치해야함)

 

xz 압축 명령어

~.xz

-d 압축해제  또는 unxz 으로도 압축해제 가능

 

 

압축해제 실습

아파치 웹서버
https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2
톰캣 (WAS 왓스)
https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
커널
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.xz

* https로 접근하려면 wget 필요
( 설치 : # yum -y install wget )

 

파일 다운로드
# wget --no-check-certificate https://dlcdn.apache.org/httpd/httpd-2.4.58.tar.bz2
# wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
# wget --no-check-certificate https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.xz

 

 

tar (=tarball)
하나의 아카이브 파일로 묶어주는 역할만 하고 압축하지 않는다.
파일 압축시 원본파일은 그대로 남는다
퍼미션, 소유권 등의 정보를 유지함

 

ex
tar -cf test.tar dir1 dir2 file
=> 명령어 옵션 압축파일명(압축방법에 따른 파일확장자명 주의) 묶을파일들

 

tar -xf test.tar
=> 압축하지 않은 파일 풀기

 

tar -xfz test.tar.gz

tar -xfj test.tar.bz2

tar -xfJ test.tar.xz
=> 압축한 파일 풀기

 

압축하지 않을시 ~.tar 형식으로 파일명을 짓는다

 

옵션
x : 파일 추출
z : gzip으로 압축 (선택시 ~.tar.gz)
j : bzip2로 압축 (선택시 ~.tar.bz2)
J : xz으로 압축  (선택시 ~.tar.xz)
c : 새 아카이브 생성
f : 읽거나 기록할 tar 파일 정의 

 

 

 

과제

리눅스 민트 설치해보기

'리눅스' 카테고리의 다른 글

리눅스 수업 2 2차시  (0) 2024.04.07
리눅스 수업 2 1차시  (0) 2024.04.06
리눅스 수업 7차시  (0) 2024.03.16
리눅스 수업 6차시 (셀프실습)  (0) 2024.03.14
리눅스 수업 5차시  (0) 2024.03.09