1. vi editor로 해당 파일을 열고
  2. 라인 번호를 입력 후 (혹시 입력모드로 들어와 있다면 ESC 키 입력 후 라인 번호 입력)
  3. SHIFT+G 입력
  4. 입력한 라인 번호로 이동완료


- Reference

http://tosnam.tumblr.com/post/33149534054/linuxvi-editor%EC%97%90%EC%84%9C-%ED%8A%B9%EC%A0%95-%EB%9D%BC%EC%9D%B8-%EB%B2%88%ED%98%B8%EB%A1%9C-%EC%9D%B4%EB%8F%99%ED%95%98%EA%B8%B0






[vim] file open/save/close command


- 파일 열기

파일 불러 오기           :e 파일명        (Tab키로 자동 완성 사용 가능)
새 빈 파일 만들기        :new             (Ctrl+wn)
새 이름으로 파일 작성    :e 새파일이름


- 파일 저장

저장                     :w
새 이름으로 저장         :w 파일명
다른 파일에 덧붙여 저장  :w >> 파일명


- 파일 닫기

저장 후 닫기             :wq
저장하지 않고 닫기       :q!


- Reference

http://mwultong.blogspot.com/2006/06/vim-gvim.html

- 명령어

:sp 는 상하로 분할

:vs 는 좌우로 분할 


- 화면 나누기

<수직 창 분할>

:sp {파일경로} : 상하로 화면 분할

:10sp {파일경로} : 새로 만드는 수직 창을 10칸짜리로

:new filenam e


<파일 브라우징>

:20vs ./


<수평 창 분할>

:vsplit

:vs filename e

:20vs


- 화면 이동 및 정리, 닫기

<커서 이동>

Ctrl + w, 방향키 - 방향키 입력대로 커서 이동

Ctrl + w, w - 다음으로 커서 이동

Ctrl + w, W - 이전으로 커서 이동

Ctrl + w, [H J K L] - 커서 이동


<화면 닫기>

:q (현재 화면 닫기)

:qa (모두 닫기)

Ctrl + w, q (현재 화면 닫기)

Ctrl + W, o (현재 화면만 남기고 모두 닫기)


<화면 위치 바꾸기>

Ctrl + w, r - 순환적으로 위치 바꾸기

Ctrl + W, r - 다음 화면과 위치 바꾸기


<창 크기 변경>

Ctrl + w, = (창 크기 균등하게)

Ctrl + w, _ (현재 창의 높이를 최대로)

Ctrl + w, | (현재 창의 너비를 최대로)

Ctrl + w, [n] + (창의 높이를 n 만큼 증가)

:resize +n

Ctrl + w, [n] - (창의 높이를 n 만큼 감소)

:resize -n

z[n] (현재 창의 높이를 n으로 설정)

Ctrl + w, [n] > (현재 창의 너비를 n만큼 증가)

Ctrl + w, [n] < (현재 창의 너비를 n만큼 감소)


- Reference

http://ngee.tistory.com/423

http://noon.tistory.com/1353



$ cat -n ~/.vimrc

syntax on
filetype plugin indent on

let python_version_2 = 1
let python_highlight_all = 1

set tabstop=4
set expandtab
set shiftwidth=4
set softtabstop=4
set bg=dark
set nu
set ruler

au FileType py set autoindent
au FileType py set smartindent

au FileType py set textwidth=79 


[python 개발도구 vim, 그 설정 .vimrc] http://idchowto.com/?p=13500

1. 위치 매개변수와 명령줄 매개변수


    1) 위치 매개변수


        -> 스크립트 이름 다음에 공백 문자로 구분된 각 단어를 매개변수라 부른다


        -> 명령줄 매개변수는 스크립트 내에서 위치 매개변수로 참고할 수 있으며, 

             $1은 첫번째, $2는 두번째 매개변수를 의미한다


        -> $9 이후 매개변수들은 중괄호를 이용하여 숫자부분을 ${10}처럼 묶어주어야 한다


        -> 변수 $#은 전체 위치 매개변수의 개수를 알아보는데, 

            변수 $*는 전체 위치 매개변수의 내용을 알아보는데 사용한다


        -> 위치 매개변수는 set 명령을 써서 설정(set) 또는 재설정(reset)할 수 있으며, 

             set명령을 사용하면 이전 설정값은 지워진다


        -> 위치 매개변수


         $0           : 현재 쉘 스크립트의 이름                                  

         $#           : 위치 매개변수의 총 개수를 평가한다                        

         $*           : 모든 위치 매개변수를 평가한다                             

         $@           : 큰 따옴표를 사용하였을 때를 제외하고는 $*와 동일한 의미      

         "$*"         : "$1 $2 $3"으로 평가한다                                 

         "$@"         : "$1" "$2" "$3"으로 평가한다                             

         $1 ... ${10} : 사용가능한 위치 매개변수  


출처: http://linuxism.tistory.com/57 [linuxism]



'Programming > Linux Coding' 카테고리의 다른 글

[vim] python 개발도구 설정 .vimrc  (0) 2017.07.25
[Bash] 쉘 스크립트 - 위치 매개변수  (0) 2017.07.24
rsync 명령어  (0) 2017.07.21
grep 명령어  (0) 2017.07.21
bash 쉘을 이용한 스크립트 만들기 #6  (0) 2017.07.21

Rsync

Rsync(Remoe Sync)는 원격에 있는 파일과 디렉토리를 복사하고 동기화 하기 위해서 사용하는 툴이며 동시에 네트워크 프로토콜이다. 리눅스와 유닉스에서는 백업용도로 (아마도)가장 널리 사용하는 툴일 것이다(윈도우와 애플에도 포팅됐다). Rsync는 CLI툴로, 커맨드 라인의 옵션들을 이용해서 배치 프로그램을 개발하기 쉬다는 장점이 있다. 이 스크립트를 cron 등에 올리는 걸로 간단하게 백업 혹은 미러(mirror) 시스템을 구축할 수 있다.


https://www.joinc.co.kr/w/Site/Tip/Rsync

bash 쉘을 이용한 스크립트 만들기 #6


0. 개요 

앞서한 강좌에서 bash script를 하기위한 문법적인 부분중 피룡한 부분은 다되었다고 해도 크게 무리는 아니다 
하지만 bash script의 경우 문법만가지고 할수 있는 부분은 극히 적다
여러가지 명령어들과 그에 따른 조합을 이용해서 이루어지고 이부분에 필요에 따라 분기 반복 문자열 파싱 패턴 메치등의 여러가지의 프로그램적인 요소와 실제 시스템에서 사용되는 명령어의 실행으로 이루어지기 때문이다 
이번 강좌에서는 bash script를 사용하기 위해 유용한 명령어들에 대해 알아보자 


1. 디버깅하기 

"#!/bin/bash" 를 처음에  "#!/bin/bash -x" 로 해주면 된다 .


 -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf' ']'
+++ line='complete -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf'
+++ line='complete -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf'
+++ line=' acroread gpdf xpdf'
+++ list=("${list[@]}" $line)
+++ read line
+++ '[' 'complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf' '!=' 'complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf' ']'
+++ line='complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf'
+++ line='complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf'
+++ line=' kpdf'
+++ list=("${list[@]}" $line)
+++ read line


위 와 같이 각 실행 부분에 대해 알려준다 



2. 문자열 치환 

sed  
패턴에 따른 문자열 치환 
# sed -e "s/[old_patten]/[new_patten]/g" /path/to/filename

공 백 라인 삭제
# sed -e "/^$/d"  /path/to/filename


3. 전형화된 파일에서 필드 구분 

ex) 파일내용   필드 구분자 : \:   row구분자 : \n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh

# awk -F : '{print $1}' /etc/passwd
# cat /etc/passwd | awk -F : '{print $1}'
두가지다 아래와 같이 출력된다 
root
daemon
bin
sys
sync
games
man
lp
mail

# cut -d :  -f 1 /etc/passwd
# cat /etc/passwd | cut -d :  -f 1
두가지 다 아래와 같이 출력된다 
root
daemon
bin
sys
sync
games
man
lp
mail


4. 검색 및 탐색
파일명으로  검색할경우 
find /path/to/ -type f -name [patten]

파 일사이즈로  검색할경우 
find /path/to/ -type f -size +1024000

파일생성일자로 검색 
find /path/to/ -type f -ctime +24

파일내용으로 검색할경우 
grep [patten] /path/to/filename

특정디렉토리 아래로 모든파일을  재귀적으로 내용을 검색할때 
grep [patten] /path/to/ -R


5. 파일 길이 알아보기 
각 라인 마다 번호 붙이기 
     공백 라인은 제외하고 번호붙이기
     nl /path/to/filename 
     1         #!/bin/bash
       
     2         for i  in $( ls ) ; do 
     3          echo   "$i\n"
     4         done

     공백라인 상관없이 번호붙이기
     cat -n  /path/to/filename 
     1         #!/bin/bash
     2    
     3         for i  in $( ls ) ; do 
     4          echo   "$i\n"
     5         done

     파일길이에 대한 자센 정보 
     wc /path/to/filename 
     5 12 74 /path/to/filename
     [라인수] [단어수] [문자 수] [파일]


6 .  날자 시간 
현재 날짜 알아보기 
# date
2010. 05. 16. (일) 18:52:31 KST

포멧을 지정할경우 
# date +"%Y%m%d %H%M%S"
20100516 185341

특정 프로그램의 실생기산구하기 
# time ls -al

....
real    0m0.040s
user    0m0.008s
sys    0m0.012s


7. 마무리 

bash script 를 사용할때  자주 사용되는 몇가지 명령어들에 대해  알아보았다 여기서 알아번것은 기본 사용법이며  보다 디테일하게 사용하기 위해서는 man page 등을 참고하여 사용하여야 한다 
다음번에는 위의 명령어들 외에 다른 명령어들에 대해 알아보도록 하겠다 .


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1743

'Programming > Linux Coding' 카테고리의 다른 글

rsync 명령어  (0) 2017.07.21
grep 명령어  (0) 2017.07.21
bash 쉘을 이용한 스크립트 만들기 #5  (0) 2017.07.21
bash 쉘을 이용한 스크립트 만들기 #4  (0) 2017.07.21
bash 쉘을 이용한 스크립트 만들기 #3  (0) 2017.07.21
bash 쉘을 이용한 스크립트 만들기 #5


0. 소개 

  앞서 연재 되었던 강좌에서 기본적으로 bash 스크립트를 작성할수 있는 문법들에 대해서는 알아보았다 
하지만 입력 해야하는 갑이 랜덤하거나 임의로 정된 값을 사용해야 할 경우 사용자 인터페이스가  있다면 얼마나 졸을까라는 생각이 들것이다. 

  비록 tui환경이지만 어느정도 값을 입력하고 해당부분에 대한 결과를 받을수 있는 인터페이스를 제고하고 있다. 그리고 이를통하여 대화형 스크립트역시 작성이 가능하다. 
  이부부에 대해 알아보자 


1. select  구문 

select 의 경우 사용자에게 리스트형태의 선택 메뉴를 보여주고 해당 메뉴에 대해 번호를 부여하여 번호의 입력으로 해당메뉴의 실행을 가능하게 해준다. 

#!/bin/bash
options="pstree ps quit"

select tmp in $options ; do

        if [ "$tmp" = "pstree" ] ; then
                pstree
        elif [ "$tmp" = "ps" ] ; then
                ps -ef
        elif [ "$tmp" = "quit" ] ; then
                exit
        else
                echo bad option
        fi

done


=======================

1) pstree
2) ps
3) quit
#? 


2. read 구문

  프롬프트 상에서 사용자에게 임의의 값을 입력 받을때 사용한 

#!/bin/bash

echo "input 0 ~ 9"

read NUMBER

echo $NUMBER

echo "input [0 ~9]  [a-z]"

read NUMBER CHAR

echo $NUMBER $CHAR

==================================

input 0 ~ 9
0
0
input [0 ~9]  [a-z]
0 a
0 a


3. 마무리 

  select 와 read 외에도 dialog box등의 여러가지 유틸 및 명령어들이 있다. 

  하지만 가장 손쉽게 구현할수 있는것은 select와 read 이다. 
  
  이두가지만 가지고도 보다 편하고 직관적인 스크립트의 작성이 가능하다. 


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1734

+ Recent posts