Không thể tìm thấy tệp bạn đã di chuyển trên Linux? Thủ phạm có thể là Slash

Tác giả AI+, T.Bảy 20, 2024, 04:05:42 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Đã di chuyển một tập tin và nó dường như đã biến mất? Đây là cách bạn có thể tìm thấy nó.

Thông thường, mv là một trong những lệnh Linux đầu tiên bạn học. Nhưng chỉ cần một sơ suất nhỏ, mọi thứ có thể trở nên khó hiểu một cách đáng ngạc nhiên đối với người dùng. Đôi khi có vẻ như các tập tin đã di chuyển đã biến mất.


1. Vấn đề đặc biệt này ảnh hưởng đến mọi người như thế nào

Di chuyển một tập tin trên dòng lệnh khá đơn giản. Bạn chỉ định tệp bạn muốn di chuyển và nơi bạn muốn di chuyển nó đến. Tuy nhiên, người dùng mới rất dễ cảm thấy bực tức và thất vọng vì mv.

Họ cố gắng di chuyển một tập tin vào một thư mục và có vẻ như nó đã hoạt động. Họ không nhận được thông báo xác nhận nhưng cũng không nhận được thông báo lỗi. Linux thường áp dụng cách tiếp cận không có tin tức là tin tốt. Nếu bạn không nhận được thông báo lỗi thì chắc chắn nó đã hoạt động.

Hoặc đã làm nó? Khi họ cd vào thư mục đích, tập tin không có ở đó. Và tất nhiên, vì mv di chuyển tệp từ thư mục gốc nên nó cũng không có ở đó. Có vẻ như tập tin đã bị mất trong ether. Đây thường là điểm mà người dùng thất vọng sẽ tìm đến sự giúp đỡ.

2. Phần gạch chéo phát trong lệnh mv

Giả sử bạn đang di chuyển một tệp sang một thư mục khác. Bạn sẽ giữ nguyên tên tập tin. Về lý thuyết, điều này khiến mọi việc trở nên dễ dàng vì bạn không cần chỉ định tên tệp mục tiêu trên dòng lệnh. Theo mặc định, mv sử dụng tên tệp gốc.

Chúng tôi có một tệp trong thư mục ~/Downloads/src. Chúng tôi di chuyển nó vào thư mục ~/Documents/backup. Đúng như dự đoán, nó hiện nằm trong thư mục sao lưu và đã bị xóa khỏi thư mục src.

Mã nguồn [Chọn]
ls ~/Downloads/src
mv ~/Downloads/src/important-file.dat ~/Documents/backup
ls ~/Documents/backup/
ls ~/Downloads/src


Điều đó thật tuyệt vời và đơn giản, mọi thứ đều hoạt động như mong đợi. Nếu chúng ta nhìn vào thư mục đích, chúng ta sẽ tìm thấy tệp đã được di chuyển và chúng ta tiếp tục phần còn lại của công việc.


Nhưng giả sử người mới sử dụng Linux của chúng tôi không sử dụng tính năng hoàn thành tab. Họ đang gõ đường dẫn thư mục bằng tay. Nếu họ viết sai tên của thư mục cuối cùng, chúng ta sẽ có hành vi rất khác.

Mã nguồn [Chọn]
mv ~/Downloads/src/important-file.dat ~/Documents/backpu

Họ đã mắc lỗi đánh máy với tên thư mục đích, nhưng mv âm thầm thoát trở lại dấu nhắc lệnh. Nhìn bề ngoài thì có vẻ như việc di chuyển tập tin đã thành công.

Hãy kiểm tra.

Mã nguồn [Chọn]
ls ~/Downloads/src
ls ~/Documents/backup/


Các thư mục gốc và đích đều trống. Tập tin đã đi đâu?

Bash cố gắng tìm thư mục có tên backpu nhưng không tìm thấy. Nó kết luận rằng bạn muốn đổi tên tệp đã di chuyển của mình thành backpu. Bạn sẽ tìm thấy một tệp có tên backpu cao hơn một cấp thư mục so với thư mục đích của bạn.

Mã nguồn [Chọn]
ls -l ~/Documents/

Để khắc phục điều này, bạn có thể di chuyển tệp của mình đến nơi cần đến và chỉ định tên thích hợp của nó trên dòng lệnh.

Mã nguồn [Chọn]
mv ~/Documents/backpu ~/Documents/backup/important-file.dat
ls ~/Documents/backup


Có thể tránh được sự nhầm lẫn và việc tìm kiếm tệp bị thiếu, có tên sai bằng cách thêm dấu gạch chéo vào thư mục đích trên dòng lệnh. Bằng cách đó, nếu bạn mắc lỗi đánh máy, Bash sẽ báo lỗi.

Mã nguồn [Chọn]
mv ~/Downloads/src/important-file.dat ~/Documents/backpu/

Dấu gạch chéo cuối cùng cho Bash biết rõ ràng rằng đây là tên thư mục, không phải tên tệp. Vì Bash không tìm được thư mục viết sai chính tả nên nó báo lỗi cho bạn và không di chuyển gì cả.

Đây là một kết quả tốt hơn cho những thất bại. Bạn được cảnh báo về lỗi và tệp gốc vẫn được giữ nguyên.

Sử dụng tính năng hoàn thành tab Bash không chỉ tăng tốc độ nhập đường dẫn thư mục mà còn mang lại một số phần thưởng bổ sung. Tất cả tên thư mục đều được tự động viết đúng chính tả và dấu gạch chéo ở cuối sẽ được thêm vào thư mục cuối cùng.

3. Đó không hẳn là lỗi của Slash

Rốt cuộc, Slash không mắc lỗi đánh máy. Nhưng nếu dấu gạch chéo xuất hiện và đang hoạt động, bạn sẽ được thông báo về lỗi trước khi mv thực hiện bất kỳ điều gì đáng nghi vấn với tệp của bạn.

Như thường lệ, bước đầu tiên để chẩn đoán tốt là kiểm tra lịch sử lệnh và xem lệnh nào thực sự được ban hành chứ không phải lệnh bạn nghĩ mình đã nhập. Nếu bạn phát hiện lỗi đánh máy, hãy tìm tệp có tên sai chính tả đó, cao hơn một cấp thư mục so với vị trí bạn mong đợi.