Terminalde gösterilen geçerli dizin yolunu nasıl kısaltabilirim?


17

Derin bir dizindeysem diyelim:

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

sonra terminali açtığımda,

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

ve sonra emrimi yazıyorum. Bu çok uzun ve terminalde yazdığım her satır bir sonraki satıra gider. Sadece geçerli dizinimi görüntüleyecek bir yol olup olmadığını bilmek istiyorum. Görüntülenmesini istiyorum:

bob@bob-ubuntu: A3/$

Bu şekilde çok açık ve her zaman pwdtüm dizinimi görmek için yapabilirim . Sadece tüm dizin terminalde görünür istemiyorum çünkü çok fazla yer kaplıyor.

Yanıtlar:


12

PS1Kabuk başlangıç ​​dosyanızda (muhtemelen .bashrc) değişiklik yapmanız gerekir .

Zaten oradaysa, ayarı içerecektir \w, bu da çalışma dizininizi verir. Bunu \W(büyük harf) olarak değiştirin. Oturumu kapatıp tekrar açın veya şunu yapın:

. .bashrc

(veya dosyanız ne olursa olsun).

Orada yoksa, aşağıdaki gibi bir şey ekleyin:

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

için .bashrcya da her neyse. Yukarı bak PS1içinde bashdaha fazla fikir edinmek için manuel sayfa.

Dikkatli ol; bashbirden fazla başlatma dosyası kullanabilir, örneğin .bashrcve .bash_profile; PS1sistem çapında ayarlanmış olabilir . Ancak kendi dosyalarınızdan birinde bunu geçersiz kılabilirsiniz.


24

Bash 4'ten beri, komut satırında dizin derinliğini kısaltmanın kolay yolu bashrc dosyanızda aşağıdaki komutu kullanmaktır. Sadece terminalinizi yeniden açmayı unutmayın ve ayrıca sayı (yani 1) gösterilecek dizinin derinliğini belirtir.

PROMPT_DIRTRIM = 1


4
Bu tam olarak aradığım şeydi. export PROMPT_DIRTRIM=3Sizin gibi bir şey ayarlamak ve .bashrcarasındaki mükemmel orta zemin . Bkz. Gnu.org/software/bash/manual/html_node/Bash-Variables.html\W\w
spkane

3

Bash kullandığınızı varsayarsak, bilgi istemi dizesini (PS1 değişkeni) \Wyerine değiştirin \w.

senin PS1 şu anda ise mesela \u@\h:\w\$, ayarlayın\u@\h:\W\$

Bunu kalıcı yapmak için bash başlangıç ​​dosyalarınızda değiştirmeniz gerekir - örn. ~/.bash_profileVeya ~/.bashrc.

tüm ayrıntıları ve ters eğik çizgiden kaçan özel karakterlerin listesini görebilir man bashve arayabilirsiniz PROMPTING.


Ben 4 PS1 söz var Tüm 4 değiştirir miyim?
K Split X

4 nerede bahsediyor? ~ / .bash_profile? \wPS1'deki tüm örnekleri değiştirmek için hiçbir zarar vermemelidir \W. veya istemi komut dosyasının alt kısmında istediğiniz gibi ayarlayabilirsiniz.
cas

1

bu durumda PS1'i düzenlemeniz gerekir ,

kışkırtılmış \wbir komut veya kısa yol gösteren bir değişkeniniz olacaktır:

orijinal 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\]\$'

olarak değiştir

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

Bu, eğer evinizdeyseniz ~ kullanıcı adının nasıl kullanılacağını unutmayın!

bundan kaçınmak için $ {PWD ## * /} komutunun birkaç komutuna ihtiyacınız olacaktır.

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

yeni PS1 aşağıdaki gibi görünecek

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\]\$'

dünyayı kurtarmaya çalışırken oOps noIdea vardı | \ W unuttum


1

Bu, tüm shkabuklara taşınabilir .

PS1Kabuk başlangıç ​​dosyalarınızdan birine atayın :

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

İstem şu şekilde görünecektir:

dir $

dirGeçerli dizinin temel adı nerede .

$PWDDeğişken geçerli dizin yolunu içerir ve ${PWD##*/}ve son dahil olmak üzere her şeyi şerit olacak /o yolu.

Tek tırnak, atama sırasında değişken ikameyi değerlendiren kabuk formunu önler ( $PS1bilgi istemi her görüntülendiğinde değeri değerlendirilir).

PS1Sadece şimdiki kabuk tarafından kullanılan değişken ihraç edilmemelidir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.