ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 단축키 - Linux, Vim
    Dev 2020. 11. 1. 19:58

    cd 홈 디렉토리로 이동
    cd - 이전 작업 디렉토리로 이동
    cd ~username 해당 유저의 홈 디렉토리로 변경

    * tip
    파일 이름에 띄어쓰기(공백. 스페이스) 대신 언더스코어(_) 나 하이픈(-) 사용하자 왜? 띄어쓰기는 커맨드에서 입력시 번거로움

    df -h
    disk space for file system

    ls 옵션
    ls ~ /user 에서 ~는 홈 디렉토리를 뜻하며 홈 디렉토리와 user 내의 목록을 같이 볼 수 있음
    ls -a . 으로 시작하는 파일들도 볼 수 있음(숨김파일등)
    ls -l 파일. 디렉토리명 뿐만 아니라 속성까지 확인 가능
    ls -lt t를 더해서 수정시간에 따른 정렬 가능
    ls -lt -r 정렬 역순 (= --rerverse)
    ls -l -d d를 더해서 선택한 디렉토리 내부가 아니라 그 디렉토리 자체에 대한 정보 출력(--directory)
    ls -s 파일 크기순 정렬

    ls 자세히 보기 정보
    -rw-r--r-- 1 root root 24564 2020-11-01 11:30 dkel.png
    -rw-r--r-- 파일 접근 권한
    1 하드 링크 수
    root 파일 소유자의 사용자 이름
    root 파일을 소유한 그룹의 이름
    24564 파일크기(바이트)

    file
    file dkel.png
    dkel.png 파일에 관한 정보를 출력함



    cp -i -r -u -v file1 file2
    -i --interactive 덮어쓴다면 메시지 보여줌
    -r --recursive 폴더 안의 내용까지 복사
    -u --update 없을때나 최신버전 옮김
    -v --verbose 완료 메세지 보여줌

    cp file1 file2 dir1 dir1이 존재할때 파일1,2를 dir1로 복사
    cp dir1/* dir2 dir2 이 존재할때 dir1 내 모든 파일을 복사

    mv
    cp와 유사하며 -i -u-v 옵션 사용 가능

    mkdir
    mkdir dir1 dir2 한번에 다수 명령 인자 허용

    rm -i -r -v -f 사용 가능 --force 는 존재하지 않는 파일 삭제 확인 메세지 무시. 이 경우 interactive 옵션 무시하게 됨
    rm 시 * 와일드 카드를 쓰기 전에 ls *.html 등으류 테스트 먼저 하기

    ln 링크 만들기
    등의 명령어들이 gui 환경에서 보다 관리가 용이함. 특히 복잡한 작업들 예로 어떤 디렉토리 내 모든 html파일을 옮기기
    cp -u *.html /all_html_files
    위와 같은 와일드 카드는 아래와 같음
    * 모든 문자 == g* g로 시작하는 모든 파일, b*.txt b로 시작하는 txt 파일
    ? 모든 하나의 문자 data??? data 뒤에 세글자
    [characters] characters 문자셋에 포함된 문자
    == [abc]* a,b,c 로 시작하는 모든 파일
    == zzz.[0-9][0-9] . 뒤에 숫자가 2개있는 파일
    [!characters] characters 문자셋에 포함되지 않은 문자
    [[:class:]] 지정된 문자 클래스에 포함된 문자

    [:alnum:] 모든 알파벳과 숫자 문자
    [:alpha:] 모든 알파벳 문자
    [:digit:] 모든 숫자
    [:lower:] 모든 소문자
    [:upper:] 모든 대문자




    cat 파일 연결
    cat은 파일을 읽어서 표준 출력으로 내용을 복사함
    바로 파일을 표시하거나 여러 파일을 합칠때 사용
    예) movie.mpeg.001 movie.mpeg.002 movie.mpeg.003.... 있을때 순서대로 합치기
    cat movie.mpeg.00* > movie.mpeg
    와일드카드는 항상 정렬된 순서로 확장함
    cat > lazy_dog.txt 하고 입력을 하고 ctrl+D 누르면 입력된 데이터가 lazy_dog.txt 에 출력(저장)됨


    sort 텍스트 라인 정렬
    ls /bin /usr/bin | sort | less
    두 디렉토리에서 목록을 하나러 만들어 정렬한 것을 봄

    uniq 중복줄 알리거나 생략
    ls /bin /usr/bin | sort | uniq | less
    uniq 뒤에 -d 를 넣으면 삭제된 내용 볼수 있음

    wc 각 파일의 개행. 단어 수. 바이트 출력
    wc ls-outout.txt
    7902 64566 503634 ls-output.txt
    ls /bin /usr/bin | sort | uniq | wc -l
    2728
    -l 옵션을 통해 개행 수만 볼수 있음

    grep 패턴과 일치하는 라인 출력
    ls /bin /usr/bin | sort | uniq | grep zip
    -i 옵션 대소문자 구분 안함
    -v 패턴과 일치 하지 않는 라인 출력

    head 파일 첫부분 출력 -n 5 첫 5줄
    tail 파일 마지막 부분 출력
    tee 표준 입력 읽고 표준 출력 및 파일에 쓰기

    표준 출력 재지정
    ls -l /usr/bin > ls-output.txt
    ls -l /usr/bin >> ls-output.txt 이어쓰기

    ls -l /bin/usr > ls-output.txt 현재 없는 디렉토리라서 에러가 뜬다. 에러가 뜨기 전에 ls-output.txt(원래 내용 있음)를 처음부터 다시 쓰는데 에러가 발생하여 파일 내용만 지워짐

    표준 에러 재지정
    ls -l /bin/usr 2> ls-output.txt
    ls -l /bin/usr > ls-output.txt 2>&1
    2는 표준에러 1은 표준 출력으로. 디렉토리가 존재하지 않아서 에러가 발생할때 표준출력으로 재지정해줌. 순서도 중요하다. 표준 출력 지정 후 표준 에러 지정해야함

    최근에는 표준 출력과 표준 에러를 단일 표기법으로 재지정 가능함
    ls -l /bin/usr &> ls-output.txt

    출력을 원치 않는 경우
    ls -l /bin/usr 2> /dev/null

    chmod
    0 ---
    1 --x
    2 -w-
    3 -wx
    4 r--
    5 r-x
    6 rw-
    7 rwx
    chmod 600 foo.txt
    -rw------
    chmod 777 foo.txt
    -rwxrwxrwx



     

    cmd cursor

    • Ctrl+A or Home: Go to the beginning of the line.
    • Ctrl+E or End: Go to the end of the line.



    vim(vi 의 확장판)
    명령어 모드
    커서의 이동
    L 오른쪽
    H 왼쪽
    J 한줄 아래
    K 한줄 위
    0 현재 줄 처음으로
    $ 현재 줄 마지막으로
    W 다음 단어
    B 이전 단어
    ctrl F 페이지 아래로 page down key
    ctrl B 페이지 위로 - page up key
    G 파일의 마지막줄
    30G 번재줄
    a 는 그 문장의 마지막에서 입력모드로 변경됨
    o 현재줄 아래에 빈줄 추가
    O 현재줄 위에 빈줄 추가
    x 현재 문자 삭제 3x 현재 문자 포함 다음 2개 문자

    dd 현재줄 삭제
    5dd 현재 줄부터 총 5줄
    dw 현재 위치부터 다음 단어 앞까지
    d$ 현재 위치부터 현재줄 끝까지
    d0 현재 위치부터 현재 줄 맨 앞까지
    dG 현재부터 끝까지
    d20G 현재부터 20번재줄까지

    위에 d(잘라내기) 대신 y 를 쓰면 복사할수 있고
    원하는 위치에 p 로 붙여넣기

    검색
    f - 줄에서 검색 fa를 누르면 a문자를 찾아 이동 세미콜론을 입력하명 반복 검색 가능
    /Line 파일내에서 검색하고 n을 누르면 다음 단어로 이동

    검색하면서 치환
    :%s/Line/line/g
    : 명령
    % 작업 수행 범위로 전체이고. 부분은 1,5 1번 줄부터 5번 줄 2,$ 2번줄부터 끝까지
    s 작업의미로 검색하며 치환
    Line 을 line 으로 변경
    g 전체를 의미
    gc 로 하면 확인 메시지 표시
    확인 메시지 종류
    y 치환 실행
    n 이번 치환 건너뛰기
    a 전체 치환 실행
    q 치환 중단
    l 이번 치환 후 정료 last
    ctrl E ctrl Y 스크롤 이동하여 치환 내용 확인

    다중 파일 편집
    vi foo.txt ls-output.txt
    :n 다음 파일로 전환
    :N 그 전 파일로 돌아가
    :buffers 수정중인 파일들의 목록
    :buffers 2 목록의 2번으로 이동

    현재 파일의 전체 내용을 다른 파일에 저장
    vi ls-output.txt
    :r foo.txt (:r = read)
    ls-output 파일에 foo 파일이 이어쓰기된다

    저장후 닫기. ZZ 는 :wq 와 :q 의 결합
    :w foo1.txt 다른 이름 저장

    'Dev' 카테고리의 다른 글

    Docker compose - .env 활용하기  (0) 2022.02.08
    Github actions - Github pages / S3 / NodeJS Jest  (0) 2022.02.05
    Github actions - AWS ECR/Lambda 자동 배포  (0) 2022.02.03
    Git commnad + commit messages  (0) 2021.07.06
    Vim  (0) 2021.07.06
Designed by Tistory.