Bae's Digital Dialogues

리눅스[Linux] 쉘을 사용하면서 만날 수 있는 문제 본문

Linux

리눅스[Linux] 쉘을 사용하면서 만날 수 있는 문제

배디훈 2024. 5. 16. 05:19

화면 표시 잠금 및 해제

단축키 내용
Ctrl + s 화면 표시를 잠금
Ctrl + q 화면 표시 잠금을 해제

 

Ctrl + s로 출력을 잠가도 문자열은 계속 입력된다. 화면에 아무것도 표시되지 않는다고 아무 문자나 입력하지 말고 
Ctrl + s를 눌러야한다.

 

실행 중인 명령을 강제 종료하려면 Ctrl + c를 누른다

Ctrl + c로 종료

$ ping 192.168.2.67
PING 192.168.2.67 (192.168.2.67) 56(84) bytes of data.
^C # 여기서 Ctrl + c를 입력
--- 192.168.2.67 ping statistics ---
20 packets transmitted, 0 received, 100% packet loss, time 19787ms

$

 

네트워크 연결을 확인하는 명령어인 ping을 사용했다. 이 명령어는 1초에 1번씩 네트워크 접속을 무한히 확인하기 때문에 Ctrl + c를 눌러 종료했다. ^c라고 표시된 부분이 Ctrl + c를 누른 부분이다. 이처럼 셸에서는 Ctrl를 ^로 표시하기도 한다.

 

커맨들 라인에서 명령을 입력하다가 Ctrl + c를 누르면 새로운 커맨드 라인으로 넘어갈 수 있다.

 

Ctrl + c로 새로운 커맨드 라인으로 넘어가기

$ echo Hello # 입력 주에 처음부터 새롭게 입력하고 싶다면 Ctrl + c를 입력
$            # 새로운 커맨드 라인이 시작됨

 

 

이미지 파일 같은 바이너리 파일을 쉘에서 출력하면 프롬포트의 문자가 깨지는 경우가 있다. 이때에는 화면을 지우는 Ctrl + l을 입력한다.

단축키 내용
Ctrl + l 화면을 삭제한다

 

Ctrl + l은 화면에 표시되는 내용을 전부 지우고 커서를 화면 좌측 상단으로 이동시킨다. Clear 명령어와 동일한 기능을 수행한다. 불필요한 정보를 지워서 화면을 깨끗하게 만들고 싶을 때 사용한다.

 

Ctrl + l을 입력해도 여전히 문자가 깨진다면 reset 명령어를 사용한다.

 

 

자동 완성 기능

 

\탭 키로 명령어 자동 완성

$ ec	# 여기까지 입력하고 Tab 입력
$ echo	# echo가 자동 완성

 

ec까지 입력한 상태에서 Tab을 누르니 echo가 자동 완성되었다.

 

 

후보가 여러 개인 경우

$ e	# 여기서 Tab을 입력하면 벨이 울릴 뿐 자동 완성되지 않는다

 

터미널의 설정에 따라 다르지만 보통 경고음(벨이 울린다고 표현)이 울리고 자동 완성이 동작하지 않는다. 나도 경고음이 울리는걸 확인했다. 이는 자동 완성될 후보가 많다라는 bash의 메시지이다. 여기서 한번 더 Tab을 눌러보자. 즉, e를 입력하고 Tab을 2회 연속 누르면 된다.

 

후보 일람 표시

$ e # 여기서 Tab을 두 번 입력
Display all 126 possibilities? (y or n)
e2freefrag                         easwrt.dll                         efsutil.dll                        enterpriseresourcemanager.dll      eventvwr.msc
e2fsck                             ebtables                           efswrt.dll                         env                                evr.dll
e2image                            ebtables-nft                       egrep                              envsubst                           ex
e2label                            ebtables-nft-restore               eject                              eps2eps                            exec
e2mmpstatus                        ebtables-nft-save                  elevator.exe                       eqn                                execmodelproxy.dll
... 생략 ...

 

전부 e로 시작하는 명령어들이다. 출력된 목록을 참고해서 명령어를 입력한다. 예를 들어 egrep이라는 명령어를 입력하면 eg까지 입력하고 Tab을 누른다.

 

 

후보 목록을 참고로 명령어 입력

$ eg 	# 여기까지 입력하고 Tab 입력
$ egrep	# egrep이 자동으로 표시된다

 

eg로 시작하는 명령어는 하나밖에 없어서 egrep이 자동 완성되었다.

이처럼 후보를 확인하면서 자동 완성 기능을 사용하면 명령어를 외우거나 전부 입력하지 않아도 된다. 또한, 오타 걱정도 덜 수 있다. Tab을 활용하니까 편하고 속도도 빨라진것 같아서 좋았다

 

 

명령 이력

 

명령 이력 관련 단축키

단축키 내용
Ctrl + p 혹은 바로 전 명령으로 이동한다
Ctrl + n 혹은 다음 명령으로 이동한다
Ctrl + r 이력을 검색한다

 

p는 previous의 약자이고, n은 next의 약자이다. 특히 Ctrl + p는 자주 사용되는데, 방금 실행한 명령을 다시 불러온다.

 

명령어 이름이 틀린 경우

$ cho hoon
Command 'cho' not found, did you mean:
  command 'cht' from deb chemtool (1.6.14-6)
  command 'co' from deb rcs (5.10.1-1)
  command 'echo' from deb coreutils (8.32-4.1ubuntu1)
  command 'who' from deb coreutils (8.32-4.1ubuntu1)
  command 'cdo' from deb cdo (2.0.4-1)
  command 'chg' from deb mercurial (6.1.1-1ubuntu1)
Try: sudo apt install <deb name>

 

 

이때 Ctrl + p를 입력하면 다음과 같이 방금 전에 입력한 커맨드 라인이 복원된다.

 

방금 전에 입력한 커맨드 라인 복원

$ cho hoon	# Ctrl + p로 복원

 

복원한 후 이전 글에서 배운 Ctrl + a로 커서를 맨 앞으로 이동한 뒤 문자 e를 입력하면 된다. 명령 이력을 위아래로 움직일때는 방향키를 사용해도 되지만, Ctrl + p와 Ctrl + n을 사용하는것이 좋다고 권장되지만 나는 아직까지는 방향키가 편한것 같기도 하다 ㅎㅎ

2024.05.16 - [Linux] - 리눅스 커맨드 라인 편집

 

리눅스 커맨드 라인 편집

커서 이동 단축키단축키내용Ctrl + b커서를 한 문자 뒤로 이동Ctrl + f커서를 한 문자 앞으로 이동Ctrl + a커서를 맨 앞으로 이동Ctrl + e커서를 맨 뒤로 이동  단위 단어 커서 이동 단축키단축키내용Me

baddiehoon.tistory.com

 

 

명령 이력 검색

 

명령 이력을 Ctrl + p나 Ctrl + n으로 하나씩 찾는 것은 비효율적이다. 이때 Ctrl + r을 입력하면 명령 이력을 검색할 수 있다.

셸에서 Ctrl + r을 입력하면 프롬포트가 다음과 같이 증분 검색이라는 모드로 변경된다.

 

명령한 이력 검색 프롬프트

(reverse-i-search)`':

 

증분 검색은 문자를 하나 입력할 때마다 이력을 검색한다. 즉, 검색할 문자를 전부 입력한 뒤 Enter를 누르지 않아도 문자를 입력할 때마다 자동으록 검색 결과가 바뀐다.

 

예를 들어 e를 입력해보자. 지금까지 입력한 명령한 이력에 따라 다르게 출력될 것이다. 여기서는 clear라는 명령어가 표시되었다.

 

문자를 하나씩 입력할 때마다 검색 결과 갱신

(reverse-i-search)`e': clear

 

 

 

이어서 c를 입력해보자. 그러면 명령한 이력에서 ec가 포함된 커맨드 라인이 검색된다.

(reverse-i-search)`e': echo hoon

 

명령한 이력에서 echo hoon이 검색되었다. 여기서 한 번 더 Ctrl + r을 입력하면 이전 검색 결과로 이동한다. 현재 검색 결과를 그대로 실행하고 싶다면 Enter를 누르고, 수정하려면 Esc를 누르면 된다.

 

Ctrl + r로 증분 검색하는 방법을 표에 정리해보았다.

단축키 내용
(문자 입력) 문자를 하나씩 입력할 때마다 검색을 수행한다
Ctrl + r 한 개 이전의 검색 결과로 이동한다
Enter 현재 검색 결과를 실행한다
Esc 현재 검색 결과를 실행하지 않은 채 커맨드 라인으로 복귀한다
Ctrl + g 검색 결과를 지우고 프롬프트로 복귀한다

 

증분 검색은 익숙해지면 매우 편리한 기능인것 같다. 많이 연습해봐야 될 것 같다.