이름이 공백 a b
인 c d
,, 및 e f
. 그리고 vi
처음 두 파일을 편집하는 데 사용하고 싶습니다 . 내가 원하는 bash 명령은
vi "a b" "c d"
또한 첫 번째 명령의 매개 변수를 대체 할 수 있도록를 ls
사용하여 명령 의 처음 두 줄을 얻고 싶습니다 head
.
ls | head -n 2
그러나을 실행하면 내부 출력 이 공백과 줄 바꿈으로 분할 되기 때문에 원하는 vi $(ls | head -n 2)
것과 동일 vi a b c d
하지 않습니다 $()
. 개행으로 만 출력을 분할하는 방법이 있습니까?
개행으로 만 출력을 분할하는 방법이 있습니까?
예, IFS
개행으로 설정합니다 (기본적으로 공백, 탭 및 개행을 포함 함) :
IFS=$'\n'
vi $(ls | head -n 2)
( $''
비표준이지만 Bash / ksh / zsh에서 작동하며 대안보다 훨씬 더 예쁘다.)
즉, 파일 이름에 glob 문자가 포함될 수 있다는 문제가 여전히 있습니다. globbing을 비활성화하려면 set -f
먼저 사용 set +f
하고 다시 활성화해야합니다. 또한 파일 이름에 줄 바꿈이 포함되어 있으면 작동하지 않지만 알고 있었을 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다