명령을 프롬프트에 래핑합니다.

명령을 프롬프트에 래핑합니다.

프롬프트에서 명령 뒤에 구분 기호를 삽입할 수 있습니까? 예는 다음과 같습니다.

~/Desktop: ls -al
-------------------------------------
total 80
drwx------+  6 eddie  staff   204B Apr 29 16:57 .
drwxr-xr-x+ 54 eddie  staff   1.8K Apr 30 10:54 ..

~/Desktop:

구체적으로, 명령과 결과를 더 쉽게 구분할 수 있도록 명령을 실행한 후 --------- 부분을 추가하고 싶습니다.

답변1

zsh에서는 후크 기능을 정의할 수 있습니다.preexec각 명령을 실행하기 전에 지정된 문자열을 에코합니다.

Bash에서는 DEBUG트랩을 사용하여 동일한 작업을 수행하는 사전 실행 후크를 설정할 수 있습니다.

다음과 같이 preexec() 함수를 정의할 수 있습니다.

preexec () { echo "-------------------------------"; }
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return  # do nothing if completing
    preexec
}
trap 'preexec_invoke_exec' DEBUG

자세한 내용 보기bash에는 명령을 실행하기 전에 실행되는 후크가 있습니까?

나는 이것이 모든 버전의 bash에서 작동한다고 생각하지 않습니다. bash 3.2.39(1)을 실행하는 이전 Ubuntu 서버에서는 help trap다음과 같이 표시됩니다.

SIGNAL_SPEC이 DEBUG인 경우 ARG를 실행합니다.뒤쪽에모든 간단한 명령.

bash 4.1.2(1)을 실행하는 다른 서버에서는 다음과 같이 표시됩니다.

SIGNAL_SPEC이 DEBUG인 경우 ARG를 실행합니다.앞으로모든 간단한 명령.

그게 우리에게 필요한 전부입니다. 따라서 귀하의 bash 버전에 help trap"앞으로모든 간단한 명령. "

답변2

쉘이 bash 또는 ksh를 사용하는 경우 다음과 같이 도트 파일(.profile, .bash_profile 등) 중 하나에 함수를 생성할 수 있습니다.

function hr {
    echo "--------------------------------------------------------------------------------"
}

&&그런 다음 해당 구분 기호를 사용 하거나 명령 구분 기호로 사용할 때마다 명령 앞에 ;해당 구분 기호를 추가할 수 있습니다 . 좋다:

bash-[534]$ hr && ls
--------------------------------------------------------------------------------
ddtool_23.jnlp  prtconf-pv

또는

bash-[536]$ hr ; ls -la
--------------------------------------------------------------------------------
total 36K
drwxr-xr-x  2 tim staff    4 2012-12-06 15:02 ./
drwxr-xr-x 46 tim staff  134 2013-04-30 14:59 ../
-rw-------  1 tim staff 2.7K 2012-12-06 15:00 ddtool_23.jnlp
-rw-r--r--  1 tim staff  24K 2012-12-06 15:02 prtconf-pv

나는 이것을한다. 또한 더 두꺼운 구분 기호를 인쇄하는 두 번째 기능도 있습니다.

function hr2 {
    echo "================================================================================"
}

hr2나는 종종 쉘 스크립트에서 이러한 함수를 사용하여 주요 작업 간, hr루프 문의 항목 간 등 스크립트의 여러 부분을 분리합니다 . 스크립트 출력을 더 쉽게 읽을 수 있습니다.

관련 정보