본문으로 바로가기

: 기존에 실행한 명령어 이력을 보여 주거나 실행할때 사용합니다.

아래의 메뉴얼 페이지 그림은 영어를 좋아하는 분 또는

 영어로 봐야 의역으로 인한 이해가 잘못된 부분을 위한 첨부입니다.

목차

     

     

     

    0> 도표

    옵션
    의미
    기타
    -c
    기존 히스토리 리스트 지우기
    1-1번 항목 참조
    -d offset
    offset 해당하는 히스토리 제거
    1-2번 항목 참조
    -a
    히스토리 라인을 히스토리 파일에 추가
    1-3번 항목 참조
    -n
    히스토리파일에서 읽지않은 라인 읽기
    1-4번 항목 참조
    -r
    히스토리 파일을 읽어서 히스토리 리스트에 추가
    1-5번 항목 참조
    -w
    현재 히스토리를 히스토리 파일에 저장
    1-6번 항목 참조
    -p
    히스토리 확장수행하나 히스토리 리스트 미저장
    1-7번 항목 참조
    -s
    히스토리 리스트로 ARGs 추가하나 실행안함.
    1-8번 항목 참조

     

    1> 옵션

    : 옵션 정보 읽기 ( help history)

    1-1> -c 옵션

    : 기존 히스토리 리스트 지우기

    ( clear the history list by deleting all of the entries)

    >> 현재 열린 터미널의 리스트만 지워지고 다시 터미널 열면 기존 history 남아 있습니다.

    새로 창이 열릴 경우 HISTFILE 에서 다시 히스토리 읽어옴. (HISTFILE == ~/.bash_history)

     

    $ history
     1003  type -a times
     ~~~ 중략 ~~~
     1999  nautilus .
     2000  exit
     2001  man history
     2002  history
    
    $ history -c
    $ history
     1004  history

     

    1-2> -d 옵션 (offset)

    : OFFSET 에 해당하는 히스토리 엔트리 제거

    (delete the history entry at offset OFFSET.) 

     

    $ history
     ~~~ 중략 ~~~
     1992  adb shell screencap -p /sdcard/screencap.png
     1993  adb pull /sdcard/screencap.png
     1994  nautilus .
     ~~~ 중략 ~~~
    
    
    >> 1993 offset 제거
    $ history -d 1993
    $ history
     ~~~ 중략 ~~~
     1992  adb shell screencap -p /sdcard/screencap.png
     1993  nautilus .
     1994  history
     ~~~ 중략 ~~~

     

    1-3> -a 옵션

    : 현 터미널의 히스토리 라인을 히스토리 파일에 추가합니다.

    ( append history lines from this session to the history file )

    >> 이옵션 적용여부는 터미널을 새로 열어서 history 명령을 실행해야 확인됩니다.

    기존 터미널 종료시 자동으로 히스토리 파일에 추가가 됩니다.

     

    $ history
     1005  history
     1006  1
     1007  2
     ~~~ 중략 ~~~
     1020  15
     1021  16
     1022  history
    
    ~$ history -a
    
    >> 터미널창을 새로 열기
    $ history | tail -20
     1985  5
     1986  6
     1987  7
     ~~~ 중략 ~~~
     1995  15
     1996  16
     1997  history
     1998  history -a
     1999  history | tail 20
     2000  history | tail -20
     2001  history | tail -25
     2002  history | tail -40
     2003  history | tail -100
     2004  history | tail -20

     

    1-4> -n 옵션

    : 히스토리 파일로 부터 아직 읽지 않은 히스토리 라인 읽기

    ( read all history lines not already read from the history file)

    >> 기존 히스토리 내용 지워질수 있습니다.

     

    >> 현재 터미널의 히스토리 리스트 내용을 히스토리 파일에 추가하기
    $ cat echo_1.txt 
    $ history -a
    
    >> 위 터미널과 다른 터미널에서 기존 히스토리 파일의 내용 다시 읽기
    $ history -n
    
    >> 히스토리 리스트 마지막 10개 읽기
    $ history | tail
     3015  history | grep 11*
     3016  history | grep 11?
     3017  history | grep 1?
     3018  ls
     3019  history
     3020  cd Temp
     3021  ls
     3022  cat echo_1.txt     <---- 다른 터미널에서 사용한 명령어가 들어 있네요.
     3023  history -a
     3024  history | tail

     

    1-5> -r 옵션

    : 히스토리 파일을 읽어서 히스토리 리스트 뒤에 내용을 추가합니다.

    ( read the history file and append the contents to the history list)

     

    >> 히스토리 파일 읽기
    ~$ cat ~/.bash_history
    a
    b
     ~~~ 중략 ~~~
    h
    i
    j
    
    >> 터미널 열기
    $ history
        1  a
        2  b
     ~~~ 중략 ~~~
        9  i
       10  j
       11  history
    
    >> 히스토리 이력 추가하기
    $ A
    $ B
    $ C
    $ D
    $ E
    $ F
    F: command not found
    
    >> 히스토리 읽기
    $ history
        1  a
        2  b
     ~~~ 중략 ~~~
        8  h
        9  i
       10  j
       11  history
       12  A
       13  B
       14  C
       15  D
       16  E
       17  F
       18  history
    
    $ history -r
    $ history 
    $ history
    
      >> 히스토리 파일에서 추가된 내용
        1  a
        2  b
       ~~~ 중략 ~~~
        9  i
       10  j
    
      >> 히스토리 리스트 추가된 내용 
       11  history
       12  A
       13  B
       14  C
       15  D
       16  E
       17  F
       18  history
       19  history -r
    
      >> -r 옵션에 의해 추가된 히스토리 파일 내용
       20  a
       21  b
      ~~~ 중략 ~~~
       28  i
       29  j
    
       30  history

     

    1-6> -w 옵션

    : 현재 히스토리 내용을 히스토리 파일에 쓰기

    >> 현재 히스토리 리스트를 히스토리 파일에 쓰기
    $ history -w
    
    >> 히스토리 파일 체킹
    $ cat ~/.bash_history
    ~~~ 중략 ~~~
    
    >> 현재 히스토리 리스트를  hist1 파일에 쓰기
    $ history -w hist1
    
    >> hist1 파일 체킹
    $ cat hist1
    ~~~ 중략 ~~~

     

    1-7> -p 옵션

    : 히스토리 확장 수행하고 결과를 출력하나 히스토리 리스트에는 저장하지 않습니다.

     

    $ history
        1  a
        2  b
        3  c
       ~~~ 중략 ~~~
       32  echo $HISTSIZE
       33  echo $HISTFILESIZE
       ~~~ 중략 ~~~
       43  history
    
    >> 32번 항목을 실행하지만 히스토리 리스트에 추가하지는 않습니다.
    $ history -p !32
    history -p echo $HISTSIZE
    echo
    1000
    
    >> 기존 히스토리 리스트 마지막이 43번 이었고 다시 체킹시 동일하네요.  
    $ history
        1  a
        2  b
        3  c
       ~~~ 중략 ~~~
       32  echo $HISTSIZE
       33  echo $HISTFILESIZE
       ~~~ 중략 ~~~
       43  history
    $

     

     

    1-8> -s 옵션

    : 히스토리 리스트에 ARGs 에 해당되는 내용이 추가됩니다.

    $ history | tail -5
       59  history -d {55,56,57}
       60  history
       61  history -d {55,56,57,58}
       62  history
       63  history | tail -5
    
    >> 히스토리 리스트에 "ls -al" 추가하기 / 실행은 되지 않습니다.
    $ history -s "ls -al"
    
    >> 64번 항목 추가 체킹
    $ history | tail -5
       61  history -d {55,56,57,58}
       62  history
       63  history | tail -5
       64  ls -al
       65  history | tail -5

     

     

    < 기타>

     history 안에서 add 글자 찾기

    >> grep 명령 과 파이프라인( | ) 만 뒤에 추가하면 됩니다.

    $ history | grep add

     519 번 항목 다시 실행하기 (!이력번호)

    !519

    >> 기존에 이미 만들어진 origin 을 다시 add 할려고 해서 fatal 에러가 나온거니 무시해도 됩니다.

     기존에 실행된 날짜/시간정보 (timestamp) 표시하기

     

    $ HISTTIMEFORMAT="%F %T "
    $ history

     

    HISTTIMEFORMAT 에 사용된 %F , %T 의 의미를 알려면 bash manual 를 봐야 합니다.

    $ man bash

    >> strftime(3) 이란 부분 보이시죠.

    $ man 3 strftime

    >> %F ,%T 에 대한 설명이 나오네요

    %F : 날짜 형식 , %T : 시간 형식

    $ HISTTIMEFORMAT="%d/%m/%y %T "
    $ history

     

     직전 사용한 10개 명령 표시

    $ history 10
     1996  ls
     1997  look
     1998  man look
     1999  man last
     2000  last
     2001  ls
     2002  cd Temp
     2003  ls
     2004  history
     2005  history 10

     

     마지막 실행 명령보다 3개전 명령 실행하기 ( $ !-3) 

     

    $ history | tail
     2035  2
     2036  3
     2037  4
     2038  5
     2039  6
     2040  7
     2041  8                                        >> !-4
     2042  9                                        >> !-3
     2043  0                                        >> !-2
     2044  history | tail                           >> !-1
    $ !-3
    9
    9: command not found
    $

     

    !! (double exclamation) :바로 이전 명령 실행하기

    >> Refer to the previous command (!-1)

    $ 7
    7: command not found
    $ 8
    8: command not found
    $ 9
    9: command not found
    $ !!
    9
    9: command not found
    $

     

     !string

    >> string 으로 시작하는 가장 최근 명령을 참조합니다.

    $ history | grep find
     1078  find -name embms.apk
     1113  find -name sdl.conf
     1125  find -name anroid.*
     1126  find -name android.*
     1127  find -name android.permission.*
     1197  find -name Hello*
     2065  history | grep find
    $ !find
    find -name Hello*

     

     

     사용 변수 (HISTFILE, HISTFILESIZE ,HISTSIZE)

    >> 히스토리 리스트 크기
    $ echo $HISTSIZE
    1000
    
    >> 히스토리파일 크기
    $ echo $HISTFILESIZE
    2000
    
    >> 히스토리 파일 이름
    $ echo $HISTFILE
    /home/[USER]/.bash_history

     

     

     

     

     

     

    그럼 수고하세요.

     

     

     

     

    반응형