端末に表示される現在のディレクトリパスを短縮するにはどうすればよいですか?


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、複数の初期化ファイルを複数使用できます。システム全体に設定されている場合があります。ただし、独自のファイルの1つでそれをオーバーライドできます。.bashrc.bash_profilePS1


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スプリットX

4つの言及はどこですか?〜/ .bash_profile?\wPS1のすべてのインスタンスをに変更しても害はありません\W。または、スクリプトの下部で好きなものにプロンプ​​トを設定することもできます。
cas

1

この場合、PS1を編集する必要があります。

insted \w、あなたはコマンドまたは短いパスを示す変数を持つことになります:

オリジナル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\]\$'

ホームディレクトリにいる場合、これはユーザー名を〜に結合することに注意してください!

それを避けるために、$ {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\]\$'

おっと 、世界を救おうとしている間にnoIdea | Wを忘れてしまった


1

これはすべてのshシェルに移植可能です。

PS1シェルスタートアップファイルの1つに割り当てます。

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

プロンプトは次のようになります

dir $

dir現在のディレクトリのベース名はどこにあります。

この$PWD変数には現在のディレクトリパスが含ま${PWD##*/}れており/、そのパスの最後までをすべて削除します。

単一引用符は、シェルフォームが代入時に変数置換を評価するのを防ぎます(の値は$PS1プロンプトが表示されるたびに評価されます)。

PS1それは、現在のシェルで使われているよう変数がエクスポートされるべきではありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.