Câu hỏi Xóa đầu ra khỏi kho chứa add-apt


Tôi đang cố gắng để viết một kịch bản shell sẽ tự động thiết lập một LAMP stack cho tôi. Một trong những dòng tôi có trong kịch bản là:

add-apt-repository -y ppa:ondrej/php5-oldstable >> /tmp/output.txt

Nhưng hãy thử như tôi có thể nó luôn luôn kết quả đầu ra các nội dung sau đây:

gpg: keyring `/tmp/tmpf0k2tr/secring.gpg' created
etc........

Tôi muốn có Không đầu ra sẽ được hiển thị trên màn hình khi tôi chạy lệnh này để thêm ppa này vào kho lưu trữ của tôi.


4
2017-09-04 22:27


gốc




Các câu trả lời:


Sử dụng chuyển hướng đầu ra để /dev/null và bao gồm stderr đầu ra.

add-apt-repository -y ppa:ondrej/php5-oldstable > /dev/null 2>&1
  • Các 2>&1 sẽ yêu cầu Bash chuyển hướng stderr đến stdout.
  • Các command > file stanza sẽ chuyển hướng stdout vào một tệp, trong trường hợp này /dev/null.
  • /dev/null là lỗ đen của Linux - bạn sẽ không thể phục hồi bất cứ thứ gì từ đó.

Kết quả: thực thi lệnh im lặng đầy đủ.

Trong câu hỏi được cập nhật của bạn, bạn dường như đăng nhập tất cả đầu ra vào một tệp. Trong trường hợp đó bạn chỉ có thể nối thêm 2>&1 vào dòng hiện tại của bạn:

add-apt-repository -y ppa:ondrej/php5-oldstable >> /tmp/output.txt 2>&1

Điều này là bởi vì bạn đang nhìn vào stderr đầu ra được in trên thiết bị đầu cuối, mà bạn cần phải chuyển hướng đến nhật ký là tốt (nếu không bạn sẽ bỏ lỡ tất cả các lỗi!).


4
2017-09-04 22:34



@Braiam Điều này được dựa trên lệnh OP được cung cấp trong câu hỏi của ông. Tôi giả sử nó hoạt động cho anh ta và kịch bản của anh ta đang chạy như root đây. Câu hỏi đặt ra là về sự triệt tiêu đầu ra, không phải về một không làm việc chỉ huy. - gertvdijk
"stderr để stdout" ah! Đó là mẹo. Tôi mặc dù tất cả đầu ra cho giao diện điều khiển là như nhau. Cảm ơn bạn đã đánh dấu rằng không phải tất cả đầu ra đều giống nhau. - John Crawford
@gertvdijk nhớ rằng mọi người có xu hướng sao chép-dán mà không biết làm thế nào, cái gì, khi nào, ở đâu, vv;). - Braiam