Điểm:2

đường ống vỏ

lá cờ ng

Tôi đang cố hiểu dòng Shell này:

grep ^x06 ssh_known_hosts |
ssh-keygen -l -f -| 
\sed -e 's/^.*\(SHA256:\S\+\).*(\([^)]\+\))/\2: \1/' >fp
  • Vì vậy tiếng kêu về cơ bản chúng tôi đang tìm kiếm dữ liệu ssh_unknown_hosts. Là gì ^x06 được dùng cho?
  • với ssh-keygen lệnh chúng tôi đang tạo khóa SSH với -l. Cái gì -f được dùng cho?
  • Dòng cuối cùng tôi đã không nhận được.
Điểm:5
lá cờ cn
raj

tiếng kêu đang tìm kiếm tập tin ssh_known_hosts cho dòng (hoặc dòng) bắt đầu bằng x06 (^ chỉ ra một sự bắt đầu của dòng trong một biểu hiện thông thường) và xuất nó ra.

Từ người đàn ông ssh-keygen:

 ssh-keygen -l [-f input_keyfile]

[…]

 -l Hiển thị dấu vân tay của tệp khóa chung được chỉ định. Khóa RSA1 riêng
         cũng được hỗ trợ. Đối với các khóa RSA và DSA, ssh-keygen cố gắng
         tìm tệp khóa chung phù hợp và in dấu vân tay của nó. Nếu
         kết hợp với -v, một biểu diễn nghệ thuật ASCII của khóa là supâ
         miệt mài với dấu vân tay.

Cho nên ssh-keygen -l -f - đọc khóa từ đầu vào tiêu chuẩn (nghĩa là từ dòng đã được xuất bởi tiếng kêu) và xuất dấu vân tay của nó (- được sử dụng làm tên tệp cho biết đầu vào tiêu chuẩn).

Các sed phần là khó khăn nhất. Người ta cần hiểu rõ các biểu thức chính quy để hiểu những gì nó làm.

sed chạy lệnh s/mẫu/thay thế/ trên mỗi dòng đầu vào, nghĩa là thay thế mẫu với thay thế và sao chép dòng này sang đầu ra tiêu chuẩn. Nếu mẫu không tìm thấy trong dòng, dòng được sao chép không thay đổi.

Các mẫu sed đang tìm kiếm là: ^.*\(SHA256:\S\+\).*(\([^)]\+\)). Đó là một biểu hiện thường xuyên của khóa học.

Nó có thể được chia nhỏ như sau:

  • đầu dòng (^), theo sau là 0 hoặc nhiều ký tự bất kỳ (.*), tiếp theo là đầu tiên tập đoàn (phần giữa \( ... \); chúng ta sẽ đi vào chi tiết sau), theo sau là 0 hoặc nhiều hơn bất kỳ ký tự nào (.*), theo sau là thứ hai tập đoàn, được đặt trong dấu ngoặc đơn (\( ... \)).

  • Nhóm đầu tiên là SHA256:\S\+. Điều này có nghĩa là một chuỗi ký tự SHA256:, theo sau là một hoặc nhiều ký tự không phải khoảng trắng (\S\+) - tuy nhiên, cần lưu ý rằng không phải tất cả sed triển khai sẽ hỗ trợ \S như một dấu hiệu của ký tự không khoảng trắng. Vì vậy, các trận đấu nhóm đầu tiên SHA256: theo sau là bất kỳ ký tự nào, cho đến khoảng trắng đầu tiên.

  • Nhóm thứ hai là [^)]\+, nghĩa là một hoặc nhiều ký tự không bằng dấu ngoặc đơn đóng. Có tính đến việc toàn bộ nhóm được đặt trong dấu ngoặc đơn, nhóm thứ hai khớp với bất kỳ chuỗi nào được đặt trong dấu ngoặc đơn, cho đến dấu ngoặc đơn đóng.

Tổng hợp, sed tìm kiếm theo dòng cho một mẫu bao gồm SHA256: cộng với bất kỳ ký tự không phải khoảng trắng nào, sau đó là bất kỳ chuỗi nào được đặt trong dấu ngoặc đơn, với bất kỳ ký tự nào ở giữa chúng.

Mẫu phù hợp được thay thế bằng \2: \1 đó là văn bản phù hợp với nhóm thứ hai (\2), dấu hai chấm, dấu cách và văn bản phù hợp với nhóm đầu tiên (\1).

Ví dụ, nếu ssh-keygen đầu ra chứa một dòng như

bắt đầu thứ gì đó SHA256:123456 ở giữa thứ gì đó (văn bản bên trong dấu ngoặc đơn) kết thúc thứ gì đó

sed sẽ thay thế dòng đó bằng

văn bản bên trong dấu ngoặc: SHA256:123456 end something

Các dòng không chứa mẫu sẽ không bị thay đổi.

lá cờ ng
Xin chào, bạn rất tốt bụng vì đã giúp tôi, tôi đã hiểu hầu hết về nó nhưng tôi đang thắc mắc chuyển hướng Đầu vào Đầu ra của trình bao và Đường ống đang làm gì
lá cờ ng
Máy tính lưu các tập tin ở đâu?
raj avatar
lá cờ cn
raj
@Sparta Tập tin nào? Trong mã này, `ssh_known_hosts` là tệp đầu vào và `fp` là tệp đầu ra nơi ghi kết quả cuối cùng từ `sed`. Vì không có đường dẫn được chỉ định, cả hai tệp đều nằm trong thư mục hiện tại.
lá cờ ng
Này, cảm ơn vì sự giúp đỡ của các bạn, tôi thực sự đánh giá cao nó

Đă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.