Lưu lệnh đầu ra thiết bị đầu cuối trên OSX


0

Đó là câu hỏi đơn giản nhưng không thể tìm thấy câu trả lời, tôi đã tìm và thử tee output.txtsystem_profiler > output.txtkhông thành công, họ lưu tệp văn bản trống. Làm cách nào để lưu đầu ra thiết bị đầu cuối của tôi bằng lệnh trong thiết bị đầu cuối trên OSX El Capitan?


Lệnh của bạn sẽ hoạt động tốt. Xin vui lòng xem câu trả lời thử nghiệm của tôi.
BloodyEl

Có bạn đúng, tôi đã đợi như 1-2 phút và tệp văn bản không còn trống nữa nhưng nó không lưu đầu ra, nó lưu các chi tiết của ứng dụng. Tôi đang nói vềsystem_profiler > output.txt
hzleonardo

"system_profiler> output.txt" có tác dụng chính xác như "system_profiler", ngoại trừ được lưu vào một tệp. "system_profiler -xml> output.txt" sẽ in ở định dạng xml đôi khi hữu ích nhưng không phải là thứ bạn đang tìm kiếm. Bạn có thể chỉ cho tôi sự khác biệt bạn nhận được giữa "system_profiler" và tệp từ: "system_profiler> output.txt" không? Tôi đang sử dụng chính xác cú pháp giống như bạn. Tôi nhận được chính xác điều tương tự, kết quả mong đợi.
BloodyEl

Có gì đó bị thiếu. Hoặc là bạn đang hủy lệnh giữa chừng hoặc bạn không hài lòng với đầu ra ban đầu của "system_profiler" vì nó không được in. Cho dù in ra tập tin hay không, kết quả là rất lớn. Nếu bạn chỉ muốn giới hạn kết quả ở đoạn đầu tiên, thì hãy sử dụng "system_profiler --timout 5> output.txt" và nó sẽ tự dừng lại. Đó không phải là một vấn đề in ấn. Vui lòng giải thích kết quả trong tệp khác với kết quả trên màn hình như thế nào. XÁC NHẬN BẠN KHÔNG GỬI SIGKILL [CTRL-C] vv .... bởi vì sau đó chúng tôi không làm điều tương tự.
BloodyEl

Có tôi làm CTRL-C. Khi tôi làm điều đó không có vấn đề gì khi tôi lưu thủ công đầu ra, tại sao nó lại là một vấn đề khi thực hiện bằng lệnh?
hzleonardo

Câu trả lời:


1

Giả sử commandlà lệnh bạn muốn chạy, bạn có thể chuyển đầu ra của nó vào output.txt bằng cách sử dụng:

$ command > output.txt

hoặc là

$ command | tee output.txt

Nếu điều này không thành địa ngục thì có thể là do đầu ra không được in stdoutmà là trên stderr. Các đường ống >được viết ngầm 1>có nghĩa là "đường ống stdoutđến ...".
Nếu bạn cũng muốn chuyển stderrvào tập tin, bạn có thể sử dụng

$ command >output.txt 2>&1

Điều này dẫn tất cả đầu ra của stderrbộ mô tả tệp 1(= stdout) lần lượt được dẫn vào tệp văn bản.


Tôi không có Mac nhưng mọi vỏ tôi từng thấy đều chuyển hướng rõ ràng (không phải đường ống) theo thứ tự đã cho, vì vậy bạn cần >output 2>&1. Ngoài ra, trong bash bạn có thể sử dụng &>outputhoặc >&outputlàm cả hai cùng một lúc; xem trang người đàn ông.
dave_thndry_085

Tôi chỉ sử dụng OSX trong Máy ảo, chính của tôi là Linux - và mọi shell tôi đã sử dụng đều hoạt động với cả hai cách.
larkey

Không phải hai Linux tôi hiện đang sử dụng: trên Ubuntu (14) có bashhoặc dash, đang cat bad 2>&1 >outputgửi thông báo lỗi tới tty và không có gì cho tệp; trên CentOS (6) với bashhoặc dashhoặc ksh93giống nhau, và với tcshnó mang lại cho một lỗi Ambiguous output redirection. Bạn có thể cho tôi một ví dụ tôi có thể tải xuống (trên x86-64) hoặc kết nối với các tác phẩm đó cho biểu mẫu đó không?
dave_thndry_085

Vẫn tập tin văn bản trống và không thành công, nó có thể là một vấn đề el capitan? Bạn đang trên el capitan mới nhất?
hzleonardo

@ dave_thndry_085 Tôi chỉ nhận thấy rằng tôi chỉ sử dụng command 2>&1 | tee output.txtcông cụ này hoạt động theo cách này, nhưng bạn nói đúng, vì >nó không. Tôi chưa bao giờ nhận thấy Oo
larkey

0

Cú pháp:

$command > /output/file/location

Ví dụ: giả sử bạn muốn liệt kê tất cả các tệp và thư mục của / home / jackson và lưu kết quả của nó vào /home/jackson/list.txt để lệnh sẽ được--

$ls /home/jackson > /home/jackson/list.txt

nhưng hãy nhớ nếu tệp /home/jackson/list.txt đã tồn tại và chứa thông tin, thì lệnh trước đó sẽ xóa thông tin trước đó của bạn và viết đầu ra lệnh của bạn. để nếu bạn không muốn xóa thông tin trước đó, hãy sử dụng ">>" thay vì ">". vì vậy lệnh của bạn sẽ được.

$ls /home/jackson >> /home/jackson/list.txt

Hy vọng rằng sẽ giúp ..


Tôi có phải là người duy nhất đang làm sai điều gì không? Tôi thấy các lệnh này ở khắp mọi nơi nhưng nó không hoạt động đối với tôi, tôi đã đợi, vẫn còn tệp văn bản trống. Bạn có phải là thủ đô 10.11.5 không?
hzleonardo

0

H: Làm cách nào để lưu đầu ra thiết bị đầu cuối của tôi bằng lệnh trong thiết bị đầu cuối trên OSX El Capitan?

A. Đơn giản chỉ cần cho máy tính của bạn đủ thời gian để hoàn thành lệnh cụ thể đó (1m30s hoặc hơn).

Lệnh của bạn sẽ chạy mà không có vấn đề.


Trên mac của tôi lệnh:

system_profiler > output.txt

.. Mất khoảng 1m30 để hoàn thành.


Trình lược tả hệ thống cũng có các tùy chọn định dạng và giới hạn thời gian nếu muốn.

system_profiler -xml -timeout 3 > textfile.xml
cat ./textfile.xml

Tài liệu tham khảo:

man system_profiler
system_profiler -usage

Kết quả (với nl để đếm số dòng). Tập tin này giống như lệnh và có khoảng 52000 dòng.

system_profiler> output.txt nl output.txt

     1  Accessibility:

     2      Accessibility Information:

     3        Cursor Magnification: Off
     4        Display: Black on White
     5        Flash Screen: Off
     6        Mouse Keys: Off
     7        Slow Keys: Off
     8        Sticky Keys: Off
     9        VoiceOver: Off
    10        Zoom Mode: Full Screen
...
...

 51937            Wake On Wireless: Supported
 51938            AirDrop: Supported, Channel 0
 51939            Status: Off

Có kết quả tương tự cho tôi quá mà tôi không muốn. Tôi đang cố gắng thực hiện "Xuất văn bản dưới dạng" trong menu shell bằng một lệnh. Khi tôi thực hiện thủ công thì không sao, chỉ in từ thiết bị đầu cuối trong tệp văn bản trong một giây nhưng với các lệnh, tệp trống hoặc đầu ra này trong văn bản sau 1-2 phút.
hzleonardo
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.