프롬프트에서 명령 줄 바꿈

프롬프트에서 명령 줄 바꿈

프롬프트에서 명령 뒤에 구분 기호를 삽입할 수 있습니까? 이것은 예입니다:

~/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루프 문의 항목 간 등 스크립트의 여러 부분을 구분합니다 . 스크립트 출력을 훨씬 쉽게 읽을 수 있습니다.

관련 정보