파일 보기
Peach Commander에는 다른 앱을 열거나 파일을 바꾸지 않고 파일 내부를 들여다보게 해 주는 기본 제공 뷰어가 있습니다. 커서 아래 항목에서 F3을 누르면 매우 큰 파일이라도 뷰어가 즉시 열립니다. 내용을 보여 줄 가장 좋은 방법을 자동으로 고릅니다: 읽기 좋은 텍스트, 구문 색이 입혀진 코드, 원시 16진수 덤프, 또는 원본 크기 이미지. Quick View로 창 안에서 바로 미리 보거나 macOS Quick Look에 넘길 수도 있습니다.
파일 보기¶
- 활성 패널에서 파일로 커서를 옮깁니다.
- F3을 누릅니다(또는 파일 메뉴에서 보기 선택). 뷰어가 자체 창에서 열립니다.
- 도구 막대로 내용을 보여 주는 방식을 전환합니다: 텍스트, 코드, 16진수, 이미지, 렌더링. 자동 설정으로 두면 Peach Commander가 결정합니다.
- 화살표 키, Page Up/Page Down, 스크롤 막대로 스크롤합니다. 긴 텍스트는 미니맵 버튼을 켜서 파일 전체를 한눈에 보고 이동합니다.
- N을 눌러 다음 선택 파일로 이동하거나 Esc로 창을 닫습니다.
(그림: 도구 막대에 표현 선택기와 미니맵이 있는 텍스트 파일 보기.)
텍스트 찾기 및 인코딩 변경¶
- Ctrl+F를 눌러 파일 안을 검색합니다. F3으로 다음 일치, Shift+F3으로 이전 일치로 이동합니다.
- 찾기 상자에서 정규 표현식을 체크하면 일반 텍스트 대신 패턴으로 검색합니다 —
ERROR \d+, 또는 그 말로 시작하는 행을 찾는^Warning.^와$는 행의 시작과 끝을 뜻합니다. 컴파일되지 않는 패턴은 그대로 알려 주며, 조용히 아무것도 찾지 못하는 일은 없습니다. - 아주 큰 파일은 겹치는 창 단위로 검색하므로, 약 64KB보다 긴 하나의 일치가 창 경계에 정확히 걸치면 놓칠 수 있습니다. 일반 텍스트 검색에는 그런 한계가 없고, 더 짧은 것에 일치하는 패턴도 마찬가지입니다.
- 텍스트가 깨져 보이면 도구 막대의 인코딩을 클릭하거나(또는 E를 눌러) 올바르게 읽힐 때까지 텍스트 인코딩을 순환합니다. 자동 설정이 보통 맞습니다.
- W를 눌러 긴 줄의 자동 줄바꿈을 전환합니다.
- Ctrl+G를 누르면 줄로, 16진수 모드에서는 바이트 오프셋으로 이동합니다. 진법을 섞은 계산식을 쓸 수 있어
0x1000 + 15 + 1은 4112로 이동합니다 — 16진수는0x,$또는 끝의h, 2진수는0b, 8진수는0o, 그리고 괄호와 함께+ - * /를 사용합니다. - 텍스트 찾기를 채운 파일 찾기 결과를 열면 뷰어가 그 검색으로 시작합니다: 텍스트가 이미 찾기 막대에 있고 첫 번째 일치가 화면에 보이므로, 파일 처음이 아니라 일치 지점에서 시작합니다. 거기서 고치거나 지우면 여러분이 남긴 것이 유지됩니다. 모든 파일을 처음부터 열고 싶다면 설정 ▸ 편집/보기에서 끌 수 있습니다.
바이너리 파일의 문자열 읽기¶
16진수 표현에서는 도구 모음이 문자열을 제공합니다. 파일 안에서 읽을 수 있는 모든 텍스트 구간을, 그것이 놓인 오프셋과 어떤 방식으로 디코딩되었는지와 함께 나열하는 패널입니다. 행을 클릭하면 16진수 보기가 해당 바이트로 이동해 선택하므로, 이어지는 동작 — 선택 항목을 …으로 복사하거나 주변을 그냥 읽는 것 — 이 클릭한 문자열에 적용됩니다.
- 네 가지 해석이 동시에 실행됩니다: ASCII, UTF-8, UTF-16 리틀엔디언, UTF-16 빅엔디언. 그래서 Windows 실행 파일의 와이드 문자열과 일반 문자열이 각각 별도의 검사를 요구하지 않고 하나의 목록에 나타납니다. Latin-1도 인코딩 아래에 있지만 처음에는 꺼져 있습니다. 모든 바이트 값의 4분의 3이 출력 가능한 Latin-1이어서 컴파일된 코드가 그 해석을 대량으로 통과하기 때문입니다.
- 같은 바이트가 둘 이상의 인코딩으로 읽히는 경우는 흔합니다. 두 해석이 같은 범위를 주장하면 가장 텍스트처럼 읽히는 쪽이 이깁니다. 따라서
Hello는 한 번만 나열되며, 같은 바이트를 둘씩 묶어 읽었을 때 나오는 표의문자 쌍으로 또 나열되지는 않습니다. - 최소 길이는 구간이 얼마나 짧아도 여전히 인정되는지를 정합니다. 네 글자가 보통의 출발점이며, 큰 바이너리에서는 목록을 솎아 내기 위해 높이십시오.
- 필터 필드는 파일을 다시 읽지 않고 표시 범위만 좁히므로 아주 큰 파일에서도 즉시 반응합니다. 길이나 인코딩을 바꾸면 다시 읽는데, 그것들은 무엇이 문자열로 인정되는지를 바꾸기 때문입니다.
- 인코딩 아래의 가능성이 낮은 문자열도 표시는 단지 출력 가능하기만 한 것을 모두 더합니다 — 주로 라틴 문자가 아닌 UTF-16 텍스트를 포함하며, 이는 바이트만으로는 두 바이트씩 읽은 평범한 텍스트와 구별할 수 없어 일반 목록에서 빠지는 것입니다.
그림 확대/축소¶
이미지 표시에서는 그림을 창에 맞춰 열고, 작은 그림은 억지로 늘리지 않고 원래 크기로 둡니다.
| 동작 | 메뉴 | 키 |
|---|---|---|
| 확대 | 보기 ▸ 확대 | Cmd++ / + |
| 축소 | 보기 ▸ 축소 | Cmd+- / - |
| 실제 크기(100%) | 보기 ▸ 실제 크기 | Cmd+0 / 0 |
| 창에 맞추기 | 보기 ▸ 창에 맞추기 | Cmd+9 / F |
트랙패드에서 오므리거나 벌리는 동작, Cmd를 누른 채 스크롤도 됩니다. 비율은 상태 줄에 표시되며 실제 크기는 화면 한 점당 이미지 한 픽셀을 뜻합니다 — 단순히 “확대를 되돌리기”가 아닙니다. 창에 맞추기는 창을 따라갑니다: 크기를 바꿔도 그림은 맞춰진 상태로 남습니다.
행에 대한 메모¶
메모 플러그인이 설치되어 있으면 메모를 파일 전체가 아니라 파일의 특정 행에 달 수 있습니다.
- 커서를 해당 행에 놓고 보기 ▸ 이 행에 메모…(Cmd+Shift+N)를 선택하십시오. 메모 편집기가 제목에 파일 이름과 행 번호를 표시한 채 열립니다.
- 이미 메모가 달린 행은 창 아래쪽 표시 패널에 메모 그룹으로 검색 표시와 나란히 나타납니다. Cmd+Ctrl+M으로 패널을 열고, 항목을 두 번 클릭하면 해당 행으로 이동합니다.
- 메모 자체는 다른 모든 메모와 함께 저장되므로 메모 개요와 파일 찾기가 똑같이 찾아냅니다. 삭제는 메모 편집기에서 하며, 패널의 닫기 단추는 그룹을 숨길 뿐입니다.
Quick View와 Quick Look¶
Quick View는 사용하지 않는 패널에 실시간 미리 보기를 표시하므로, 한쪽에서 계속 탐색하면서 다른 쪽에서 미리 볼 수 있습니다.
- Ctrl+Q를 누릅니다. 비활성 패널이 미리 보기 영역으로 바뀝니다.
- 활성 패널에서 여러 파일 위로 커서를 옮겨 각각을 미리 봅니다.
- Ctrl+Q를 다시 누르거나 Esc를 눌러 패널을 일반 파일 목록으로 되돌립니다.
빠른 보기의 그림에는 사이드 패널 미리보기와 같은 확대/축소 버튼이 있습니다 — 차지한 패널의 구석에 표시됩니다.
macOS 자체가 처리하는 빠른 전체 화면 미리 보기는 Cmd+Y(Quick Look)를 누릅니다. Cmd+Y나 Space를 다시 누르면 닫힙니다.
사이드 패널의 정보 페이지¶
사이드 패널(보기 > 미리보기 패널 또는 Cmd+Shift+P)에는 커서 아래 항목을 Finder의 정보 사이드바처럼 보여 주는 정보 페이지가 있습니다.
- 미리보기는 패널의 가로폭을 가득 채웁니다. 패널을 넓히면 미리보기도 함께 커집니다. 패널의 왼쪽 가장자리를 끌어 넓히거나 좁힐 수 있으며, 너비는 기억됩니다.
- 작은 축소판이 아니라 실제 macOS 미리보기입니다. 훑어보기가 표시할 수 있는 모든 형식이 여기서도 동작하며, 여러 쪽짜리 문서는 미리보기 안에서 쪽 단위로 넘길 수 있습니다.
- 그림에는 미리보기 구석에 자체 확대/축소 버튼이 있습니다 — 축소, 확대, 실제 크기, 창에 맞추기 — 그 옆에 현재 비율이 표시되고, 오므리기/벌리기와 Cmd+스크롤도 동작합니다. 미리보기가 그리는 그 밖의 것들, 예컨대 PDF나 동영상은 지금까지와 같습니다.
- 그 아래에는 이름, 종류, 크기가 있고, 이어서 만든 날짜와 수정한 날짜, 그리고 어느 폴더에 있는지가 표시됩니다.
커서를 옮기면 이름과 세부 정보는 즉시 갱신되고, 미리보기는 잠시 뒤에 따라옵니다. 그래서 긴 폴더에서 화살표 키를 누르고 있어도 지나가는 줄마다 미리보기가 시작되지는 않습니다.
사이드 패널이 제공하는 페이지¶
사이드 패널은 처음에 정보 페이지만 표시합니다. 활동(아직 진행 중인 전송)과 로그(완료된 전송)는 꺼져 있습니다. 대부분의 작업에서는 이 둘이 필요하지 않은데, 켜 두면 세 개의 탭이 늘어선 띠가 하루 종일 미리보기 위를 차지하기 때문입니다.
- 설정 > 레이아웃의 사이드 패널 페이지에서, 탭 띠를 오른쪽 클릭해서, 또는 보기 > 사이드 패널: 정보 / 활동 / 로그에서 켤 수 있습니다.
- 페이지가 하나만 남으면 패널은 탭 띠를 아예 없앱니다. 정보만 있는 패널은 미리보기와 세부 정보뿐이고 그 위에는 아무것도 없습니다.
- 정보를 포함해 모든 페이지를 끌 수 있습니다. 여기에 터미널이나 플러그인 뷰를 두는 경우에 쓸모가 있습니다. 아무것도 남지 않은 패널은 빈 화면으로 열리는 대신 그 사실을 알려 줍니다.
- 플러그인이 제공하는 페이지는 영향을 받지 않습니다. 그런 페이지는 플러그인과 함께 나타나고 사라지며, 끄는 일은 플러그인 페이지가 담당합니다.
- 보기 > 레이아웃 재설정은 창의 나머지 구성 요소와 함께 페이지를 정보 하나로 되돌립니다.
보기 메뉴 항목은 보이는 것보다 중요합니다. 모든 페이지를 끄면 오른쪽 클릭할 탭 띠가 남지 않으므로, 이 항목들이 돌아오는 길입니다.
Java 클래스 파일 디컴파일¶
Java Decompiler 플러그인을 켜면 .class 파일에서 F3을 누를 때 이진 데이터 대신 읽을 수 있는 코드가 표시됩니다. JAR이나 ZIP 안의 클래스 파일도 마찬가지로, 압축을 풀지 않고 들어가서 볼 수 있습니다.
플러그인 자체에는 디컴파일러가 없습니다. 사용자가 설치한 엔진을 구동할 뿐이며, 엔진은 언제든지 바꿀 수 있습니다.
- CFR(MIT 라이선스)과 Vineflower(Apache 2.0)는 Java 소스를 만들어 냅니다.
cfr.jar또는vineflower.jar를 엔진 폴더에 넣으십시오. - Procyon(Apache 2.0)은 소스를 만들어 내는 세 번째 디컴파일러입니다.
- javap는 내려받을 것이 전혀 없습니다. 모든 JDK에 들어 있으며, Java 소스가 아니라 바이트코드를 보여 줍니다.
아무것도 대신 내려받지 않습니다. 이들은 각자의 라이선스를 가진 서드파티 프로그램이며, Peach Commander는 이를 가져오지도 갱신하지도 않습니다. 뷰어의 엔진 폴더… 버튼은 이들이 놓일 폴더를 열고, 각 엔진의 이름과 구할 곳을 적은 메모를 남깁니다. javap를 제외하면 모두 Java가 설치되어 있어야 합니다.
엔진은 뷰어 상단의 메뉴로 바꿉니다. 선택한 엔진이 즉시 사용되고 결과는 보관되므로, 같은 파일에서 두 엔진을 비교하는 일이 즉시 이루어집니다.
소스에는 구문 강조가 적용되며, 두 버튼이 그다음을 맡습니다. 다른 이름으로 저장…은 파일로 쓰고, 편집기에서 열기는 Mac에서 .java를 여는 프로그램에 넘깁니다. 결과가 매우 크면 잠시 기다리게 하는 대신 강조 없이 바로 표시하며, 그럴 때는 상태 줄에 표시됩니다.
결과는 디스크에 캐시되므로 전에 본 파일을 다시 열면 즉시 표시됩니다. 캐시 키에는 파일의 크기와 날짜, 그리고 엔진 인자가 들어가므로 다시 빌드한 클래스나 바뀐 옵션은 새로 디컴파일됩니다. 선택한 엔진은 파일 종류별로 기억됩니다. 프로필은 extends = cfr로 내장 엔진을 상속하고 옵션만 덮어쓸 수 있어, 같은 엔진의 설정을 두 가지로 유지할 때 편리합니다.
비교를 켜면 자체 엔진 메뉴를 가진 두 번째 창이 열립니다. 두 디컴파일러는 서로 다른 지점에서 실패하므로, 어느 쪽을 믿을지 고민하기보다 나란히 보는 편이 빠를 때가 많습니다. 한쪽에서 javap를 고르면 바이트코드가 소스 옆에 놓입니다. 두 창은 캐시를 공유하므로 이미 실행한 엔진 사이를 오가는 것은 즉시 이루어집니다.
.jar, .apk, .dex 전체에 F3을 누르면 한 번에 모두 디컴파일하고 소스 옆에 패키지 트리를 보여줍니다. 트리 위의 검색 필드는 모든 클래스를 훑습니다. 어느 클래스에 있는지 아직 모를 때 문자열이나 호출, 상수가 실제로 어디에 나오는지 — 클래스 하나로는 답할 수 없는 바로 그 질문입니다. 일치한 항목만 트리에 남고 첫 번째는 해당 줄에서 열립니다. Enter로는 여전히 JAR이 압축 파일로 열립니다. 두 동작은 그대로 분리되어 있습니다.
더 직접적인 두 번째 방법이 있습니다. .class 파일이나 압축 파일 전체에 커서를 두고 소스로 디컴파일을 고르십시오 (명령 메뉴, 컨텍스트 메뉴, 또는 ⌘⇧J). 클래스가 디컴파일되고 결과는 반대쪽 파일 패널에 평범한 .java 파일로 열립니다. 그 뒤로는 파일 관리자 전체가 그대로 쓰입니다. F3은 Peach Commander 자체의 자바 강조로 보여주고, Alt+F7은 그 파일들을 가로질러 검색하며, F5는 밖으로 복사하고, 비교나 태그도 다른 파일과 똑같습니다. 대부분의 작업에서는 이것이 별도 창보다 낫습니다. 그래서 플러그인의 트리는 설정 ▸ 디컴파일러에서 끌 수 있습니다.
두 번째 플러그인이 .NET에 같은 일을 합니다. 관리 .dll, .exe, .winmd에 F3을 누르면 그 타입들을 C#으로 보여주고, 어셈블리를 소스로 디컴파일(⌘⇧N)은 그것들을 파일 패널에 넣으며, 검색도 같은 방식으로 어셈블리 안을 들여다봅니다. 소스에는 ILSpy(MIT, dotnet tool install -g ilspycmd)를, IL에는 Mono의 monodis를 씁니다 — javap의 .NET 짝입니다. 네이티브 .dll은 확장자가 같고 보여줄 소스가 없으므로, 플러그인이 열기 전에 확인하고 내장 뷰어에 맡깁니다.
설정 페이지에는 엔진 검사 버튼이 있고, 눌러 볼 만합니다. 다른 곳의 “설치됨”은 파일이 있다는 뜻일 뿐이며, JDK 없는 맥의 자바 엔진은 존재하지만 실행되지 않습니다. 이 검사는 각 엔진에 버전을 물어보고 실제로 동작하는 것이 무엇인지 알려 줍니다.
안드로이드도 지원합니다. .dex 파일에서 F3을 누르면 jadx(Apache 2.0, brew install jadx)가 Dalvik 바이트코드를 다시 Java로 되돌립니다. 이를 위해 필요한 것은 엔진 설명 한 개였습니다 — 같은 방식, 다른 형식입니다.
플러그인은 켜기 전까지 꺼져 있습니다(설정 ▸ 플러그인). 대부분은 .class 파일을 열 일이 없고, 엔진이 없으면 쓸모도 없기 때문입니다.
직접 만든 엔진을 추가하려면 엔진 폴더에 decompilers.ini를 만드십시오.
[myengine]
name = My Decompiler
kinds = class
tool = java
args = -jar {engine} {input}
engine = my-decompiler.jar ; a bare name is looked up in this folder
output = stdout
timeout = 30 ; seconds before the engine is stopped
{input}, {engine}, {outdir}는 실행 시 채워집니다. 사용자가 적은 항목이 기본 항목보다 우선하며, 기본 이름(cfr, vineflower, procyon, javap)을 다시 쓰면 항목이 하나 더 생기는 대신 그것을 대체합니다.
단축키¶
| 동작 | 단축키 |
|---|---|
| 커서 아래 파일 보기 | F3 |
| 커서 아래 파일만 보기(표시된 파일 무시) | Shift+F3 |
| 외부 뷰어에서 열기 | Option+F3 |
| 뷰어 안에서 찾기 | Ctrl+F |
| 커서가 있는 행에 메모 | Cmd+Shift+N |
| 표시 패널 열기/닫기 | Cmd+Ctrl+M |
| 다음 / 이전 일치 | F3 / Shift+F3 |
| 다른 패널에서 Quick View | Ctrl+Q |
| Quick Look(macOS 미리 보기) | Cmd+Y |
| 뷰어 또는 Quick View 닫기 | Esc |
참고¶
- 뷰어는 읽기 전용입니다. 파일을 바꾸려면 편집기를 사용하세요(파일 편집 참조).
- 매우 큰 파일도 지연 없이 열립니다: 텍스트는 빠르게 스크롤되는 보기로 열리고, 16진수 보기는 크기에 상관없이 디스크에서 바로 스트리밍됩니다.
- 폴더에서 F3을 누르면 파일 바이트 대신 내용 요약과 총 크기를 봅니다.
- 렌더링 모드는 웹 페이지 같은 서식 있는 내용을 표시하고, 16진수 모드는 원시 바이트를 해당 문자와 나란히 보여 주어 이진 파일을 살펴보는 데 편리합니다.
- 렌더링 모드에서도 텍스트를 선택해 복사할 수 있고, 찾기는 렌더링된 페이지를 검색합니다. 렌더링된 페이지에 적용할 수 없는 버튼 — 서식, 인코딩, 모두 선택, 선택 항목, 이동 — 은 아무 일도 하지 않는 대신 흐리게 표시됩니다.
- 서식 버튼은 구조화된 파일(JSON, XML, HTML, INI, YAML 및 해당 명령줄 도구가 설치되어 있으면 그 밖의 형식)의 들여쓰기를 다시 맞춥니다. 자세한 설명은 파일 편집에 있으며, 여기서도 같은 방식으로 동작합니다.