Kịch bản này sử dụng tree
...
sudo apt-get install tree
Bạn có thể thay đổi độ sâu của thư mục bằng cách thay đổi -L 1
và bạn có thể chọn sử dụng hay không ~/
...
CẬP NHẬT 2 :
.. đã sửa đổi tập lệnh để chỉ thay thế hàng đầu / nhà / người dùng / (không phải "bất kỳ")
.. và thêm args ..
CẬP NHẬT Đã thêm kiểm tra: .. Đừng thêm thư mục vào PATH khi nó đã có trong PATH .. Kiểm tra này coi '~ /' và '/ home / user /' là khác nhau.
Re câu hỏi của bạn 1 ... vâng nó là sự thật; mỗi thư mục cụ thể phải được tăng tốc riêng lẻ trong PATH ..
Trả lời câu hỏi của bạn 2 ... Đây là một kịch bản sẽ làm những gì bạn muốn ..
Tôi đã thử nó, nhưng vì nó sẽ tạo ra PATH mới cho phiên hiện tại ..
Để làm cho nó vĩnh viễn bạn có thể sử dụng export PATH
(nhưng Tôi hơi sơ sài về các chi tiết của export
)
#
# name: path-add-dirs
# eg: $ path-add-dirs "$HOME/bin" "tilde" 1
# When directories are $HOME based, choose format.
# Add directories in tidle format: ~/...
# ...or as fullly-qualified: /home/user/...
# mode values: "tilde", or anything else for fully-qualified
mode="$2" # valid mode values: "tilde", or anything else
maindir="$1"; dirs= ; echo
# Buld string of subdirectories to a depth/level of 1
while IFS= read -r dir ; do
# Don't add directory if it is already in PATH
if [[ "$mode" == "tilde" ]] ; then
# replace only a *leading* :/home/user/
homecheck=":$dir"
dircheck="${homecheck/:$HOME\//:~/}"
dircheck="${dircheck#:}"
else
dircheck="${dir}"
fi;
pathcheck=":$PATH:"
if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then
echo "ALREADY IN PATH: $dircheck"
else
dirs="$dirs:$dir"
echo " added: $dircheck"
fi
done < <(tree --noreport -L $3 -fi -d "$maindir")
# Choose one of these two options
if [[ "$mode" == "tilde" ]]
then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/
else PATH="$PATH$dirs" # this method has fully expanded $HOME
fi
echo
echo "$PATH"
echo