SSH를 통해 컴퓨터에 연결 ssh machine
하여 실행하면 yum list
설치된 모든 항목이 예상대로 출력됩니다. 중요한 점은 각 항목이 다음과 같이 한 줄에 있다는 것입니다.
xz-devel.i386 4.999.9-0.3.beta.20091007git.el5 base
xz-devel.x86_64 4.999.9-0.3.beta.20091007git.el5 base
xz-libs.i386 4.999.9-0.3.beta.20091007git.el5 base
xz-lzma-compat.x86_64 4.999.9-0.3.beta.20091007git.el5 base
그러나 이 작업을 원격으로 수행하거나 ssh machine 'yum list'
서버의 grep으로 파이프하는 경우 yum list | grep xz -C 3
출력 줄은 다음과 같이 "잘려지고" 짧아집니다.
xz-devel.i386 4.999.9-0.3.beta.20091007git.el5
base
xz-devel.x86_64 4.999.9-0.3.beta.20091007git.el5
base
xz-libs.i386 4.999.9-0.3.beta.20091007git.el5
base
xz-lzma-compat.x86_64 4.999.9-0.3.beta.20091007git.el5
base
이렇게 선 크기가 줄어드는 것을 방지하려면 어떻게 해야 합니까? 나의 궁극적인 소망은 이것을 파이프 tee
한 다음 ansible을 통해 모든 호스트에 대한 출력 파일에 대해 일부 처리를 수행하는 것입니다.
SSH/파이프라인의 일부인 일종의 "가상 터미널"로 인해 이런 일이 발생하는 것 같습니다. 연결이 끊어진 상태에서 실행 중인 터미널의 크기를 줄이면 동일한 동작을 얻을 수 있기 때문입니다 yum list
. 그래서 파이프를 추가하면 yum list
너비가 X 열에 불과하다는 것을 터미널에 알릴 수 있다고 가정합니다.
답변1
모든이 답변@thrig가 댓글에 제공한 대로 다음을 수행하여 올바르게 출력되도록 할 수 있었습니다.
yum list installed | xargs -n3 | column -t
답변2
unbuffer(1)와 함께 제공되는 예상을 설치하고 다음을 실행합니다.
# unbuffer yum repolist
답변3
오늘(수술 중) 이 문제로 어려움을 겪었고 yum check-update
하나를 찾고 있습니다."CLOSED NOTABUG" 버그질라 보고서그리고 다양한파이썬 팁, 나는 또 다른 해결 방법을 생각해 냈습니다.
script -q -c "stty cols 150; yum check-update" /dev/null > /path/to/output.txt 2>&1
또는:
script -q -c "stty cols 150; yum check-update" /path/to/output.txt > /dev/null
150은 패킹을 방지하기에 충분한 임의의 큰 숫자입니다. 필요한 경우 위쪽으로 조정합니다. -q
이 옵션은 비어 있지 않은 출력 파일 이름을 사용하는 경우 초기 "$(date)에 스크립트 시작" 줄을 억제합니다.
원래 질문의 경우 줄은 다음과 같습니다.
script -q -c "stty cols 150; yum list" /dev/null
답변4
이 repoquery
명령을 사용하여 구문 분석 가능한 출력을 생성할 수 있습니다. 예를 들어:
repoquery '*' --queryformat='%{name} %{evr} %{from_repo}' | column -t
다음을 제공합니다:
0ad 0.0.23b-13.fc32 fedora
0ad 0.0.23b-17.fc32 updates
0ad-data 0.0.23b-4.fc32 fedora
0xFFFF 0.8-3.fc32 fedora
2048-cli 0.9.1-9.fc32 fedora
2048-cli-nocurses 0.9.1-9.fc32 fedora
2048-cli-sdl 0.9.1-9.fc32 fedora
2ping 4.3-6.fc32 fedora
2ping 4.5-1.fc32 updates
389-ds-base 1.4.3.18-1.fc32 updates
... 등.
( dnf
/ 와 달리 yum
repoquery는 출력에서 중복 패키지를 제거하지 않습니다)