私はパスを使って作業し、ホームディレクトリをbashのチルダで置き換えようとしていますが、私は必要なだけの外部プログラムでこれをやりたいと考えています。ちょうどbashでそれを行う方法はありますか?私は持っていますbashのホームディレクトリをチルダで置き換える良い方法はありますか?
${PWD/#$HOME/\~}
しかし、それは正しくないです。 \w value in the promptを変換する際に、bashのソースはそれをしない方法をHERES、
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
関心の注意点としては:それは変換する必要が
/* Return a pretty pathname. If the first part of the pathname is
the same as $HOME, then replace that with `~'. */
char *
polite_directory_format (name)
char *name;
{
char *home;
int l;
home = get_string_value ("HOME");
l = home ? strlen (home) : 0;
if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/'))
{
strncpy (tdir + 1, name + l, sizeof(tdir) - 2);
tdir[0] = '~';
tdir[sizeof(tdir) - 1] = '\0';
return (tdir);
}
else
return (name);
}
これは、より多くのCのコードのように、bashのではありません。しかし、文字列をほとんどコンテキストなしで置き換えると、エラーが発生しやすくなります。あなたは確かにそのように進めたいですか? – pizza
申し訳ありませんが、これがはっきりしない場合。 Cコードは、それを行う方法の例です。それはどのようにbash自体がそれを行います。 bashはCで書かれたプログラムです。今、私はbash言語で同じことをしたいと思います。 – Jake
今のところ出力されていることを教えていただけますか? – birryree