Bagaimana cara mempersingkat jalur direktori saat ini yang ditunjukkan pada terminal?

17

Jika saya berada di direktori yang dalam, misalkan:

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

maka ketika saya membuka terminal, katanya

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

dan kemudian saya menulis perintah saya. Itu sangat panjang, dan setiap baris yang saya tulis di terminal menuju ke baris berikutnya. Saya ingin tahu apakah ada cara sehingga hanya menampilkan direktori saya saat ini. Saya ingin ditampilkan:

bob@bob-ubuntu: A3/$

Dengan cara ini jauh lebih jelas, dan selalu bisa saya lakukan pwduntuk melihat seluruh direktori saya. Saya hanya tidak ingin seluruh direktori terlihat di terminal karena terlalu banyak ruang.

K Split X
sumber

Jawaban:

12

Anda perlu memodifikasi PS1file startup shell Anda (mungkin .bashrc).

Jika sudah ada di sana, pengaturannya akan berisi \w, yang memberikan direktori kerja Anda. Ubah itu menjadi \W(huruf besar). Logout dan masuk lagi, atau lakukan:

. .bashrc

(atau apa pun file Anda).

Jika tidak ada, tambahkan sesuatu seperti:

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

untuk .bashrcatau apa pun. Cari PS1di bashhalaman manual untuk mendapatkan lebih banyak ide.

Hati-hati; bashdapat menggunakan beberapa file inisialisasi lebih dari satu, misalnya .bashrcdan .bash_profile; mungkin itu PS1diatur dalam sistem-lebar. Tetapi Anda dapat menimpanya di salah satu file Anda sendiri.

Bob Eager
sumber
23

Sejak bash 4, cara langsung untuk mempersingkat kedalaman direktori di command-line menggunakan perintah di bawah ini di file bashrc Anda. Hanya ingat untuk membuka kembali terminal Anda dan juga nomor (yaitu 1) menentukan kedalaman direktori yang akan ditampilkan.

PROMPT_DIRTRIM = 1

Esmaeil MIRZAEE
sumber
4
Ini persis apa yang saya cari. Mengatur sesuatu seperti export PROMPT_DIRTRIM=3di Anda .bashrcadalah jalan tengah yang sempurna antara \Wdan \w. Lihat: gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane
3

Dengan asumsi Anda menggunakan bash, ubah string prompt (variabel PS1) sehingga ia memiliki \Walih-alih \w.

mis. jika PS1 Anda saat ini \u@\h:\w\$, atur ke\u@\h:\W\$

Untuk membuat ini permanen, Anda harus mengubahnya di file startup bash Anda - misalnya ~/.bash_profileatau ~/.bashrc.

lihat man bashdan cari PROMPTINGdetail lengkap dan daftar karakter khusus yang lolos dari garis miring terbalik.

cas
sumber
Saya memiliki 4 menyebutkan PS1 Apakah saya mengubah semua 4?
K Split X
4 menyebutkan di mana? di ~ / .bash_profile? Seharusnya tidak ada salahnya mengubah semua instance \wdalam PS1 menjadi \W. atau Anda bisa mengatur prompt untuk apa pun yang Anda suka di bagian bawah skrip.
cas
1

dalam hal ini Anda harus mengedit PS1 ,

insted of \w, Anda akan memiliki perintah atau variabel yang menunjukkan jalur singkat:

PS1 asli

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

ubah ke

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

Catatan ini akan menempatkan insteed nama pengguna ~ jika Anda berada di direktori home Anda!

untuk menghindari itu, Anda akan memerlukan beberapa perintah insteed $ {PWD ## * /} misalnya

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

PS1 baru akan terlihat seperti berikut

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 saat saya mencoba menyelamatkan dunia, saya tidak punya noIdea | lupa \ W

Jonah
sumber
1

Ini portabel untuk semua shkerang.

Tetapkan ke PS1dalam salah satu file startup shell Anda:

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

Prompt akan terlihat seperti

dir $

Di mana dirnama dasar dari direktori saat ini.

The $PWDvariabel berisi path direktori saat ini, dan ${PWD##*/}akan strip segalanya hingga dan termasuk yang terakhir /di jalan itu.

Kutipan tunggal mencegah formulir shell mengevaluasi substitusi variabel pada saat penugasan (nilai $PS1akan dievaluasi setiap kali prompt ditampilkan).

The PS1variabel tidak boleh diekspor seperti itu hanya digunakan oleh shell saat ini.

Kusalananda
sumber
0

https://github.com/chrissound/SodiumSierraStrawberry

Memungkinkan Anda memotong jalur seperti:

Dari: / home / sodium / Proyek / Pribadi / Sierra / Super / Panjang / Path / HolyAvacado

Kepada: »Proyek / Sie ... / Sup ... / Lon ... / Pat ... / HolyAvacado /

Chris Stryczynski
sumber