GNU/Linux
껍질
수색…
소개
쉘은 프롬프트에 응답하여 프로그램을 실행합니다. 명령을 내리면 쉘은 프로그램을 검색 한 다음 실행합니다. 예를 들어, ls 명령을 주면 쉘은 ls라는 유틸리티 / 프로그램을 검색 한 다음 쉘에서 실행합니다. 유틸리티와 함께 제공되는 인수 및 옵션은 사용자가 얻은 결과에 영향을 미칠 수 있습니다. 쉘은 CLI 또는 명령 행 인터페이스라고도합니다.
기본 셸 변경
대부분의 최신 배포판은 BASH ( B ourne A gain SH ell)가 미리 설치되고 기본 쉘로 구성됩니다.
Linux에서 쉘을 변경하는 명령 (실제로는 실행 가능 바이너리, ELF)은 chsh
( ch ange sh ell)입니다.
먼저 chsh -l
명령을 사용하여 어떤 쉘이 이미 시스템에 설치되고 구성되어 있는지 확인할 수 있습니다. 그러면 다음과 비슷한 결과가 출력됩니다.
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
일부 Linux 배포판에서는 chsh -l
이 유효하지 않습니다. 이 경우 사용 가능한 모든 쉘 목록은 / etc / shells 파일에서 찾을 수 있습니다. cat
하여 파일 내용을 표시 할 수 있습니다.
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
이제 우리는 새 기본 셸 (예 : fish
선택하고 chsh -s
를 사용하여 구성 할 수 있습니다.
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
이제 남은 일은 로그 오프 - 로그온주기를 수행하고 새 기본 쉘을 즐기는 것입니다.
다른 사용자의 기본 셸을 변경하고 시스템에 대한 관리 권한이 있으면 chsh
를 root
로 사용하여이 작업을 수행 할 수 있습니다. 그래서 우리가 user_2
의 기본 쉘을 물고기로 user_2
가정하면 이전과 같은 명령을 사용하지만 다른 사용자의 사용자 이름 인 chsh -s /usr/bin/fish user_2
됩니다.
현재 기본 셸이 무엇인지 확인하기 위해 기본 셸의 경로를 가리키는 $SHELL
환경 변수를 볼 수 있으므로 변경 한 후에도 이와 비슷한 결과가 예상됩니다.
~ echo $SHELL
/usr/bin/fish
chsh
옵션 :
-s shell
쉘을 로그인 쉘로 설정합니다.
-l
, --list-shells
/ etc / shells에 나열된 쉘 목록을 인쇄하고 종료하십시오.
-h
, --help
사용법 메시지를 출력하고 종료하십시오.
-v
, --version
버전 정보를 출력하고 종료하십시오.
기본 셸 유틸리티
셸 프롬프트 사용자 지정
기본 명령 프롬프트는 다르게 보이고 짧게 변경 될 수 있습니다. 현재 디렉토리가 길면 기본 명령 프롬프트가 너무 커집니다. 이 경우 PS1
사용하면 유용합니다. 예쁘고 우아하고 짧고 맞춤화 된 명령. 아래의 표에서 PS1
은 다른 형식의 셸 프롬프트를 표시하는 여러 가지 인수와 함께 사용되었습니다. 기본 명령 프롬프트는 다음과 같습니다. user@host ~ $
내 경우에는 bruce@gotham ~ $
와 같습니다. 아래 표에 따라 변경 될 수 있습니다.
명령 | 유용 |
---|---|
PS1 = '\ w $' | 디렉터리 이름으로 ~ $ shell 프롬프트. 이 경우 루트 디렉토리는 루트입니다. |
PS1 = '\ h $' | gotham $ 쉘 프롬프트를 호스트 이름으로 사용 |
PS1 = '\ u $' | 사용자 이름으로 bruce $ shell 프롬프트 |
PS1 = '\ t $' | 22:37:31 $ 24 시간 형식의 22:37:31 $ 셸 프롬프트 |
PS1 = '@ $' | 10:37 PM 12 시간 형식의 셸 프롬프트 |
PS1 = '! $ ' | 732 는 쉘 프롬프트 대신 명령의 내역 번호를 표시합니다. |
PS1 = '멋쟁이 $' | dude $ 는 당신이 좋아하는 방식으로 쉘 프롬프트를 보여줄 것이다. |
일부 기본 셸 명령
명령 | 유용 |
---|---|
Ctrl-k | 자르거나 죽이다. |
Ctrl-y | 홱 잡아 끌다 |
Ctrl-a | 행의 시작 부분으로 커서를 이동합니다. |
Ctrl-e | 커서가 줄 끝으로 이동합니다. |
Ctrl-d | 커서 뒤 /에있는 문자를 삭제합니다. |
Ctrl-l | 화면 / 터미널을 지울 것입니다. |
Ctrl-u | 프롬프트와 커서 사이의 모든 것을 지울 것입니다 |
Ctrl-_ | 명령 줄에 마지막으로 입력 한 내용을 실행 취소합니다. |
Ctrl-c | 포 그라운드에서 실행중인 작업 / 프로세스를 중단 / 중지합니다. |
Ctrl-r | 역사에서 역 검색 |
~/.bash_history | 셸에서 사용 된 마지막 500 개의 명령 / 이벤트를 저장합니다. |
history | 명령 기록을 보여줍니다. |
history | grep <key-word> | <key-word> 키워드를 가진 역사에있는 모든 명령을 보여줄 것입니다 (과거에 사용 된 명령의 일부를 기억할 때 유용합니다) |
나만의 명령 별칭 만들기
bash에서 긴 명령을 사용하는 것에 지쳐 있다면 자신 만의 명령 별명을 작성할 수 있습니다.
가장 좋은 방법은 홈 폴더에 .bash_aliases 파일을 수정 (또는 존재하지 않는 경우 생성)하는 것입니다. 일반적인 구문은 다음과 같습니다.
alias command_alias='actual_command'
여기서 actual_command
는 이름을 바꿀 명령이고 command_alias
는 지정한 새 이름입니다. 예를 들어
alias install='sudo apt-get -y install'
새 명령 별명 install
를 실제 명령 sudo apt-get -y install
맵핑합니다. 이것은 터미널에서 install 을 사용할 때 bash가 sudo apt-get -y install 로 해석한다는 것을 의미합니다.
시스템에서 파일 찾기
bash를 사용하면 locate
명령을 사용하여 파일을 쉽게 찾을 수 있습니다. 예를 들어 파일 mykey.pem을 찾고 있다고 가정 해보십시오.
locate mykey.pem
때로는 파일에 이상한 이름이 있습니다. 예를 들어 random7897_mykey_0fidw.pem
과 같은 파일이있을 수 있습니다. 이 파일을 찾고 있지만 mykey와 pem 부분 만 기억한다고 가정 해 봅시다. 다음과 같은 파이프를 사용하여 locate
명령을 grep
과 결합 할 수 있습니다.
locate pem | grep mykey
이 두 가지 요소가 모두 포함 된 모든 결과를 나타냅니다.
모든 시스템에 locate
유틸리티가 설치되어있는 것은 아닙니다. locate
는 주기적으로 시스템을 검사하고 그 위에있는 모든 파일의 이름과 위치를 캐시하기 때문에 빠르고 효율적입니다. 그러나 데이터 수집이 활성화되어 있지 않으면 아무 것도 말할 수 없습니다. updatedb
를 사용하여 수동으로 파일 시스템 검사를 시작하여 파일 시스템의 파일에 대한 캐시 된 정보를 업데이트 할 수 있습니다.
작업 locate
find
유틸리티로 돌아갈 수 있습니다.
find / -name mykey.pem -print
locate mykey.pem
을 locate mykey.pem
것과 대략 동일하지만 캐시 된 데이터를 사용하지 않고 문제의 파일을 실행할 때마다 파일 시스템을 검사해야합니다. 이것은 분명히 느리고 효율적이지는 않지만보다 실시간입니다. find
유틸리티는 파일 찾기보다 훨씬 많은 작업을 수행 할 수 있지만 기능에 대한 자세한 설명은이 예제의 범위를 벗어납니다.