mv một tập tin mà không phá vỡ một liên kết tượng trưng đến tập tin đó


24

Có thể mvmột tập tin w / out phá vỡ một liên kết tượng trưng đến tập tin đó? Phản ứng ban đầu của tôi về vấn đề này là không và tôi đang tìm ra giải pháp dựa trên kịch bản để thay đổi các liên kết ngay sau khi di chuyển, nhưng tôi đã tự hỏi làm thế nào những người khác đã tiếp cận vấn đề này. Đường dẫn và tên của các liên kết tượng trưng được biết trước, vì vậy về lý thuyết, tất cả những gì tôi cần làm là:

  1. lấy mục tiêu của liên kết
  2. mv mục tiêu
  3. tạo lại liên kết đến mục tiêu mới
  4. tạo một liên kết mới đến mục tiêu mới (khác với liên kết ban đầu mà tôi vẫn muốn giữ cho đến bây giờ)

Vào một ngày sau đó:

  1. xóa liên kết cũ

1-4 sẽ được gói gọn trong một tập lệnh bash, nhưng tôi tự hỏi liệu có ai có cách tiếp cận thanh lịch hơn, hoặc biết về một lệnh hoặc lệnh tích hợp mà tôi không biết.


2
Liên kết cứng không có vấn đề này. Họ có những hạn chế khác mặc dù. :-)
Stéphane Gimenez

3
Vâng, không thể sử dụng liên kết cứng vì các tệp trên một số hệ thống tệp.
gabe.

2
Ngoài ra: không thể liên kết cứng đến một thư mục.
sampablokuper

Câu trả lời:


8

Bạn đang đi đúng hướng, tôi không nghĩ có một cách dễ dàng hơn trình tự bạn mô tả.

Bước 3 và 4 hơi khó hiểu. Nếu bạn muốn nhắm mục tiêu lại các liên kết hiện có, bạn giữ cùng tên bạn có thể sử dụng ln -fđể ghi đè lên các tệp hiện có. Nếu bạn muốn tên của các liên kết của bạn cũng thay đổi để phản ánh tên mục tiêu mới, trình tự của bạn là chính xác.


1
Heh, yeah, chỉ cần đọc lại phần đó và bây giờ tôi cũng bối rối. Tôi sẽ điều chỉnh nó để nó có ý nghĩa hơn. Cảm ơn.
gabe.

Tôi hơi bối rối khi sử dụng ln -f, nhưng tôi nghĩ kịch bản @fred được đăng có thể giúp làm rõ cách thức hoạt động của nó. Trang người đàn ông không giúp được gì nhiều, thật đáng ngạc nhiên.
gabe.

@gabe. Phiên bản gốc của câu trả lời của tôi đã đúng -s -f, nhưng trong khi xác thực nó, nó đã "mất" -s: sai! Từ wikipedia : 'ln' không có tùy chọn nào tạo liên kết cứng, 'ln -f' buộc một liên kết cứng ... vì vậy, nhờ câu hỏi, nó đã thực sự xác nhận cú pháp cho tôi bây giờ .. Nó chắc chắn khiến tôi phải kiểm tra lại những thứ ... Nó đòi hỏi ln -s -f.. (Tôi đã thực hiện điều chỉnh)
Peter.O

4

Đối với tình huống của bạn:

# change target of a symbolic link
# -------------
# ln -s, --symbolic    make symbolic links instead of hard links
# ln -f, --force       remove existing destination files
#
# Setup: make junk.link to  file junk
  echo hello > ~/junk
  ln -s ~/junk ~/junk.link;  cat ~/junk.link
#
# move file and point the link to it.
  org="$(readlink ~/junk.link)"
  new="$org".moved
  mv "$org" "$new"
  ln -s -f "$new" "$new".link  # '-s' for a soft link

Lưu ý: sẽ phức tạp hơn nếu một chuỗi các liên kết có liên quan.
Peter.O

0

Tôi có vấn đề tiếp theo. Tôi tìm thấy một chủ đề biểu tượng rất tốt gọi là "Suru ++"

Suru ++ 20 [Chính thức không có lỗi và tương thích 11 DE]

Nhưng chủ đề biểu tượng này được thực hiện trong tất cả các hình ảnh. Bây giờ tôi muốn sử dụng nó trong Fluxbox và tạo ra các mục trình đơn nhưng điều này chỉ có thể với png icon Tôi tải về tổng thể bên trong đó là tất cả các biểu tượng trong định dạng svg, và có tôi có thể chuyển đổi từ dòng lệnh svg để png tất cả ok tạo cho mỗi kích thước thư mục như 16x16, 24x24 px. Nhưng trong các thư mục đó là các liên kết tượng trưng đến một tập tin svg:

tiện ích mở rộng svg bên trong các liên kết tượng trưng mà tôi muốn thay đổi thành png

Nếu có một cách có thể để thay đổi Svg mở rộng thành png bên trong tất cả các liên kết biểu tượng, chủ đề biểu tượng sẽ hoạt động tốt trong menu Fluxbox và Trình quản lý tệp. Tôi đã tạo một entrie về chủ đề biểu tượng này bằng Xubfox nhưng bằng tiếng Tây Ban Nha

Chúa phù hộ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.