Sử dụng bí danh mặc định Cảnh báo Cảnh sát


9

Thông báo bí danh mặc định là cho lệnh

notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"

Thực hiện alertđưa ra một thông báo với nội dung cảnh báo và một biểu tượng thiết bị đầu cuối. Thực hiện nó với một alert !!!!!thông số như đưa ra thông báo bằng văn bản Thông báo !!!!! !!!!! .

Vì vậy, sự khác biệt giữa notify-sendlệnh đơn giản và bí danh phức tạp này sử dụng thông báo gửi, tiếng vang, lịch sử, đuôi và sed là gì?

Trong trường hợp nào thì bí danh này hữu ích hoặc nó chỉ được tạo ra để chơi chữ (Một cái gì đó giống như sử dụng sudo sudo sudo sudo sudo apt-get install

Tôi đang sử dụng Ubuntu 12.10


Điều duy nhất tôi có thể nghĩ là chỉ để tạo một thông báo dễ dàng hơn ... có thể?
saiarcot895

@ saiarcot895 hãy thử notify-send Linux Ubuntunó giống nhau, sự khác biệt duy nhất là alerthiển thị một biểu tượng. Nhưng tôi không hiểu tại sao lệnh chứa sed, đuôi và lịch sử
Người dùng đã đăng ký

Câu trả lời:


8

Bạn có thể sử dụng các trang man để biết chi tiết về những gì các lệnh kết hợp ở đây làm. Dưới đây là một chút về mục đích của các lệnh ở đây:

"$([ $? = 0 ] && echo terminal || echo error)"

Điều này sẽ lặp lại terminal hoặc lỗi theo trạng thái thực thi - thành công hoặc thất bại tương ứng của lệnh cuối cùng; và kết quả là giá trị -ichuyển đổi notify-sendđể hiển thị các biểu tượng.

history|tail -n1

.. để có được lệnh cuối cùng được thực thi.

sedphân tích văn bản để hiển thị nó với notify-sendthông điệp.


Để hiểu những điều này hãy thử như sau:

true; echo "$([ $? = 0 ] && echo terminal || echo error)"

.. điều này sẽ lặp lại thiết bị đầu cuối .

false; echo "$([ $? = 0 ] && echo terminal || echo error)"

.. điều này sẽ báo lỗi .

notify-send -i terminal 'Please note the icon..' 'the default icon for the terminal has been used. You can specify any other icon of your choice'

Và,

echo $?

.. rất hữu ích để biết giá trị thoát của lệnh cuối cùng được thực thi.

echo "$(echo "the output of this command enclosed within \$(...)") is being supplied here in the outer echo command where is used as an argument."

..nested echonhư một bản demo đơn giản để sử dụng $()trong một kết hợp lệnh.


1
vì vậy bí danh này có thể được sử dụng để báo cho người dùng biết lệnh được thực thi thành công hay thất bại, nhưng theo cách GUI.
Người dùng đã đăng ký

vâng, nó sẽ thông báo về cả hai lần thực hiện thành công hoặc không thành công bằng đồ họa bằng cách sử dụng notify-send.. trạng thái thoát của lệnh cuối cùng được kiểm tra với giá trị của .. Tôi đã $?bao gồm điều này trong chỉnh sửa ..
chính xác là

7

Hãy để tôi cố gắng giải thích những gì đang xảy ra ở đây:

notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"

1 --urgency=low

-u, --urgency = LEVEL Chỉ định mức độ khẩn cấp (thấp, bình thường, quan trọng).

2 -i "$([ $? = 0 ] && echo terminal || echo error)" .

  -i, --icon=ICON[,ICON...]
         Specifies an icon filename or stock icon to display.

Phần này "$([ $? = 0 ] && echo terminal || echo error)". $?là lỗi cuối cùng (hoặc thành công) được trả về. Vì vậy, nó trả về văn bản "terminal" nếu mã thoát lệnh cuối cùng là 0, không có lỗi. Hoặc trả về "lỗi" nếu mã thoát không bằng 0.

Và cuối cùng chúng ta nhận được biểu tượng "terminal" hoặc "error".

3 $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')

history|tail -n1 trả về lệnh cuối cùng từ lịch sử.

sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'') điều này có thể được tách ra trong 2 khối sed.

3.1. sed 's/^\s*[0-9]\+\s*//'xóa tất cả các khoảng trắng và tab trước đó, tất cả các số sau đó, đồng thời xóa các khoảng trắng và tab ở cuối.

3.2. s/[;&|]\s*alert$//xóa các ký hiệu trước ; & |, bất kỳ tab và khoảng trắng và từ "cảnh báo".

Nó chỉ là lệnh được thực hiện cuối cùng từ các ký hiệu và từ "cảnh báo" ở cuối.

Vì vậy, nếu bạn sử dụng một số thứ như thế này:

echo "Hello alert" | alert

Nó sẽ hiển thị cảnh báo với lệnh trước đó.


3

Tôi nghĩ rằng các câu trả lời hiện tại giải thích cách hoạt động bên trong của hoạt động cảnh báo (đó là điều tôi muốn tìm hiểu vì tò mò và điều đó đã đưa tôi đến đây). Nhưng tôi nghĩ rằng OP ban đầu yêu cầu những gì hữu ích mà tôi sẽ cố gắng giải thích khi tôi hiểu từ những tuyên bố trên tuyên bố của nó.

Về cơ bản, nó được sử dụng để thông báo cho bạn khi một lệnh kết thúc khi bạn không thể ngồi xem thiết bị đầu cuối trong suốt thời gian chờ đợi nó hoàn thành. Theo ví dụ khen ngợi sleep 10; alertsẽ hiển thị thông báo của lệnh ( sleep 10trong trường hợp này) với biểu tượng đầu cuối nếu thành công (ngủ 10 sẽ mất 10 giây để hoàn thành).

Từ đó bạn có thể thấy rằng nó nên được sử dụng như là <command>; alertnơi bạn thay thế lệnh bằng lệnh của bạn. Cá nhân tôi phải tải xuống video hàng ngày qua wget vì nó bị lỗi định kỳ. Vì vậy, tôi chỉ cần thêm lệnh tải xuống với cảnh báo để thông báo ngay cho tôi khi không thành công để có thể tiếp tục lại (cảnh báo của tôi được sửa đổi thành tiếng bíp để thu hút sự chú ý của tôi).


0

Lý do sed, tailhistorycó là bởi vì nó cần để nhận được tin nhắn mà bạn đã gõ. (Vì một số lý do,) những gì bạn đã nhập không có sẵn trực tiếp thông qua bất kỳ biến nào. Do đó, nó phải được sử dụng historyđể lấy danh sách mọi thứ bạn đã nhập, tail -n1để lấy thứ cuối cùng bạn đã nhập và một số biểu thức chính quy để thoát khỏi lệnh "cảnh báo" khi bắt đầu.

Chỉ cần mở rộng về điều này, có một lệnh có điều kiện trong đó kiểm tra xem $? = 0có đúng không. Từ những gì tôi có thể nói, nếu nó là sự thật, thì nó đến từ thiết bị đầu cuối, và nên được coi là một tin nhắn bình thường. Nếu không, nó sẽ được coi là một lỗi và biểu tượng lỗi sẽ xuất hiện.


Nó không thoát khỏi cảnh báo , nó sẽ vẫn còn trong thông báo.
Người dùng đã đăng ký

1
Nếu bạn trả lời với "vì một số lý do" thì đó thường không phải là một câu trả lời hay;)
Người yêu cầu

@Requist: Tôi đã thêm "vì một số lý do" cho câu lệnh cụ thể đó bởi vì tôi có ấn tượng $0mang đến cho bạn đối số đầu tiên cho một lệnh. Nó có thể khác trong trường hợp bí danh.
saiarcot895
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.