우리가 나열했다고 가정 /usr/bin
하면 ls
다음과 같습니다.
CC file2c man sscop
Mail find mandoc ssh
addftinfo finger manpath ssh-add
addr2line flex merge ssh-agent
...
하지만 을 사용할 수도 있습니다 ls -1
. 다음을 얻습니다.
CC
Mail
addftinfo
addr2line
afmtodit
alias
apply
apropos
...
한 줄에 하나씩 모든 파일 이름 목록이 포함되어 있습니다. 출력 구조는 다음과 같습니다: 파일 이름, 개행 문자( \n
),...
이것을 다음으로 파이프할 수 있습니다 less
.ls -1 | less
이제 현재 줄에 포함된 문자열에 명령을 쉽게 적용할 수 있을까요?
정확히 어떻게 수행되었는지는 중요하지 않으며 단지 단계 수가 적어야 한다는 것뿐입니다. 이는 더 적은 양을 사용하거나 !
(불가능해 보입니까?) 다음과 같이 수행할 수 있습니다.어떻게든현재 행에 포함된 문자열을 쉘 변수 등에 넣습니다.
물론 Xorg에서는 쉽습니다. 마우스 가운데 버튼을 사용하여 붙여넣기만 하면 됩니다. 하지만 텍스트 모드에서는할 수 있는덜 복잡한 방법으로 하시겠습니까?
답변1
당신은 그것을 사용할 수 있습니다|
주문하다파일의 일부를 다른 프로그램을 통해 전송하지만 해당 부분에는 항상 최소한 두 줄이 있습니다. 마크와 함께 해킹할 수 있습니다.tail
, 하지만:
- 원하는 행을 맨 위에 놓고 ma(또는 두 번째 문자의 경우 다른 문자)를 누르세요.
- k또는 를 사용하여 한 줄 위로 스크롤합니다 Up.
- 을 누른 |후 원하는 문자를 눌러 a위의 문자를 바꾸세요.
- input
tail -n 1 | ...
,...
이 줄을 표준 입력으로 사용하는 명령은 어디에 있습니까?
tail -n 1
우리가 관심을 갖는 두 번째 행만 제공합니다. ...
라인이 원하는 대로 하도록 하세요.
표준 입력 대신 해당 행을 명령에 대한 인수로 사용하려면 다음을 수행하십시오.사용 xargs
또는 다른 포장지:
tail -n 1 | xargs ls -l
명령이 아무 것도 표시하면 화면에 계속 표시되지 않지만 less
다시 파이프할 수 있습니다.
tail -n 1 | xargs ls -l | less
이는 중첩이 됩니다 less
. 종료하고 원래 상태로 돌아가서 less
프로세스를 반복할 수 있습니다.
명령이 텍스트 편집기처럼 대화형이고 표준 입력이 파이프되거나 비어 있는 것을 좋아하지 않는 경우 다음을 사용할 수 있습니다.sh
중간 프로세스는 명령을 실행하고 tty를 다시 엽니다.
xargs sh -c 'vim "$@" < /dev/tty' sh
BSD 에도 동일한 작업을 수행할 수 있는 옵션이 xargs
있습니다 .-o
답변2
이를 달성하는 한 가지 방법은 다음과 같습니다.
- 원하는 선택 시작 위치로 이동합니다(예: 검색).
- mX그 뒤에는 설정 표시임을 나타내는 문자가 나옵니다 .
- 선택 항목의 끝으로 이동합니다.
- |X
!
(이렇게 하면 표준 입력에서 선택하는 명령을 작성해야 하는 프롬프트 로 전환됩니다 . - 명령어를 입력하고 누르세요.RET