2016.02.11

OS X 파워 유저를 위한 알짜배기 터미널 명령 10가지

Paul Venezia | InfoWorld


이미지 출처 : Thinkstock

OS X 명령줄(command line)은 터미널(Terminal) 앱을 통해 사용할 수 있는 기능이다. 윈도우의 명령 프롬프트와 마찬가지로 일반 사용자 대부분은 이름만으로도 주눅이 든다. 정말 불가피한 상황에서나 마지못해 사용하는 기능이다. 명령줄은 PC를 복구할 수 없는 문제가 발생했을 때 시스템에 직접 명령어를 전송해 동작을 유도하는 것이다. 물론 이런 경우라도 일반 사용자가 쓰는 명령은 launchd 서비스를 재시작하거나 plist 파일을 제거하는 등 제한된 경우가 대부분이다.

유닉스 셸(Unix shell)에 익숙한 사용자라면 이 명령줄 혹은 터미널을 이미 강력한 툴로 이용하고 있을 수도 있다. OS X는 BSD 코어에 기반을 두고 있으므로 한 줄 명령어만으로 다양한 작업을 할 수 있다. 번잡한 GUI 툴 없이도 디렉토리 구조를 보거나 30일 이상이 지난 모든 파일을 삭제하고, 디렉토리에서 특정 텍스트 행을 포함한 모든 파일 목록을 불러오는 것 등이 가능하다. 그래픽 인터페이스는 많은 작업을 간소화하는 유용한 유틸리티지만, 일부 작업은 오히려 더 복잡해지기도 한다. 이런 문제를 해결해주는 것이 바로 명령줄이다.

이처럼 OS X 속에는 파워 유저도 잘 모르는 숨겨진 보석이 숨어 있다. 여기 명령줄로 동작하는 10가지 흥미로운 기능을 소개해본다. 매우 유용하고 어떤 경우에는 재미있기까지 하다.

1. pbcopy와 pbpaste (클립보드에 복사하거나 붙여넣기)
pbcopy와 pbpaste는 서로 짝을 이뤄 동작하는 유틸리티다. 시스템 클립보드/페이스트보드와 명령줄 사이의 상호 이동을 구현하는 역할을 한다. 예를 들어 특정 디렉토리 안에서 이름이 'f'로 시작하는 모든 파일을 골라내 그 목록을 클립보드에 목록화하려면 다음과 같이 입력하면 된다.

$ ls f* | pbcopy

이 한 줄만으로 간단히 결과를 도출해 어떤 GUI 앱에도 붙여넣을 수 있다. 반대도 마찬가지다. 클립보드 안에 타 앱에서 불러온 파일 목록이 있으면 이번에는 다음처럼 pbpaste 작업을 처리할 수 있다.

$ pbpaste | grep foo

이 명령줄은 grep 명령을 이용해 foo 열이 포함된 행을 추출한다. 이 두 명령은 명령줄과 GUI를 오가는 작업을 진행할 때 특히 유용하다.

2. rsync (파일, 디렉토리 동기화)
rsync 기능은 같은 시스템 내 폴더 혹은 로컬 및 원격 시스템 내의 폴더 사이에 디렉토리 트리를 동기화한다. 이는 지난 수년 간 IT의 보루 역할을 해 온 매우 유용한 기능이며, OS X에도 역시 포함돼 있다. 두 디렉토리 트리를 같게 유지하려면 로컬 시스템에서 rsync를 적용하는 것만으로 작업을 완료할 수 있다.

$ rsync -av /path/to/directory1/ /path/to/directory/2/

이는 /path/to/directory1/ 내의 모든 파일이 /path/to/directory2/에도 똑같이 존재하도록 하라는 의미다. 아예 두 디렉토리를 완전히 같게 만들고 싶을 경우에는 /path/to/directory2/ 내의 파일 중 /path/to/directory1/에 존재하지 않는 파일은 전부 지워버리도록 다음과 같이 rsync 명령을 이용하면 된다.

$ rsync -av --delete /path/to/directory1/ /path/to/directory2/

동기화 과정에서 파일이 리스트화되기를 원하지 않는다면, v 플래그만 지우면 된다.

$ rsync -a --delete /path/to/directory1/ /path/to/directory2/

또는, 어떤 파일이 복사됐고 어떤 것이 제거됐는지 확인하고 싶다면 다음처럼 n을 추가하면 된다.

$ rsync -avn --delete /path/to/directory1/ /path/to/directory2/

서로 다른 시스템 간에도 rsync를 이용할 수 있다. 다만 이를 위해선 원격 시스템에 rsync가 설치돼 있어야 하고, SSH를 구동 중이어야 한다. 명령어는 다음과 같다.

$ rsync -av --delete /path/to/directory1/ user@remotesystem:/path/to/directory1/

여기서 중요하게 봐야 할 부분은 맨 마지막에 넣은 사선(/)이다. 이 사선은 rsync가 소스 디렉토리 내 파일을 읽어 그것을 종착 디렉토리로 동기화함을 나타내는 기호다. 이를 빠뜨리면 rsync는 소스 디렉토리를 통째로 종착 디렉토리로 복제해 결과적으로 추가적인 디렉토리 층위를 만든다.

맥에서 SSH 접속을 구현하려면, ‘시스템 환경설정’의 ‘공유' 메뉴에서 ‘원격 로그인'을 활성화해야 한다. 이를 통해 사용자는 SSH로 맥으로 rsync를 연결하거나 SSH를 이용해 시스템 셸에 연결할 수 있다.
 



2016.02.11

OS X 파워 유저를 위한 알짜배기 터미널 명령 10가지

Paul Venezia | InfoWorld


이미지 출처 : Thinkstock

OS X 명령줄(command line)은 터미널(Terminal) 앱을 통해 사용할 수 있는 기능이다. 윈도우의 명령 프롬프트와 마찬가지로 일반 사용자 대부분은 이름만으로도 주눅이 든다. 정말 불가피한 상황에서나 마지못해 사용하는 기능이다. 명령줄은 PC를 복구할 수 없는 문제가 발생했을 때 시스템에 직접 명령어를 전송해 동작을 유도하는 것이다. 물론 이런 경우라도 일반 사용자가 쓰는 명령은 launchd 서비스를 재시작하거나 plist 파일을 제거하는 등 제한된 경우가 대부분이다.

유닉스 셸(Unix shell)에 익숙한 사용자라면 이 명령줄 혹은 터미널을 이미 강력한 툴로 이용하고 있을 수도 있다. OS X는 BSD 코어에 기반을 두고 있으므로 한 줄 명령어만으로 다양한 작업을 할 수 있다. 번잡한 GUI 툴 없이도 디렉토리 구조를 보거나 30일 이상이 지난 모든 파일을 삭제하고, 디렉토리에서 특정 텍스트 행을 포함한 모든 파일 목록을 불러오는 것 등이 가능하다. 그래픽 인터페이스는 많은 작업을 간소화하는 유용한 유틸리티지만, 일부 작업은 오히려 더 복잡해지기도 한다. 이런 문제를 해결해주는 것이 바로 명령줄이다.

이처럼 OS X 속에는 파워 유저도 잘 모르는 숨겨진 보석이 숨어 있다. 여기 명령줄로 동작하는 10가지 흥미로운 기능을 소개해본다. 매우 유용하고 어떤 경우에는 재미있기까지 하다.

1. pbcopy와 pbpaste (클립보드에 복사하거나 붙여넣기)
pbcopy와 pbpaste는 서로 짝을 이뤄 동작하는 유틸리티다. 시스템 클립보드/페이스트보드와 명령줄 사이의 상호 이동을 구현하는 역할을 한다. 예를 들어 특정 디렉토리 안에서 이름이 'f'로 시작하는 모든 파일을 골라내 그 목록을 클립보드에 목록화하려면 다음과 같이 입력하면 된다.

$ ls f* | pbcopy

이 한 줄만으로 간단히 결과를 도출해 어떤 GUI 앱에도 붙여넣을 수 있다. 반대도 마찬가지다. 클립보드 안에 타 앱에서 불러온 파일 목록이 있으면 이번에는 다음처럼 pbpaste 작업을 처리할 수 있다.

$ pbpaste | grep foo

이 명령줄은 grep 명령을 이용해 foo 열이 포함된 행을 추출한다. 이 두 명령은 명령줄과 GUI를 오가는 작업을 진행할 때 특히 유용하다.

2. rsync (파일, 디렉토리 동기화)
rsync 기능은 같은 시스템 내 폴더 혹은 로컬 및 원격 시스템 내의 폴더 사이에 디렉토리 트리를 동기화한다. 이는 지난 수년 간 IT의 보루 역할을 해 온 매우 유용한 기능이며, OS X에도 역시 포함돼 있다. 두 디렉토리 트리를 같게 유지하려면 로컬 시스템에서 rsync를 적용하는 것만으로 작업을 완료할 수 있다.

$ rsync -av /path/to/directory1/ /path/to/directory/2/

이는 /path/to/directory1/ 내의 모든 파일이 /path/to/directory2/에도 똑같이 존재하도록 하라는 의미다. 아예 두 디렉토리를 완전히 같게 만들고 싶을 경우에는 /path/to/directory2/ 내의 파일 중 /path/to/directory1/에 존재하지 않는 파일은 전부 지워버리도록 다음과 같이 rsync 명령을 이용하면 된다.

$ rsync -av --delete /path/to/directory1/ /path/to/directory2/

동기화 과정에서 파일이 리스트화되기를 원하지 않는다면, v 플래그만 지우면 된다.

$ rsync -a --delete /path/to/directory1/ /path/to/directory2/

또는, 어떤 파일이 복사됐고 어떤 것이 제거됐는지 확인하고 싶다면 다음처럼 n을 추가하면 된다.

$ rsync -avn --delete /path/to/directory1/ /path/to/directory2/

서로 다른 시스템 간에도 rsync를 이용할 수 있다. 다만 이를 위해선 원격 시스템에 rsync가 설치돼 있어야 하고, SSH를 구동 중이어야 한다. 명령어는 다음과 같다.

$ rsync -av --delete /path/to/directory1/ user@remotesystem:/path/to/directory1/

여기서 중요하게 봐야 할 부분은 맨 마지막에 넣은 사선(/)이다. 이 사선은 rsync가 소스 디렉토리 내 파일을 읽어 그것을 종착 디렉토리로 동기화함을 나타내는 기호다. 이를 빠뜨리면 rsync는 소스 디렉토리를 통째로 종착 디렉토리로 복제해 결과적으로 추가적인 디렉토리 층위를 만든다.

맥에서 SSH 접속을 구현하려면, ‘시스템 환경설정’의 ‘공유' 메뉴에서 ‘원격 로그인'을 활성화해야 한다. 이를 통해 사용자는 SSH로 맥으로 rsync를 연결하거나 SSH를 이용해 시스템 셸에 연결할 수 있다.
 



X