oh-my-bashのpowerlineテーマを使用していますが、cwdプロンプトが時々長すぎる場合があります。powerline.base.sh
ファイルでこれを見つけましたが、パスワードを返すようです。
function __powerline_cwd_prompt {
echo "$(pwd | sed "s|^${HOME}|~|")|${CWD_THEME_PROMPT_COLOR}"
}
~/stuff/moreStuff/.../now などの長いディレクトリを圧縮できるように変更したいと思います。 BASHについてよくわかりませんが、どうすればよいのか疑問に思います。
ベストアンサー1
もし私は驚くでしょうああ、私は乱交です。パスを短縮するオプション/機能はありません。
それにもかかわらず、短縮機を使用した迅速な試みは次のとおりです(しばしば伝統的に始めから短縮されました)。
#!/usr/bin/env bash
# Credit: https://stackoverflow.com/a/17841619/2858703
join_by() { local IFS="$1"; shift; echo "$*"; }
short_pwd() {
IFS='/' read -a directory < <(pwd)
local -i trim_level=${1:-3} # default trim level of 3
if [ ${#directory[*]} -ge ${trim_level} ] && [ ${trim_level} -gt 0 ]; then
join_by / "..." "${directory[@]: -${trim_level}}"
else
pwd
fi
}
# examples
short_pwd
short_pwd 2
# these cause no trimming
short_pwd 0
short_pwd -1
short_pwd a
.
現在の形式では、それを使用するにはソースを提供(例外)する必要があります。あるいは、例を上書きするためにスクリプトshort_pwd $1
として実行することもできます(最初に配信されたパラメータがトリミングレベルを決定します)。
感謝の言葉この回答。
(この質問は以前に何度も解決されている可能性がありますが、時々自分で解決するのも面白いです)。
編集:私が過度にエンジニアリングしたことに気づきました。今エレガンスを加えてください!