현재 줄에 명령을 더 적게 적용하시겠습니까?

현재 줄에 명령을 더 적게 적용하시겠습니까?

우리가 나열했다고 가정 /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, 하지만:

  1. 원하는 행을 맨 위에 놓고 ma(또는 두 번째 문자의 경우 다른 문자)를 누르세요.
  2. k또는 를 사용하여 한 줄 위로 스크롤합니다 Up.
  3. 을 누른 |후 원하는 문자를 눌러 a위의 문자를 바꾸세요.
  4. 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

이를 달성하는 한 가지 방법은 다음과 같습니다.

  1. 원하는 선택 시작 위치로 이동합니다(예: 검색).
  2. mX그 뒤에는 설정 표시임을 나타내는 문자가 나옵니다 .
  3. 선택 항목의 끝으로 이동합니다.
  4. |X!(이렇게 하면 표준 입력에서 선택하는 명령을 작성해야 하는 프롬프트 로 전환됩니다 .
  5. 명령어를 입력하고 누르세요.RET

관련 정보