터미널에 표시된 현재 디렉토리 경로를 어떻게 단축합니까?


17

내가 깊은 디렉토리에 있다면,

~/Desktop/Dropbox/School/2017/C/A3/

터미널을 열면

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

그런 다음 명령을 작성합니다. 그것은 매우 길며 터미널에 쓰는 모든 줄은 다음 줄로갑니다. 현재 디렉토리 만 표시하는 방법이 있는지 알고 싶습니다. 나는 그것을 표시하고 싶다 :

bob@bob-ubuntu: A3/$

이렇게하면 훨씬 명확하며 항상 pwd전체 디렉토리를 볼 수 있습니다 . 공간이 너무 많이 걸리기 때문에 전체 디렉토리를 터미널에 표시하고 싶지 않습니다.

답변:


12

PS1쉘 시작 파일 (아마도 .bashrc) 에서 수정해야합니다 .

이미 있으면 설정에을 포함 \w하여 작업 디렉토리를 제공합니다. 이를 \W대문자로 변경하십시오 . 로그 아웃했다가 다시 로그인하거나 다음을 수행하십시오.

. .bashrc

(또는 파일이 무엇이든).

없으면 다음과 같이 추가하십시오.

PS1='\u@\h: \W:\$'

.bashrc또는 무엇 이건. 조회 PS1bash더 많은 아이디어를 얻을 수 매뉴얼 페이지를 참조하십시오.

조심해; bash여러 개의 초기화 파일을 여러 개 사용할 수 있습니다 (예 : .bashrcand) .bash_profile. PS1시스템 전체에 설정된 것일 수 있습니다 . 그러나 자신의 파일 중 하나에서이를 무시할 수 있습니다.


23

bash 4 이후로, 명령 행에서 디렉토리 깊이를 줄이는 간단한 방법은 bashrc 파일에서 아래 명령을 사용하는 것입니다. 터미널을 다시 열어야하며 숫자 (예 : 1)는 표시 할 디렉토리의 깊이를 지정합니다.

PROMPT_DIRTRIM = 1


4
이것은 내가 찾던 것입니다. 같은 설정 export PROMPT_DIRTRIM=3당신이에 .bashrc완벽한 중간 사이이다 \W\w. 참조 : gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane

3

bash를 사용한다고 가정하면 프롬프트 문자열 (변수 PS1) \W대신을 변경하십시오 \w.

예를 들어 PS1이 현재 \u@\h:\w\$인 경우\u@\h:\W\$

이를 영구적으로 만들려면 bash 시작 파일에서이를 변경해야합니다 (예 : ~/.bash_profile또는) ~/.bashrc.

자세한 내용과 백 슬래시 이스케이프 처리 된 특수 문자 목록을 보고 man bash검색 하십시오 PROMPTING.


PS1에 대한 언급이 4 개 있습니다. 4 개를 모두 변경합니까?
K Split X

어디에 4 언급? ~ / .bash_profile에? \wPS1 의 모든 인스턴스를로 변경해도 아무런 문제가 없습니다 \W. 또는 스크립트 하단에서 원하는대로 프롬프트를 설정할 수 있습니다.
cas

1

이 경우 PS1 을 편집해야합니다 .

의 insted \w, 당신은 명령이나 프로그램이 경로를 shortned하는 변수를해야합니다 :

오리지널 PS1

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

로 변경

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

당신이 당신의 집 디렉토리에 있다면 ~이 사용자 이름을 insteed 것입니다!

$ {PWD ## * /}의 명령이 필요하다는 것을 피하려면

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

새로운 PS1은 다음과 같습니다

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

내가 세상을 구하려고하는 동안 oOps 내가 noidea | \ W를 잊었다


1

이것은 모든 sh쉘에 이식 가능합니다 .

PS1쉘 시작 파일 중 하나에 지정하십시오 .

PS1='${PWD##*/} $ '

프롬프트는 다음과 같습니다

dir $

dir현재 디렉토리의 기본 이름은 어디에 있습니까 ?

$PWD변수는 현재 디렉토리 경로를 포함하고 ${PWD##*/}와 마지막 포함한까지 모든 것을 제거합니다 /그 경로를.

작은 따옴표는 쉘 양식이 지정시 변수 대체를 평가하지 못하게합니다 ( $PS1프롬프트가 표시 될 때마다 값 이 평가됨).

PS1이는 현재 쉘에 의해 사용되는 같은 변수는 수출 할 수 없습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.