터미널을 지우고 명령을 사용하여 현재 줄을 저장해야 합니다. 대본에서! (스크립트는 명령에 의해 호출됩니다. 스크립트를 호출하는 이 명령 전에 전체 터미널을 지워야 합니다.) 기록에서 명령을 복원하는 것은 적합하지 않습니다.
예상되는 사용 예:
- "test.sh" 스크립트가 생성되는 중입니다.
- 여기에 수정된 "clear" 명령을 작성합니다.
#!/usr/bin/env bash clear echo some text
- 적용하다
현재 터미널 상태:
'test.sh' 실행 후 현재 결과:
문제는 무엇입니까? 명령어가 포함된 줄이 사라진 사실 + vscode는 스크립트 오류 코드와 함께 왼쪽 체크 표시가 표시되지 않습니다.
예상 결과:
어떻게 하나요?
추신:
문제는 vscode 뿐만 아니라 다른 터미널에서도 명령어가 완전히 지워지는 문제입니다
답변1
일방 통행
실제 프롬프트가 필요한 경우 다음과 같은 커서 조작을 사용할 수 있습니다.
#!/bin/bash
# Save cursor position
printf '\033[s'
# Move the cursor up 1 line
printf '\033[1A'
# Clear the screen
printf '\033[1J'
# Restore cursor position
printf '\033[u'
echo "new thing"
위의 예에 더 많은 조정이 필요한 경우 예를 참조하세요.ANSI 이스케이프 시퀀스:커서 이동그리고 또한ANSI 이스케이프 시퀀스그 이상을 위해.
또 다른 방법
clear
원하는 경우 계속 사용할 수 있으며 나중에 다음과 같이 프롬프트를 다시 그릴 수 있습니다.
#!/bin/bash
# Clear the screen
clear
# Build the prompt as it was before "clear"
line="$(printf '%s' "$USER@$HOSTNAME:$PWD$ $0")"
# For "root" prompt i.e. "#", comment out the above line and uncomment the below line
# line="$(printf '%s' "$USER@$HOSTNAME:$PWD# $0")"
# Print the prompt
echo "${line/\/home\/$USER/\~}"
echo "new thing"
아니면 다음과 같이 해도 됩니다:
#!/bin/bash
clear
line="$USER@$HOSTNAME:$PWD$ "
read -t 0.01 -ei "$(echo "$0")" -p "${line/\/home\/$USER/\~}"
echo
echo "new thing"
겉모습은 기만적이지만, 겉모습은 당신이 원하는 것일 수도 있습니다. 하지만 실제 프롬프트는 아닙니다.
답변2
귀하의 질문은 그다지 clear
(아이러니하게도 귀하가 사용하려는 명령입니다) 아니지만 어쨌든 대답하려고 노력할 것입니다.
명령을 사용하여 스크립트를 호출하고(라고 가정 ./myscript
) 스크립트가 실행되기 전에 화면을 지우고 싶다는 것이 내 이해입니다.
이 작업은 두 가지 방법으로 수행할 수 있습니다.
화면을 지우고 스크립트를 실행합니다.
$ clear; ./myscript
clear
스크립트의 첫 번째 줄에 다음 명령을 입력하세요 .#!/bin/bash # Beginning of ./myscript clear # The rest of the script goes here
그런 다음 스크립트를 실행하면 화면이 지워지고 다른 작업을 계속할 수 있습니다.
$ ./myscript
마지막으로 화면을 지우고 마지막 명령을 다시 실행하는 별칭을 만들려면 다음을 정의할 수 있습니다.
alias clrun='clear; $(fc -ln -1)'
그런 다음 실행하면 clrun
정확히 다음과 같은 작업이 수행됩니다. 화면을 지운 다음 이전 명령을 다시 실행합니다.
이것이 귀하의 질문에 대한 답변이 되지 않는다면, 귀하가 원하는 것이 무엇인지 훨씬 더 정확하게 설명해야 합니다.