기본 별칭 "경고"사용


9

기본 별명 경보 는 명령에 대한 것입니다.

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

실행 alert하면 텍스트 경고 및 터미널 아이콘이 포함 된 알림이 표시 됩니다. 하나의 매개 변수로 실행하면 alert !!!!!텍스트 경고 !!!!! 그리고 !!!!! .

따라서 간단한 notify-send명령과 알림 보내기, 에코, 기록, 꼬리 및 sed 를 사용하는이 복잡한 별칭 의 차이점은 무엇 입니까?

어떤 상황 에서이 별칭이 유용하거나 pun을 위해 방금 생성 되었습니까? sudo sudo sudo sudo sudo apt-get install

우분투 12.10을 사용하고 있습니다.


내가 생각할 수있는 유일한 것은 단지 알림을보다 쉽게 ​​만드는 것입니다.
saiarcot895

@ saiarcot895 시도 notify-send Linux Ubuntu는 거의 동일합니다, 유일한 차이점은입니다 alerticon.But 이해가 안 보여 명령이 나오지도 포함 왜 꼬리와 역사
등록 된 사용자

답변:


8

매뉴얼 페이지를 사용하여 여기에 결합 된 명령의 세부 사항을 얻을 수 있습니다. 다음은 이러한 명령의 목적에 대한 것입니다.

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

이것은 실행 상태에 따라 터미널 또는 오류 를 에코 합니다- 마지막 명령 각각에 성공 또는 실패 합니다. 결과는 아이콘을 표시하기위한 -i스위치의 값 notify-send입니다.

history|tail -n1

.. 마지막 명령을 실행합니다.

sed함께 표시 할 텍스트 구문 분석 notify-send메시지를.


이를 이해하려면 다음을 시도하십시오.

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

.. 이것은 터미널 을 에코 합니다.

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

.. 이것은 오류를 에코 합니다 .

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'

과,

echo $?

..는 마지막으로 실행 된 명령의 종료 값을 아는 데 매우 유용합니다.

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

.. 명령 콤보에서 echo사용하기위한 간단한 데모로 설정되었습니다 $().


1
따라서이 별명을 사용하여 명령이 성공적으로 실행되었는지 아니면 GUI 방식으로 실행되는지를 사용자에게 알릴 수 있습니다.
등록 된 사용자

네, 그것은 그래픽으로 사용하여 성공 또는 실패 실행 모두에 대해 알릴 것입니다 notify-send.. 마지막 명령의 종료 상태가의 값으로 체크 $?..I've는 편집이 포함 ..
정확한

7

여기서 무슨 일이 일어나고 있는지 설명해 드리겠습니다.

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 긴급 수준 (낮음, 보통, 위험)을 지정합니다.

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

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

이 부분 "$([ $? = 0 ] && echo terminal || echo error)". $?마지막으로 반환 된 오류 (또는 성공)입니다. 따라서 마지막 명령 종료 코드가 0 인 경우 오류없이 "터미널"텍스트를 반환합니다. 종료 코드가 0이 아닌 경우 "오류"를 반환합니다.

마지막으로 "터미널"또는 "오류"아이콘이 나타납니다.

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

history|tail -n1 기록에서 마지막 명령을 반환합니다.

sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'') 이것은 sed의 2 블록으로 분리 될 수 있습니다.

3.1. sed 's/^\s*[0-9]\+\s*//'앞의 공백과 탭을 모두 제거한 다음 그 뒤에 숫자를 표시하고 끝에 공백과 탭을 제거하십시오.

3.2. s/[;&|]\s*alert$//선행 기호 ; & |, 탭 및 공백 및 단어 "경고"를 제거합니다.

기호에서 마지막으로 실행 된 명령과 끝에 "경고"라는 단어 만 있으면됩니다.

따라서 다음과 같은 것을 사용하면 :

echo "Hello alert" | alert

이전 명령과 함께 경고를 표시합니다.


3

현재 답변 은 경보의 내부 작동 방식 (호기심에서 찾고 싶었고 나를 여기로 데려 간 방법)을 설명한다고 생각합니다 . 그러나 나는 원래의 OP가 그것이 선언의 위의 칭찬을 이해하면서 설명하려고 할 유용한 것이 무엇인지 묻고 있다고 생각합니다 .

기본적으로 터미널이 끝날 때까지 터미널을보고 앉아있을 수 없을 때 명령이 완료되면 경고하는 데 사용됩니다. 권장 예제 에 따라 터미널 아이콘이 성공한 경우 sleep 10; alert( sleep 10이 경우) 명령 알림이 표시됩니다 (sleep 10은 완료하는 데 10 초가 소요됨).

이것으로부터 <command>; alert명령을 명령으로 대체 할 때 사용해야한다는 것을 알 수 있습니다 . 개인적으로 wget을 통해 매일 비디오를 다운로드해야합니다. 주기적으로 실패하기 때문입니다. 따라서 다운로드 명령에 경고를 추가하여 실패했을 때 즉시 알리면 다시 계속할 수 있습니다 (내 경고가 수정되어 경고음이 울립니다).


0

그 이유는 sed, tail그리고 history당신이 입력하는 메시지가 필요하기 때문입니다있다. (어떤 이유로) 입력 한 내용은 변수를 통해 직접 사용할 수 없습니다. 따라서 history입력 한 모든 항목의 목록 tail -n1을 가져와 마지막으로 입력 한 항목을 가져오고 일부 정규 표현식을 사용하여 시작시 "경고"명령을 제거해야합니다.

이것을 확장하기 위해 조건부 명령 $? = 0이있어서 참 인지 테스트 합니다. 내가 알 수있는 것에서, 그것이 사실이라면, 그것은 터미널에서 오는 것이며 정상적인 메시지로 간주되어야합니다. 그렇지 않으면 오류로 간주되고 오류 아이콘이 나타납니다.


경고를 제거하지 않으며 알림에 남아 있습니다.
등록 된 사용자

1
당신이 "어떤 이유로"로 대답한다면 그것은 종종 좋은 대답이 아닙니다;)
Requist

@Requist : $0명령에 대한 첫 번째 주장을 제시 하는 인상을 받았기 때문에 특정 진술에 대해 "어떤 이유로"추가했습니다 . 그러나 별칭의 경우 다를 수 있습니다.
saiarcot895 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.