Tôi muốn tạo một tập tin có tên test
. Vô tình tôi chạy mkdir test
thay touch test
.
Có thể chuyển đổi test
thư mục trong một tập tin có tên test
?
Điều gì về việc chuyển đổi một tập tin có tên test
vào một thư mục có cùng tên?
Tôi muốn tạo một tập tin có tên test
. Vô tình tôi chạy mkdir test
thay touch test
.
Có thể chuyển đổi test
thư mục trong một tập tin có tên test
?
Điều gì về việc chuyển đổi một tập tin có tên test
vào một thư mục có cùng tên?
Câu trả lời:
Điều này là không thể đối với bất kỳ Unix hoặc Linux nào tôi từng chạm vào.
Trong một số Unix cũ hơn, các thư mục là các tệp, được đánh dấu đặc biệt, nhưng vẫn là các tệp. Bạn đã từng có thể đọc một thư mục với cat
SunOS, ví dụ. Rất nhiều hệ thống tập tin hiện đại có thể có các thư mục dưới dạng cây B + hoặc một số cấu trúc dữ liệu trên đĩa khác. Vì vậy, biến một tập tin thành một thư mục hoặc ngược lại sẽ luôn yêu cầu xóa và tạo lại với cùng tên.
Không có không có lệnh như vậy bởi vì sẽ hoàn toàn không có điểm nào trong đó. Câu hỏi của bạn giống như yêu cầu một cách để biến một hộp thành một hình chữ nhật phẳng. Bạn sẽ làm gì với những thứ trong hộp (thư mục)? Làm thế nào hình chữ nhật tương ứng với hộp nó đến từ?
Các tập tin và thư mục phục vụ các chức năng hoàn toàn khác nhau. Mặc dù một thư mục thực sự là một tệp trong các hệ thống * nix, nhưng nó chỉ áp dụng cho các phần bên trong của hệ thống chứ không áp dụng cho những gì bạn, người dùng, xem. Vì vậy, chuyển đổi một tập tin thành một thư mục, hoặc ngược lại, sẽ luôn liên quan đến việc xóa tập tin và tạo thư mục. Điều tốt nhất bạn có thể hy vọng sẽ là sử dụng cùng một nút nhưng một lần nữa, không có nhiều điểm trong đó.
Tạo một chức năng để làm những gì bạn muốn. ( bash
hoặc giả định Bourne / POSIX khác như shell)
$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$
Tôi cố tình sử dụng rmdir
sẽ thất bại nếu adir
không phải là một thư mục hoặc không trống (không -f
bắt buộc). touch
sẽ chỉ chạy nếu rmdir
thành công.
Bạn có thể đặt định nghĩa hàm trong tệp tùy chỉnh shell của mình ( .bashrc
for bash
).
--
?
--
đánh dấu sự kết thúc của các cờ rmdir
và touch
biết bất cứ điều gì qua nó là một tên tệp, ngay cả khi nó bắt đầu bằng -
.
Để những người thắc mắc tại sao bạn muốn làm điều này, hãy làm theo chủ đề này:
Rõ ràng là một lỗi trong phần sụn đã lật bit trong mục nhập thư mục của tệp, khiến HĐH nghĩ rằng đó là một thư mục thay vì một tệp.
Trong khi tôi không có bộ định tuyến Linksys trong câu hỏi, một cái gì đó đã thay đổi tất cả các tệp .jpg của tôi thành các thư mục trống. Nếu có cách nào đó để lật bit (hoặc bất cứ điều gì) nói rằng mục nhập thư mục NTFS là thư mục so với tệp, tôi muốn biết về nó.
Một trong những giải pháp trong chuỗi dài 2 năm đó cho biết nếu ổ cứng chứa các thư mục đã sử dụng được kết nối với máy Mac chạy OS / X, Mac sẽ xem lại chúng dưới dạng tệp và chúng có thể được sao chép vào một thư mục trên Mac. Tôi không có máy Mac để dùng thử, vì vậy nếu có ai biết cách lật ...
Đầu tiên, lấy quyền truy cập vào thiết bị đầu cuối và thực thi ls -al file
với tệp là tệp bạn muốn chuyển đổi trở lại vào thư mục THỰC TẾ. Nếu có tệp và thư mục con được liệt kê, điều đó có nghĩa là "tệp" của bạn trước đây là thư mục có nội dung thực và bạn có thể tiếp tục:
Hành hình:
sudo chmod 700 /
HOẶC LÀ
sudo chmod 700 file
Khởi động lại hệ thống và lấy lại quyền truy cập thiết bị đầu cuối và thực hiện:
sudo chmod 744 /
HOẶC LÀ
sudo chmod 744 file
HÃY NHỚ: "tập tin" nên được thay thế bằng tập tin bạn muốn chuyển đổi trở lại vào thư mục THỰC TẾ.
Đây chỉ là một cách tùy ý để giải quyết vấn đề này nhưng nó tạo ra sự bất thường về quyền mà bạn có thể sử dụng fsck -f
để khắc phục (tất nhiên là không gắn kết) hoặc đặt thủ công các quyền mới khi cần.
LẠI, đây chỉ là một cách đã được chứng minh để tránh phải xóa tệp trước đây là một thư mục không trống.
rm -f test && touch test
ngoại trừ điều này, tôi thực sự không biết