...
유용한 리눅스 CLi 명령어 Tip
시간을 절약하고 생산성을 높이는 리눅스 터미널 단축키들을 모아보았다.
몰라도 문제는 없지만 알면 매우 유용하니 습득을 권장한다.
명령어 자동완성 및 도움말 ( tab )
자동완성 기능
길다란 리눅스의 커맨드를 일일히 다 타이핑 하지말고 TAB키 를 눌러서 명령어 자동완성을 할 수 있다.
예를 들어 $ iptables 라는 커맨드를 입력한다고 하자.
커맨드라인에 ipta 만 치고 tab키를 누르면 명령어가 자동완성 되는 것을 볼 수 있다.
이 처럼 만일 길다란 리눅스 명령어가 있을 경우 시간을 절약할 수 있다.
$ ipta # + tab키
도움말 기능
도움말이란, 커맨드 자동완성이 하는데 겹치는 커맨드 알파벳이 있으면 이를 나열해서 사용자로 하여금 빠르게 골라 사용할 수 있게 하는 기능이다.
tab을 두번 치면 도움말 파일들을 나열해준다.
예를 들어 ch로 시작하는 명령어가 뭐가 있는지 궁금하면, ch를 치고 tab을 두번 쳐주면 이렇게 도움말이 나타난다.
명령어 뿐만 아니라 폴더/파일들도 어떤게 있는지 도움리스트를 얻을수 있다는 장점이 있다.
마지막 작업 디렉토리로 간단 전환 ( cd - )
만일 /home/abhishek/Pictures/Wallpapers 같은 길다란 현 디렉토리에서,
다른 디렉토리 /usr/share/shutter 로 이동 후 잠깐 볼일이 생겨 다시 /home/abhishek/Pictures/Wallpapers 로 되돌아갈 일이 생길경우, 직접 디렉토리를 다시 타이핑 하지말고 단축명령어로 마지막 작업 디렉토리로 바로 이동할수 있다.
$ cd -
홈 디렉토리 이동 단축키 ( cd ~ )
단축문자 ~ 물결표를 치거나 아무것도 안치고 cd 만 쳐도 바로 홈 디렉토리로 이동된다.
$ cd ~
$ cd
바로 직전의 사용한 명령 실행 ( !! )
!! 를 사용하면 바로 직전에 사용한 명령어를 사용한 것과 똑같은 출력결과를 내보낸다.
이전 명령의 항목을 골라 재사용 ( history )
$ history 명령을 치면, 내가 사용했었던 명령어들의 내역들이 쭉 출력 된다.
만일 내가 재사용 하고 싶은 명령어가 있다면, 일일히 타이핑하지말고, 느낌표로 !명령문자 / !숫자 로 바로 재실행 할 수 있다.
단, 명령알파벳이 겹치는 명령어들이 있다면 가장 마지막에 사용한 명령이 실행된다.
커맨드 줄 의 처음/끝으로 이동 ( ctrl + A / E )
윈도우에선 Home 이나 End 키를 사용해서 라인의 처음, 끝으로 간편하게 이동할 수 있다.
리눅스에서는 Home/End키를 지원하지않고 대신에 Ctrl+A 와 Ctrl+E 로 가능하다
- Ctrl+A : 줄의 시작 부분으로 이동
- Ctrl+E : 줄의 끝 부분으로 이동
커서 위치에서 내용 모두 삭제 ( ctrl + U / K )
윈도우에서 Ctrl+X 로 한 라인의 내용들을 전체 삭제할 수 있다.
이 기능도 리눅스에 내장되어 있지만, 좀 더 세분화 되어있다.
Linux 터미널에서 Ctrl+U 를 누르면 현재 커서 위치에서 왼쪽 부분 모든 항목이 삭제된다.
만일 한 라인의 모든 내용 지우려면 커서를 라인 끝으로 옮기고 지우면 된다.
마찬가지로 Ctrl+K 를 누르면 커서 위치부터 오른쪽 부분 모든 항목이 삭제된다.
만일 내용 모두를 지울일이 있다면 백스페이스 키를 계속 사용하는 대신 Ctrl+U를 사용해보자
한 라인 지우기 단축키 조합
- Ctrl+E 치고 Ctrl+U (커서를 맨 끝으로 옮기고 왼쪽부분 모두 삭제)
- Ctrl+A 치고 Ctrl+K (커서를 맨 처음으로 옮기고 오른쪽 부분 모두 삭제)
디렉토리 내용 나열 ( ll )
자주 사용하는 ls -l (디렉토리의 파일들의 정보를 자세히 나열) 명령을 ll 만 쳐도 똑같은 결과를 출력해준다.
$ l # ls 대신 l 사용
$ ll # ls -al 대신 ll 사용
여러 명령 연달아 실행 ( ; )
여러 Linux 명령들을 차례로 실행해야 한다고 하자. 보통 한 커맨드라인에 하나씩 커맨드를 쳐서 실행할 것이다.
이러지 말고 인라인으로 한 줄에 커맨드를 ; 와 함께 써주면 차례대로 명령어를 순차적으로 실행해준다.
마치 프로그래밍 언어에서 사용하는 , 콤마 같은 기능이라고 보면 된다.
$ command_1; command_2; command_3
$ ll; cd /; ifconfig
논리값을 이용한 명령 실행 ( && )
만일 이전 명령이 성공적으로 실행되야 다음 명령어를 실행되게 할 경우 이를 한 줄에 어떻게 표현할수 있을까?
고급언어로 따지자면, 이렇게 표현할 수 있을 것이다.
if (bool == True) a=1;
저런 간단한 조건문 분기 일 경우 && 논리값으로 표현해서 사용 할 수 있다.
&&는 이전 명령이 성공한 경우에만 다음 명령이 실행되도록 한다.
$ command_1 && command_2
$ sudo apt update && sudo apt upgrade # 업데이트가 성공하면 업그레이드
과거에 사용했던 명령어를 검색 ( ctrl + r )
위에서 배운 history와는 달리, 몇 분/시간 전에 긴 명령을 사용했는데 다시 사용해야 하는 상황일때 쓰일 수 있다.
검색어를 사용하여 기록에서 명령을 검색할 수 있다.
ctrl+r 키를 사용하여 역 검색을 시작하고 명령의 일부를 입력하면 된다.
과거의 기록을 조회하고 검색어와 일치하는 명령을 표시해서 실행하게 된다.
기본적으로 하나의 결과만 표시된다.
검색어와 일치하는 더 많은 결과를 보려면 ctrl+r을 계속해서 사용해야 한다.
만일 역방향 검색을 종료하려면 Ctrl+C를 사용하면 된다.
우발적인 Ctrl + s 에서 Linux 터미널 고정 해제
리눅스 터미널 프로그램에서 간혹 Ctrl + s 키를 누르는 경우가 있다.
이 키를 누르게 되면 터미널이 먹통(?)이 되는 현상이 나타나는데, 해결 하는 방법은 Ctrl + q 를 누르면 간단하게 해결된다.
ctrl + s 는 터미널의 문자 출력을 중단 하는 터미널 제어 키라고 한다.
왠만한 리눅스는 모두 기본값으로 설정이 되어 있으니 당황 하지 않고 ctrl + q 키를 눌러 다시 복구 하자.
실시간으로 로그 파일 읽기 ( tail -f )
애플리케이션이 실행되는 동안 로그를 실시간 분석해야 하는 상황에서는 -f 옵션과 함께 tail 명령을 사용하면 된다.
$ tail -f 로그파일
grep 명령어와 함꼐 사용하여 의미 있는 행만 표시할 수도 있다.
$ tail -f 로그파일 | grep search_term
압축을 풀지 않고 압축된 로그 읽기 ( z명령어 )
서버 로그는 일반적으로 디스크 공간을 절약하기 위해 tar와 gzip으로 압축되어 보관 되는 편이다.
만일 로그 내용을 볼려면 다시 압축된 파일을 풀어서 봐야되는데, 압축 파일 그대로 읽을 수 있는 명령어가 있다.
zless, zcat, zgrep 같이 일반 명령어 앞에 z 를 붙여주기만 하면 된다.
$ zcat logfile.tar.gz | less
$ zless logfile.tar.gz
$ zmore logfile.tar.gz
$ zgrep -i keyword_search logfile.gz
$ zdiff logfile1.gz logfile2.gz
파일 읽기는 cat 보단 less
파일의 내용을 보려면 특히 큰 파일인 경우 cat이나 vi 에디터로 보기보단, less 명령어가 좋은 선택이 된다. 내부에서 검색어 검색, 페이지 이동, 줄 번호 표시 등을 할 수 있다.
$ less 파일명
별칭을 사용하여 오타 수정 ( alias )
흔히 길다란 명령어를 짧게 축약하는데 쓰이는 alias 명령어를 오타 수정 용도로도 사용할 수 있다.
예를 들어, 종종 grep을 gerp로 잘못 입력할 수 있다.
이 방식으로 bashrc에 별칭을 넣으면 오타를 입력하여도 명령어 실행 효과를 얻게 된다.
alias gerp=grep
대화형 응답이 필요한 명령 또는 스크립트에 yes 명령 사용
일부 명령어는 로그 동작 중간에 Y나 N을 요구한다.
이러한 사용자 상호 작용이 필요할 때마다 Y를 입력하지말고 아예 처음부터 자동으로 Y로 인식하도록 지정해줄 수도 있다.
$ yes | 명령어 # 파이프를 이용
파일 내용물 비우기 ( > filename )
파일 자체를 삭제하지 않고 텍스트 파일의 내용만 싹 비우려면 다음 명령어를 사용할수도 있다.
$ > 파일명
특정 텍스트가 포함된 파일이 있는지 확인 ( grep -Pri )
특정 텍스트가 포함된 파일이 있는지 한번에 확인하려는 경우 쏠쏠히 사용할수 있다.
$ grep -Pri Search_Term path_to_directory
명령어 도움말 ( --help )
$ ls --help # ls 명령어 옵션 보기
명령어 매뉴얼 출력 ( man )
man은 manual의 약자라고 보면 된다.
$ man [명령어]
$ man less # less 명령어 매뉴얼 보기
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.