bash 스크립트 내에서 vim을 여는 방법은 무엇입니까?

자클

스크립트 내에서 어떻게 vim을 열 수 있습니까?
코딩 과제를 채점하고 코드와 메모 파일을 열기위한 스크립트를 작성해야하는데 vim이 열리지 않습니다.

스크립트는 본질적으로 이것의 더 멋진 버전입니다.

#!/bin/bash
echo -e "$student_files" | while read student do
   vim -o $student
done

#each "$student" looks like: "file1 file2 [...] notes"

그러나 vim은 다음에 대해 불평합니다.

Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

왜 이런 일이 일어나고 어떻게 해결할 수 있는지 말해 줄 수 있습니까? 미리 감사드립니다 :)

참고 : 루프 없이 스크립트에서 vim을 실행 해 보았지만 작동하는 이유를 모르겠습니다. 내가 파이핑하고 있기 때문에 그럴 것 같아요

잉고 카르 캇

파이프 라인 때문에 표준 입력은 while루프에 대해 리디렉션됩니다 . 여기에는 vim.

항상 터미널에서 입력을 받고 싶기 때문에 터미널에 다시 연결하면됩니다 /dev/tty.

< /dev/tty vim -o "$student"

또는 파이프 라인 ( ) 으로 이동하기 전에 stdin을 파일 설명자에 저장 exec 6<&0하고 Vim ( <&6 vim -o ...)에 전달할 수 있습니다. (이것은 또한 Vim 명령의 "매크로 기록"이 파일에 저장되고 기록 된 입력을 다시 파이핑하여 Vim 자체를 자동화하려는 경우를 처리합니다.)

또는 먼저 전체 파일 내용을 Bash 배열 ( readarray) 로 읽은 다음 간단한 for루프 를 사용하여 파이프 라인을 완전히 제거 할 수 있습니다. 이것은 더 많은 메모리를 소비하지만, 제한 요인이 아니라 순차적으로 처리 할 Vim 세션 수입니다 .-) 실제로 여기에서 파일을 읽는 것이 아니라 변수에서 읽는 것이기 때문에 문제가되지 않습니다. 내용 (내가 이해하는 바와 같이 잠재적으로 여러 줄에 공백으로 구분 된 학생이 있음-기본 IFS구문 분석은 개별 학생으로 분할합니다) 따라서 필요한 것은 Bash 배열로 간단한 단어 분할입니다 .

declare -a students=($student_files)
for student in "${students[@]}"
do
    vim -o "$student"
done

또는 중간 배열을 완전히 건너 뜁니다.

for student in $student_files
do
    vim -o "$student"
done

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Bash 스크립트에서 KDE5 데스크탑 알림을 보내는 방법은 무엇입니까?

분류에서Dev

bash 스크립트 내에서 루프에서 쉘 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

명령 줄을 사용하여 Terminator에서 bash 스크립트를 여는 방법은 무엇입니까?

분류에서Dev

bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 여러 줄 입력을 읽는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 여러 줄 문에 주석을 추가하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 vim-tab과 같은 짧은 경로를 얻는 방법은 무엇입니까?

분류에서Dev

Bash, 스크립트에서 여러 폴더의 파일 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 데스크탑 환경을 감지하는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 터미널 스크롤을 비활성화하는 방법은 무엇입니까?

분류에서Dev

여러 파일을 Bash 스크립트에 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 사용자 입력을 다듬는 방법은 무엇입니까?

분류에서Dev

bash 쉘 스크립트에서 찾은 줄과 줄을 인쇄하는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 소스 파일을 호출하는 방법은 무엇입니까?

분류에서Dev

Bash 스크립트에서 GitHub 작업에 대한 출력을 생성하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 컬러 출력을 얻는 방법은 무엇입니까?

분류에서Dev

bash 쉘 스크립트에서 조건부 if 문을 작성하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 컬러 출력을 얻는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 문자열을 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

Python 스크립트에서 Bash 변수로 값을 반환하는 방법은 무엇입니까?

분류에서Dev

Mac의 Python 스크립트에서 Bash 기록을 삭제하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 다음 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 "ssh -O check"의 출력을 이해하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 배열 값을 비교하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서이 하위 문자열을 얻는 방법은 무엇입니까?

분류에서Dev

getopts에서 bash 스크립트로 파이프 된 stdout을 출력하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 httpd.conf로 값을 변경하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 날짜와 시간을 한 줄로 인쇄하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Bash 스크립트에서 KDE5 데스크탑 알림을 보내는 방법은 무엇입니까?

  2. 2

    bash 스크립트 내에서 루프에서 쉘 명령을 실행하는 방법은 무엇입니까?

  3. 3

    명령 줄을 사용하여 Terminator에서 bash 스크립트를 여는 방법은 무엇입니까?

  4. 4

    bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

  5. 5

    bash 스크립트 내에서 명령을 실행하는 방법은 무엇입니까?

  6. 6

    Bash 스크립트에서 여러 줄 입력을 읽는 방법은 무엇입니까?

  7. 7

    Bash 스크립트에서 여러 줄 문에 주석을 추가하는 방법은 무엇입니까?

  8. 8

    bash 스크립트에서 vim-tab과 같은 짧은 경로를 얻는 방법은 무엇입니까?

  9. 9

    Bash, 스크립트에서 여러 폴더의 파일 이름을 바꾸는 방법은 무엇입니까?

  10. 10

    bash 스크립트에서 데스크탑 환경을 감지하는 방법은 무엇입니까?

  11. 11

    Bash 스크립트에서 터미널 스크롤을 비활성화하는 방법은 무엇입니까?

  12. 12

    여러 파일을 Bash 스크립트에 변수로 전달하는 방법은 무엇입니까?

  13. 13

    Bash 스크립트에서 사용자 입력을 다듬는 방법은 무엇입니까?

  14. 14

    bash 쉘 스크립트에서 찾은 줄과 줄을 인쇄하는 방법은 무엇입니까?

  15. 15

    Bash 스크립트에서 소스 파일을 호출하는 방법은 무엇입니까?

  16. 16

    Bash 스크립트에서 GitHub 작업에 대한 출력을 생성하는 방법은 무엇입니까?

  17. 17

    bash 스크립트에서 컬러 출력을 얻는 방법은 무엇입니까?

  18. 18

    bash 쉘 스크립트에서 조건부 if 문을 작성하는 방법은 무엇입니까?

  19. 19

    bash 스크립트에서 컬러 출력을 얻는 방법은 무엇입니까?

  20. 20

    bash 스크립트에서 문자열을 배열로 변환하는 방법은 무엇입니까?

  21. 21

    Python 스크립트에서 Bash 변수로 값을 반환하는 방법은 무엇입니까?

  22. 22

    Mac의 Python 스크립트에서 Bash 기록을 삭제하는 방법은 무엇입니까?

  23. 23

    bash 스크립트에서 다음 명령을 실행하는 방법은 무엇입니까?

  24. 24

    bash 스크립트에서 "ssh -O check"의 출력을 이해하는 방법은 무엇입니까?

  25. 25

    bash 스크립트에서 배열 값을 비교하는 방법은 무엇입니까?

  26. 26

    bash 스크립트에서이 하위 문자열을 얻는 방법은 무엇입니까?

  27. 27

    getopts에서 bash 스크립트로 파이프 된 stdout을 출력하는 방법은 무엇입니까?

  28. 28

    bash 스크립트에서 httpd.conf로 값을 변경하는 방법은 무엇입니까?

  29. 29

    bash 스크립트에서 날짜와 시간을 한 줄로 인쇄하는 방법은 무엇입니까?

뜨겁다태그

보관