프롬프트에 활동 한계 시간 표시

나는 18:00이 되면 가동할 수 없게 되는 데다, 히키잔가 뾰루어이므로 남은 시간으로 표시하려고 합니다.

실시간 타이머도 아니기 때문에 현재 시간을 표시하는 계의 변종입니다.
시간 계산 힘들었다-비망록.

완제품





eva.fish
function eva
    set now   (date +%s)
    set limit (date -d '18:00' +%s)
    set remaining (expr $limit - $now)

    set sec (expr $remaining \% 60)
    set min (expr \( $remaining \% 3600 \) / 60)
    set hrs (expr $remaining / 3600)

    printf "%d:%02d:%02d" $hrs $min $sec
end

프롬프트 표시는 단순히 함수를 echo하면 됩니다.

fish_right_prompt.fish
function fish_right_prompt
    if [ $status -eq 0 ]
        set_color magenta
        echo "(゚ー゚*)  "
    else
        set_color blue
        echo "(=ω=.) "
    end
    if not set -q __fish_prompt_regalias
        # グローバルにしないと毎回変わるよ
        set -g __fish_prompt_regalias (regalias)
    end
    echo (eva |golor)" "
    set_color cyan
    echo "$__fish_prompt_regalias"
    #set_color yellow
    #echo -n $USER
    #set_color normal
    #echo -n '@'
    #set_color red
    #hostname
end

편집 번거롭기 때문에 지금 사용하고 있는 것을 붙였습니다만,echo (eva) 에 OK

함수명이 eva인 것은


에반게리온풍 카운트다운 – edius…?

정시 이후 일하고 싶지 않다는 것으로
움직임이 멈추는 이미지 + 콜론으로 구분 된 카운트 다운 표시 = EVA
이었다.

S2 기관도 없습니다.

츠마즈키



오늘 18시 요구되지 않는 문제



검색에서date -d '10 day'등 단어로 포맷을 지정하는 것만이 걸렸기 때문에 유추로부터 date 의 유연성에 베팅해date -d '18:00'에서 잡혔다. 이것으로 「오늘의」가 전제가 되는 것은 살아난다.

시간 뺄셈



ShellScript 날짜 조작의 가난함에 울었습니다 ...

쉘 스크립트로 시간 계산을 한 사람 앞에 해소 - Qiita

쉘 스크립트가 존경받는 이유 중 하나. 그것은 시간 계산 기능이 약한 곳이다.

감기에 걸린, 쉘 스크립트로 시간차 찾기 - Days of Speed(2013-01-07)

이것으로 +%s 로 UNIX 시간으로 변환할 수 있어 단순한 뺄셈으로 차초를 도출할 수 있는 것을 알았다.
    set now   (date +%s)
    set limit (date -d '18:00' +%s)
    set remaining (expr $limit - $now)

초 수의 H:i:s화



차이의 초는 UNIX 시간과는 관계가 없으므로, 이것을 UNIX 시간으로 변환하면 1970년에 타임 슬립 해 버린다.

그렇지만 시간은 시간이므로 간단하게 변환해 준다고 생각했는데, 자작해야 하는 것처럼…

몇 가지 있었지만 이것을 채택했다.

bash 수식에서 초 수를 HH:MM:SS 형식으로 변환 - Qiita
i=6789
((sec=i%60, min=(i%3600)/60, hrs=i/3600))
timestamp=$(printf "%d:%02d:%02d" $hrs $min $sec)
echo $timestamp
    set sec (expr $remaining \% 60)
    set min (expr \( $remaining \% 3600 \) / 60)
    set hrs (expr $remaining / 3600)

    printf "%d:%02d:%02d" $hrs $min $sec

이스케이프 문제


expr 의 식이 통과하지 않아서 망설였다.

fish?



이미 코드에서 볼 수 있듯이 %를 이스케이프해야합니다.

expr



또한, () 역시 이스케이프해야 하며, 더 앞뒤로 공백을 붙여야 한다.

expr은 평상시 사용하지 않기 때문에, 집어 들었다.

expr 대체 찾기 문제


expr 사용법 찾기

쉘에서 변수의 증가에 expr을 사용하면 100 배 느린 건 - Qiita

를 찾아서, 그럼 ((...))
Bash $((산술식)) 모두 - A 기본편 - Qiita

대안을 찾는 것도 찾을 수 없습니다 ...

fish에서 bash let을 호출하여 조금 계산 - Qiita

fish에서는, 계산은 기본적으로 math 커멘드에 해 받게 되어 있습니다.

math:bc를 소환하여 강력한 수치 계산! expr은 필요 없다.

커맨드 라인상에서 계산하는 방법 정리 【UNIX】【Windows】 | 바샤로그.

최근에 하고 있는 fish 에는, math 라고 하는 커멘드가 준비되어 있습니다.math 를 사용하면, expr 보다 고도의 계산을 할 수 있습니다.

내가하고 싶은 것은 고급 계산이 아닌 단순한 사칙 연산의 낮은 계산 때문입니다.

그 경우, 주로 속도면에서 math 를 채용하는 이점을 기사 단위로 찾아낼 수 없었기 때문에 expr 그대로 둡니다.
이 길도 좀처럼 시간을 썼다.

좋은 웹페이지 즐겨찾기