Tôi đang cố gắng làm việc với một đường dẫn và thay thế thư mục chính bằng dấu ngã trong bash, Im hy vọng sẽ hoàn thành nó với ít chương trình bên ngoài khi cần thiết. Có cách nào để làm điều đó chỉ với bash. Tôi đã nhận đượcCó cách nào tốt để thay thế thư mục chính bằng dấu ngã trong bash không?
${PWD/#$HOME/\~}
Nhưng điều đó không hoàn toàn đúng. Nó cần phải chuyển đổi:
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
Là một lưu ý quan tâm, heres cách nguồn bash làm nó khi chuyển đổi \w value in the prompt:
/* 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);
}
Đây không phải là bash, giống như mã C. Nhưng thay thế một chuỗi với hầu như không có bối cảnh là dễ bị lỗi. bạn có chắc chắn muốn tiếp tục như vậy không? – pizza
Xin lỗi nếu điều này không rõ ràng. Mã C là một ví dụ về cách thực hiện. Bản thân nó bash như thế nào. bash là một chương trình được viết bằng C. Bây giờ tôi muốn làm điều tương tự trong ngôn ngữ bash. – Jake
Bạn có thể cho chúng tôi biết kết quả đầu ra như bây giờ không? – birryree