수색…


소개

쉘은 프롬프트에 응답하여 프로그램을 실행합니다. 명령을 내리면 쉘은 프로그램을 검색 한 다음 실행합니다. 예를 들어, 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.

이제 남은 일은 로그 오프 - 로그온주기를 수행하고 새 기본 쉘을 즐기는 것입니다.

다른 사용자의 기본 셸을 변경하고 시스템에 대한 관리 권한이 있으면 chshroot 로 사용하여이 작업을 수행 할 수 있습니다. 그래서 우리가 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.pemlocate mykey.pem 것과 대략 동일하지만 캐시 된 데이터를 사용하지 않고 문제의 파일을 실행할 때마다 파일 시스템을 검사해야합니다. 이것은 분명히 느리고 효율적이지는 않지만보다 실시간입니다. find 유틸리티는 파일 찾기보다 훨씬 많은 작업을 수행 할 수 있지만 기능에 대한 자세한 설명은이 예제의 범위를 벗어납니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow