Điểm:3

Làm cách nào tôi có thể nhanh chóng kiểm tra một đường dẫn trong bash để xác định xem có bất kỳ đoạn nào của nó là một liên kết tượng trưng không?

lá cờ us

Nếu tôi có một đường dẫn như thế này với một liên kết tượng trưng:

/cái này/một/hai/ba

Có một lớp lót nhanh nào để xác định xem một đoạn nữa trong đường dẫn có phải là một liên kết tượng trưng không? Ví dụ, tôi muốn phát hiện nếu cái này, một, hai, hoặc số ba trong ví dụ trên là một liên kết tượng trưng.

Một cách là so sánh đường dẫn chứa liên kết tượng trưng với đầu ra của liên kết đọc -f <đường dẫn>. Tự hỏi nếu có một cách nhanh hơn.

Điểm:6
lá cờ cn

Tôi sẽ dùng:

if [[ "$my_path" != "$(realpath --canonicalize-current $my_path)" ]];thì
  echo Đường dẫn $my_path là đường dẫn tương đối hoặc chứa liên kết tượng trưng.
khác
  echo Đường dẫn $my_path là tuyệt đối.
fi
Điểm:0
lá cờ eg

bạn có thể dùng awkin để sử dụng trong trường hợp này hay trường hợp khác, nó rất đơn giản và hữu ích. trong trường hợp này, bạn có thể thực hiện bước dưới đây: 1 = mở ~/.bashrc và thêm lệnh dưới đây vào cuối tệp này

bí danh issymlink="sh /bin/issymlink.sh $1"

2 = tạo một tệp có nội dung dưới đây trong /bin/issymlink.sh

#!/bin/bash
đường dẫn=$1
loại=`chỉ số $1 | awk 'FNR == 2 {in $8;}'`

nếu [ $type != "tượng trưng" ]
sau đó
  echo Đường dẫn $1 là tuyệt đối và loại của đường dẫn này là $type
khác
  echo Đường dẫn $1 là các liên kết tượng trưng.
fi

3 - đăng xuất và đăng nhập hoặc gõ su trong thiết bị đầu cuối và nhập cuối cùng bạn có thể gõ issymlink ĐƯỜNG DẪN/TỚI/TỆP/HOẶC/THƯ MỤC trong thiết bị đầu cuối và nhập để kiểm tra loại tập tin

sử dụng ví dụ và đầu ra:

issymlink/lib
Đường dẫn /lib là tuyệt đối và loại đường dẫn này là thư mục

issymlink /etc/nginx/sites-enabled/default
Đường dẫn /etc/nginx/sites-enabled/default là các liên kết tượng trưng.
Điểm:-1
lá cờ in

Từ: https://unix.stackexchange.com/questions/96907/how-do-i-check-if-a-file-is-a-symbolic-link-to-a-directory

Chúng ta thấy gì? [[ -L ]] - làm công việc này cho chúng tôi. Chúc mừng.

# kịch bản mèo.sh 
#!/bin/bash

/bin/rm -vfr cái này
/bin/mkdir -vp này/một/hai/ba

/bin/mv -v cái này/một/hai/ba cái này/một/hai/real_three
/bin/ln -vfs real_three cái này/một/hai/ba
/bin/ls -altr cái này/một/hai/

/bin/mv -v cái này/một/hai cái này/một/real_two
/bin/ln -vfs real_two cái này/một/hai
/bin/ls -altr cái này/một/hai/
/bin/ls -altr này/một/

tmp="này/một/hai/ba"

trong khi [ "$tmp" != "." ]; làm
        nếu [ -L "$tmp" ]; sau đó
                /bin/echo "$tmp - là liên kết tượng trưng."
        khác
                /bin/echo "$tmp - không phải là liên kết tượng trưng."
        fi
        tmp=$(/bin/dirname $tmp)
xong

Cách sử dụng:

# tập lệnh bash.sh 
đã xóa 'cái này/một/hai'
đã xóa thư mục 'this/one/real_two/real_three'
đã xóa 'cái này/một/real_hai/ba'
đã xóa thư mục 'this/one/real_two'
đã xóa thư mục 'this/one'
đã xóa thư mục 'này'
/bin/mkdir: đã tạo thư mục 'this'
/bin/mkdir: đã tạo thư mục 'this/one'
/bin/mkdir: đã tạo thư mục 'this/one/two'
/bin/mkdir: đã tạo thư mục 'this/one/two/three'
đổi tên thành 'this/one/two/three' -> 'this/one/two/real_three'
'cái này/một/hai/ba' -> 'real_three'
tổng số 12
drwxr-xr-x 2 gốc gốc 4096 ngày 8 tháng 8 20:08 real_three
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 ..
lrwxrwxrwx 1 gốc gốc 10 ngày 8 tháng 8 20:08 ba -> real_three
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 .
đổi tên thành 'this/one/two' -> 'this/one/real_two'
'cái này/một/hai' -> 'real_two'
tổng số 12
drwxr-xr-x 2 gốc gốc 4096 ngày 8 tháng 8 20:08 real_three
lrwxrwxrwx 1 gốc gốc 10 ngày 8 tháng 8 20:08 ba -> real_three
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 .
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 ..
tổng số 12
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 ..
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 real_two
lrwxrwxrwx 1 root root 8 ngày 8 tháng 8 20:08 hai -> real_two
drwxr-xr-x 3 gốc gốc 4096 ngày 8 tháng 8 20:08 .
cái này/một/hai/ba - là liên kết tượng trưng.
cái này/một/hai - là liên kết tượng trưng.
cái này/một - không phải là liên kết tượng trưng.
đây - không phải là liên kết tượng trưng.
lá cờ in
Trong khi đây không phải là một câu trả lời tồi, giai điệu là. Vui lòng viết lại câu trả lời của bạn để thực tế hơn.
lá cờ us
Nó không phải là một câu trả lời tốt. Đó thậm chí không phải là những gì tôi đã hỏi.
Michael Hampton avatar
lá cờ cz
@StevieD Bạn đã hỏi cách xác định xem đường dẫn có chứa thành phần là liên kết tượng trưng hay không. Điều này làm điều đó và dường như là chính xác 100%. Nó chỉ là cách quá dài dòng trong các ví dụ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.