"수정이 필요한데 file-i-must-edit-2
어디에 있는지 기억이 나지 않습니다."
locate file-i-must-edit
/home/user/file-i-must-edit-1
/home/user/file-i-must-edit-2
/home/user/file-i-must-edit-3
"좋아요! 다시 입력하는 것을 피할 수 있는 방법이 있었으면 좋겠어요 /home/user/file-i-must-edit-2
..."
nano /home/user/file-i-must-edit-2
이런 식으로 입력하면 입력을 피할 수 있는 방법이 있나요
nano <output line 2>
?
답변1
한 줄의 출력만 얻는다면 간단합니다.
locate file-i-must-edit
nano $(!!)
더 많은 줄이 있을 때 사용할 수 있는 기술이 있지만 원래 명령을 다른 방식으로 실행하는 것이 포함됩니다(항상 실행하고 싶지는 않을 것입니다).
$ touch a b c
$ OUT=( $(find .) )
$ echo ${OUT[2]}
./b
입력을 피하기 위해 할 수 있는 한 가지 방법은 이전 명령을 반복하고(물론 readline을 사용하여) 범위를 좁혀 한 줄만 얻은 다음 실행 nano $(!!)
하거나 xargs
.
답변2
이는 프로그래밍 방식의 접근 방식입니다(X-Windows 선택에 마우스를 사용하는 것과 비교).
# function to nano edit a line (by number) from $list
nano-n() { nano "$(sed -n "$1{p;q}" <<<"$list")"; }
# As you produce your list of files, save them to a variable ($list),
# as well as printng them to the terminal.
# Do this by "duplicating" descriptor 1 (stdout) to
# another available descriptor (eg. 9)
exec 9>&1; list="$(locate file-i-must-edit |tee /dev/fd/9)"
# now you can just type the following at the propmt (assuming that $list is available at the prompt)
nano-n 2