Linux에서 fold 명령을 사용하는 방법

0
800
Linux PC의 쉘 프롬프트
Fatmawati Achmad Zaenuri / 셔터 스톡

리눅스 fold 명령은 발 뒤꿈치에 엉뚱한 출력을 가져옵니다. 출력 너비를 제어하여 넓은 텍스트 청크, 끝없는 문자열 및 형식화되지 않은 스트림을 읽습니다. 어떻게하는지 배우다.

리눅스 터미널에서 텍스트 라인 작동 방식

리눅스 전투의 첫 번째 규칙 : 적을 아십시오. 정의 해 봅시다. 정확히 한 줄의 텍스트는 무엇입니까? 문자, 숫자, 기호 및 공백과 같은 일련의 문자이며 “새 줄 시작”을 의미하는 특수 바이트로 끝납니다. Linux 및 Unix에서는 줄 바꿈이라고도하는 줄 바꿈 문자가 줄 끝 표시기로 사용됩니다. 16 진수 0x0a, 10 진수 10 바이트의 바이트입니다.

다른 운영 체제는 다른 바이트 값을 사용하여 행의 끝을 나타냅니다. Windows는 2 바이트 시퀀스를 사용합니다. Windows 텍스트 파일에서 줄 바꿈 문자 바로 뒤에는 캐리지 리턴 문자가옵니다. 16 진수는 0x0d이고 10 진수는 13입니다.

“줄 바꿈”및 “캐리지 리턴”이라는 용어는 타자기로 거슬러 올라갑니다. 종이를 감싼 실린더 인 압반을 이동 가능한 캐리지에 장착했다. 키를 누를 때마다 캐리지가 한 문자 너비를 왼쪽으로 이동했습니다. 새 줄을 시작하려면 캐리지를 원래 위치로 되돌려 놓은 롤러를 돌리고 한 줄의 높이만큼 용지를 위로 이동시키는 레버를 밉니다. 이 동작을 캐리지 리턴이라고하며 실린더의 회전 (및 용지 전진)을 줄 바꿈이라고했습니다.

타자기가 통전 될 때 레버가 키로 교체되었습니다. 키는 캐리지 리턴 또는 리턴으로 표시되었습니다. BBC Micro still과 같은 일부 초기 컴퓨터는 Return 우리가 지금 무엇에 전화 Enter 키.

줄 바꿈 문자는 일반적으로 볼 수 없습니다. 당신은 그들의 볼 수 있습니다 효과. 개행 문자는 텍스트를 표시하거나 처리하는 소프트웨어가 새 행을 시작하도록합니다.

그러나 긴 줄의 문제점은 무엇입니까?

줄 바꿈 문자가 없거나 거의없는 텍스트는 너무 커서 터미널 창에서 편안하게 읽을 수 없습니다. 짜증나지만 할 수 있습니다.

보다 치명적인 문제는 텍스트를 처리, 전송 또는 수신해야하는 소프트웨어에 문제를 일으킬 수있는 길이의 행을 처리해야한다는 것입니다. 내부 버퍼 길이 또는 조정할 수없는 소프트웨어의 다른 측면 때문일 수 있습니다.

하지만 그에 대한 해결책이 있습니다. fold.

접는 첫 단계

매우 긴 줄이있는 텍스트 부분을 살펴 보겠습니다. 여기서는 문장에 대해 이야기하지 않습니다. (텍스트는 허먼 멜빌의 모비 딕 (Moby Dick)에서 온 것이지만, 우리는 두 가지 장점을 모두 갖추고 있습니다.)

한 줄의 텍스트는 마지막 줄 바꿈 문자 (또는 파일의 첫 줄인 경우 파일의 시작)부터 다음 줄 바꿈 문자까지의 모든 내용입니다. 줄에는 많은 문장이 포함될 수 있습니다. 터미널 창에서 여러 번 감쌀 수 있습니다. 하지만 여전히 단일 텍스트 줄.

텍스트를 원래 형태로 살펴 보겠습니다.

less moby-dick.txt

터미널 창에서 덜 moby-dick.txt

텍스트가 less:

터미널 창에 Moby Dick이 적게 표시됩니다

텍스트가 창의 한쪽 끝에서 다른 쪽 끝까지 뻗어 있고 줄 바꿈이보기 흉하고 가운데 단어가 깨집니다.

짧은 줄의 다른 버전의 파일이 있습니다.

less short-lines-moby-dick.txt

터미널 창에서 short-lines-moby-dick.txt

이 파일의 줄은 훨씬 짧습니다. 각 줄은 개행 문자로 끝납니다.

터미널 창에 짧게 표시되는 Moby Dick의 짧은 버전

우리가 hexdump 명령에서 파일 내 바이트 값을보고 개행 문자를 볼 수 있습니다. 그만큼 -C (정규) 옵션은 출력을 형식화하여 화면의 본문에 16 진 값을 표시하고 측면의 열에 해당하는 텍스트를 표시합니다. 출력을 파이프에 연결합니다 less:

hexdump -C short-lines-moby-dick.txt | less

hexdump -C short-lines-moby-dick.txt | 터미널 창에서 덜

슬래시 “/”입력합니다 less의 검색 기능. “0a”를 입력하고 Enter. 개행 문자는 텍스트에서 강조 표시됩니다. 파일을 스크롤하여 파일이 나타나는 위치를 볼 수 있습니다. 필요한 경우 다음을 사용하여 출력을 옆으로 스크롤 할 수 있습니다. Left ArrowRight Arrow 열쇠.

줄 바꿈 문자가 강조 표시된 터미널 창에서 16 진수 덤프의 출력이 적습니다.

각 줄의 끝에 줄 바꿈 문자를 갖는 것은 그 자체로 제한 될 수 있습니다. 이 텍스트를 표시하는 프로그램이나 창에 관계없이 선 자체보다 너비가 더 넓은 창에 선을 적용 할 수 없습니다. 줄 길이가 줄 바꿈 문자로 표시되었습니다.

따라서 긴 줄과 짧은 줄에 모두 문제가 있습니다.

긴 줄 줄이기

그만큼 fold 명령에는 옵션이 있습니다 -w 텍스트 너비의 새로운 최대 너비를 지정할 수 있습니다. 최대 너비가 50자인 Moby Dick 텍스트가 표시됩니다.

fold -w 50 moby-dick.txt

터미널 창에서 -w 50 moby-dick.txt를 접습니다.

새로운 최대 파일 길이와 함께 텍스트가 터미널 창에 표시됩니다. 원본 파일은 변경되지 않습니다. 의 출력입니다 fold 그것은 재 포맷되었습니다.

터미널 창에서 최대 50 자 길이로 표시되는 Moby Dick 텍스트를 사용하여 접기에서 출력

언뜻보기에 이것은 훨씬 좋아 보입니다. 그러나 단어는 여전히 줄 끝에서 중간에 나뉘어지고 있습니다. 읽기가 더 쉽지만, 어색한 단어 나누기는 엉망입니다.

텍스트의 오른쪽 여백이 들어오고 나가는 것처럼 보이지만 모든 줄 길이는 같습니다. 나머지 문자보다 한 문자가 짧은 것처럼 보이는 줄은 공백 문자로 끝납니다.

공간에서 선 나누기

우리는 사용할 수 있습니다 -s (공백) 옵션은 행이 공백 문자로만 분할되고 두 행에 걸쳐 단어가 분리되지 않도록합니다.

fold -w 50 -s moby-dick.txt

터미널 창에서 -w 50 -s moby-dick.txt를 접습니다.

결과물에 오른쪽 마진이 울퉁불퉁하지만 읽기가 더 쉽습니다. 모든 단어는 그들이 시작한 줄에서 끝납니다.

터미널 창에서 fold -w 50 -s moby-dick.txt의 출력

짧은 줄을 더 길게 만들기

긴 줄을 짧게 만들뿐 아니라 fold 짧은 줄의 강제 줄 길이를 제거합니다.

fold -w 75 short-lines-moby-dick.txt

터미널 창에서 -w 75 short-lines-moby-dick.txt

줄 바꿈 문자가 제거되고 이제 텍스트가 할당 된 최대 길이 또는 그 이전에 줄 바꿈됩니다.

터미널 창에서 접기 -w 75 short-lines-moby-dick.txt의 출력

영구적 인 변경

fold 원본 파일을 수정할 수 없습니다. 변경 사항을 유지하려면에서 출력을 리디렉션해야합니다. fold 새 파일로. 출력을 “modified-moby-dick.txt”라는 파일로 리디렉션합니다.

fold -w 75 -s short-lines-moby-dick.txt > modified-moby-dick.txt

fold -w 75 -s short-lines-moby-dick.txt> 터미널 창에서 수정 된 moby-dick.txt

새 파일을 살펴 보겠습니다.

less modified-moby-dick.txt

터미널 창에서 덜 수정 된 moby-dick.txt

새 파일은 어떻게 보입니까?

터미널 창에서 덜 수정 된 moby-dick.txt

텍스트가 이제 새로운 줄 너비로 깔끔하게 줄 바꿈되어 원본 파일의 줄 길이보다 넓습니다.

스트림과 함께 접기 사용

사용할 수있다 fold 텍스트 스트림을 다시 포맷합니다. 파일로만 작업하도록 제한되지 않습니다. 원시 출력에서 journalctl 도구처럼 보입니다. 그만큼 -f (따라) 옵션은 최신 항목을 보여줍니다 systemd 새로운 항목이 도착하면 저널 및 업데이트.

sudo journalctl -f

터미널 창에서 sudo journalctl -f

출력은 터미널 창의 가장자리에서 줄 바꿈됩니다.

터미널 창에서 sudo journalctl -f의 출력

너무 나빠 보이지는 않지만 시연을 위해 너비를 약간 줄이십시오. 우리는 출력을 파이프합니다 journalctl 으로 fold. 최대 너비를 65 자로 설정하고 공백에서만 줄을 끊습니다.

sudo journalctl -f | fold -w 65 -s

sudo journalctl -f | 터미널 창에서 -w 65 -s를 접습니다.

디스플레이는 덜 압도적이고 터치도 깔끔해 보입니다.

sudo journalctl -f의 출력 | 터미널 창에서 -w 65 -s를 접습니다.


단단한 텍스트의 벽은 뚫을 수없는 것처럼 보일 수 있습니다. 그들은 다루기 힘들어하고 잔소리하고 있습니다. 나무에서 나무를 볼 수 있어야한다면 fold 약간의 질서를 부과합니다.