Lệnh ls không hiển thị thư mục nhưng tôi không thể tạo thư mục vì thư mục đã tồn tại


8

Tôi đang sử dụng Ubuntu 16.04.

Bước 1) Tôi đã đăng nhập vào roottài khoản người dùng của mình.

Bước 2) Tôi đã sử dụng cdđể điều hướng đến thư mục chính của tài khoản người dùng khác.

Bước 3) Tôi gõ lsđể kiểm tra nội dung của thư mục đó.

Bước 4) Nội dung trở lại trống rỗng.

Bước 5) Tôi gõ mkdir .sshđể tạo một thư mục.

Kết quả) mkdir: cannot create directory '.ssh': File exists

Câu hỏi: Tại sao thư mục được liệt kê là trống nếu thư mục .ssh tồn tại bên trong nó?

- cập nhật -

Tôi đã đăng nhập vào root vì đây là một máy chủ thử nghiệm. Tôi đang nhiều lần tạo và phá hủy nó.


sử dụng llhoặc lakhôngls
phuclv

1
sẽ chỉ là một bí danh, vì vậy thay vì sử dụng ls -alF
Dennis Nolte

2
Quá trình của bạn có một lỗi lớn ở bước 1.
Cuộc đua nhẹ nhàng trong quỹ đạo

Câu trả lời:


35

lsbởi chính nó không hiển thị các thư mục ẩn (thư mục và tệp ẩn là những thư mục bắt đầu bằng một ., chẳng hạn như .ssh)

Hãy thử sử dụng ls -atrong thư mục.

Từ trang ls:

-a, - tất cả

đừng bỏ qua các mục bắt đầu bằng.

Như đã lưu ý trong các nhận xét, các thư mục và tệp "ẩn" về mặt kỹ thuật không phải là một vấn đề, chỉ có mã được xây dựng trong rất nhiều công cụ phổ biến để xử lý ...với ý nghĩa đặc biệt, kết quả .thường được coi là "ẩn" bởi hầu hết các công cụ. Lý do tôi sử dụng thuật ngữ này là vì thông thường khi nghe nó được gọi theo cách đó.

Ngoài ra ...thường có ý nghĩa đặc biệt đối với hầu hết các hệ thống tập tin, tương ứng chỉ ra thư mục hiện tại và thư mục mẹ.


4
Lưu ý rằng "thư mục ẩn" không phải là một thứ gì đó, chúng bị ẩn bởi vì ls có mã đặc biệt để không hiển thị chúng khi chúng bắt đầu bằng dấu chấm.
PlasmaHH

2
@PlasmaHH Vâng, lsvà một loạt các công cụ khác. Nhưng về nguyên tắc bạn hoàn toàn đúng; sau đó, một lần nữa, ngay cả trên các hệ thống theo dõi dòng dõi của chúng trở lại MS-DOS và các thuộc tính tệp của nó, nó yêu cầu mã đặc biệt để xử lý trường hợp tệp "ẩn" (có nghĩa là "tệp có thuộc tính ẩn" thay vì "tệp" đã đặt tên cho mẫu đặc biệt này ").
một CVn

3
@ MichaelKjorling: trên rất nhiều hệ thống này, tuy nhiên nó là cách khác. Ở đó, bạn thường yêu cầu hệ thống "cung cấp cho tôi mọi thứ" và khi bạn muốn hiển thị các tập tin ẩn, bạn nói "cho tôi mọi thứ cộng với những thứ ẩn" hoặc "cho tôi tất cả những thứ ẩn". Vì vậy, nó đang nỗ lực nhiều hơn để ẩn các tệp so với nỗ lực thêm để hiển thị các tệp ẩn.
PlasmaHH

12
Thực tế thú vị, việc phát minh ra các tập tin ẩn là một lỗi, lschỉ được cho là để ẩn ...vì vậy họ đã thêm mã để xem liệu nó có bắt đầu bằng dấu chấm hay không
Ferrybig

4
Tôi lo ngại về phần "đăng nhập như root" kết hợp với sự không quen thuộc rõ ràng với * nixes. Sẽ rất dễ dàng để OP vô tình phá hủy thứ gì đó quan trọng.
shoover

4

Trong bước 3 của bạn, gõ ls -ađể liệt kê nội dung của thư mục.

Tệp hoặc thư mục có tên bắt đầu .sẽ bị bỏ qua ls.


0

.ssh là một thư mục ẩn, vì nó bắt đầu bằng một .

Để liệt kê các tập tin và thư mục ẩn, sử dụng ls -athay vì chỉ ls.


1
.sshkhông phải là một tập tin, nó là một thư mục
Ferrybig

7
Làm thế nào điều này là bất cứ điều gì nhiều hơn câu trả lời được chấp nhận đưa ra 8 giờ trước, hoặc câu trả lời khác được đưa ra cùng lúc với câu trả lời được chấp nhận?
Colt

-2

"." được dành riêng cho các thư mục / tập tin ẩn. lstheo mặc định sẽ không liệt kê các tập tin và thư mục ẩn. ("." và ".." là hai thư mục ẩn mặc định trong bất kỳ thư mục nào). Để xem tất cả các tệp trong một thư mục, hãy sử dụng ls -ahoặc ls -al(nếu bạn muốn biết thêm chi tiết về từng tệp / thư mục.


-4

Để tạo thư mục bạn cần xóa thư mục hiện có

Sử dụng rm -rf .ssh nó sẽ xóa thư mục

Hoặc nếu đã tồn tại Bạn có thể sử dụng cd .ssh

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.