Post

macOS 터미널 명령어를 통한 설정 정리

목차


macOS ssh 재시작

/etc/services에서 ssh 포트를 변경할 수도 있다.
재시작 명령어는 아래 두 줄을 통해 가능하다.

1
2
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

외부 ssh 접속을 허용하려면 시스템 설정 > 일반 > 공유 에서 원격 로그인 항목을 체크해야 한다.

MacOS의 디폴트 프로그램 변경하기

  • 1번 방법

Finder에서 우클릭 > 정보 가져오기 > 다음으로 열기 ->프로그램 변경 > 모두 변경…

하지만 이 방법으로는 몇가지 제약사항이 존재한다. 확장자가 없는 문서 등의 경우 한번에 바꾸지 못하는 단점이 존재한다.

  • 2번 방법

우선 내가 기본으로 열고싶은 확장자의 타입을 알아야 한다.

1
mdls -name kMDItemContentType /path/to/file

일반 문서 타입으로 조회되는 .wgetrc 파일

1
2
mdls -name kMDItemContentType ~/.wgetrc
kMDItemContentType = "public.data"

그리고 내가 열고자 하는 프로그램의 CFBundleIdentifier 를 알아야 한다.

1
mdls -name kMDItemCFBundleIdentifier -r /path/to/Application.app

예시

1
2
3
4
5
6
7
# VSCode
mdls -name kMDItemCFBundleIdentifier -r /Applications/Visual\ Studio\ Code.app
com.microsoft.VSCode

# MacVim
mdls -name kMDItemCFBundleIdentifier -r /Applications/MacVim.app
org.vim.MacVim

이제 원하는 타입을 원하는 프로그램으로 바꾸기 위해 아래 명령어를 적절하게 변경해 실행한다.
아래 명령어를 실행하면 $HOME/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist 파일의 내용이 변경된다.

1
2
3
defaults write com.apple.LaunchServices/com.apple.launchservices.secure \
  LSHandlers -array-add \
  '{LSHandlerContentType=<document type>;LSHandlerRoleAll=<바꾸고자 하는 프로그램명>;}'

나는 MacVim(org.vim.MacVim)으로 문서 파일(public.data)을 열고자 하기 때문에 아래와 같은 명령을 진행할 것이다.

1
2
3
defaults write com.apple.LaunchServices/com.apple.launchservices.secure \
    LSHandlers -array-add \
    '{LSHandlerContentType=public.data;LSHandlerRoleAll=org.vim.MacVim;}'

이후 재부팅 하여 변경된 내용을 적용한다.
꼭 재부팅 해야 내용이 적용되니 이 점 잊지 말자.

사전찾기 (ctrl+cmd+d) 단축키 비활성화

설정 이후 재부팅 필요.

1
sudo defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 70 '<dict><key>enabled</key><false/></dict>'

충전 없이 클램쉘 활성화

설정 이후 재부팅 필요.
덮개를 덮을 시 잠자기 모드를 완전히 비활성화 하는 것이기 때문에
해당 설정을 진행하면 맥북을 잠자기 모드로 둘 수 없다.

1
sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

잠자기 모드를 다시 활성화 하려면 아래 명령어 적용 후 재부팅.

1
sudo pmset -b sleep 0; sudo pmset -b disablesleep 0

해당 쉘 스크립트를
automator > 새로운 문서 > 응용 프로그램 > 보관함 > 유틸리티 > 셸 스크립트 실행
여기에 넣고 저장하면 앱으로 만들 수 있다.

1
echo 'password' | sudo -S pmset -b disablesleep 1; pmset -a disablesleep 1; pmset -c disablesleep 1;

키 반복하기

맥을 처음 실행하면 키를 꾹 눌렀을 때 키가 반복되지 않고 다른 글자를 입력할 수 있는 창이 뜬다.
이를 막고 키를 꾹 눌렀을 때 반복되게 하려면 터미널을 열고 다음 명령어를 입력한다.

1
defaults write -g ApplePressAndHoldEnabled -bool false

Finder 숨긴 디렉토리를 항상 보이게 하기

단축키는 cmd + shift + . 이다.

항상 보이게 하려면 터미널을 열고 다음 명령어를 입력한다.

1
defaults write com.apple.Finder AppleShowAllFiles -bool true

dock 애니메이션 대기시간 제거

1
2
defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-delay -float 0 && defaults write com.apple.dock autohide-time-modifier -float 0
killall Dock

dock 대기시간 복원

1
defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-delay && defaults delete com.apple.dock autohide-time-modifier && killall Dock

dock을 완전히 없애기

나의 경우 spotlight, alfred로 거의 모든 것을 실행하기 때문에 dock이 필요하지 않아 dock이 나타나는 것이 거슬렸다.
따라 dock을 완전히 없애는 방법을 찾아보았으나,
완전히 없애는 대신 dock이 보여지는 시간을 매우 길게 조정하여 사실상 dock이 없는 것처럼 보이게 하는 방법을 찾았다.

아래 명령어는 dock이 보여지는 시간을 1000000초 정도로 늘려 사실상 dock이 없는 것처럼 보이게 한다.

1
defaults write com.apple.dock autohide-delay -float 1000000; killall Dock

복원방법

1
defaults delete com.apple.dock autohide-delay; killall Dock

출처

plist vi로 보기

  • plist 바이너리를 xml로 변환
1
plutil -convert xml1 "<plist file>"
  • plist xml을 바이너리로 변환
1
plutil -convert binary1 "<plist file>"

프로그램 실행 시 argument 추가하여 실행시키기

링크로 대체

ssh ppk 개인키 파일을 .pem 파일로 교체 (ppk 개인키 변환)

.ppk 확장자의 개인키 파일 형식은 macOS 터미널에서 ssh 접속 시 개인키 파일로 사용할 수 없다.
따라서 이러한 파일을 변환해줘야 하는데 해당 방법을 알아보자.

우선 puTTY가 설치되어 있지 않다면 설치해야 한다.

1
brew install putty

이후 puttygen 을 통해 .ppk 파일을 변환할 수 있다.

1
puttygen key.ppk -O private-openssh -o output.pem

키가 생성되었다면 기본적으로 권한이 600 (rw——-) 으로 설정되어 있을텐데, 만약 권한이 다르다면 chmod 600 <file> 명령어를 통해 600으로 권한을 재설정해야 한다.

이후 이 키를 가지고 접속이 가능하다.

1
ssh -i output.pem user@test.com

또는 ~/.ssh/config 에 정보를 기입하고 접속할 수 있다.

1
2
3
4
5
6
7
8
9
10
# Host 별칭
    HostName #ssh 접속주소
    User #ssh 접속 유저명
    Port # ssh 접속 포트
    IdentityFile # 개인키 경로
Host sshtest
    HostName test.com
    User ubuntu
    Port 22
	  IdentityFile ~/.ssh/output.pem
1
2
# ssh 별칭
ssh sshtest

해당 내용을 시스템 설정 > 일반 > 로그인 항목 에 넣을 경우 완전히 제거할 수 있지만 sudo 비밀번호가 노출된다는 단점이 있다.

따라서 /private/etc/sudoers.d/ 디렉토리에 pmsets 라는 이름의 파일을 생성하고

1
2
cd /private/etc/sudoers.d/
touch pmsets

sudo vi /private/etc/sudoers.d/pmsets 명령어를 통해 파일을 열 수 있다.
다음과 같이 내용을 추가한다.

1
<계정명> ALL = NOPASSWD: /usr/bin/pmset

:w! 명령을 통해 저장하고 나와 쉘을 하나 더 열어서 sudo pmset -b disablesleep 1; 명령을 실행하였을 때
비밀번호를 입력하지 않고 실행되는 것을 확인할 수 있다.

sudoers로 진행할 경우 automator에 비밀번호를 평문으로 입력하지 않아도 실행이 된다.

macOS 안되는 명령어

which

이건 맥 뿐만 아니라 zsh 쉘을 사용하는 모든 사용자의 문제이지만
which 명령이 해당 프로그램의 실제 경로를 가리키는 것이 아닌, alias나 함수 등을 출력한다.

아래 alias를 통해 which 명령어를 bash의 which 명령어로 대체할 수 있다.

1
alias which="$(/bin/bash -c 'which which')"

맥에서 readlink 명령어를 사용하려고 하니 오류가 난다.

1
2
$ readlink -e sslkeylog.log
readlink: illegal option -- e

이 경우 readlink 대신 greadlink 를 사용하면 된다.

1
2
$ greadlink -f /opt/homebrew/bin/fzf
/opt/homebrew/Cellar/fzf/0.38.0/bin/fzf

greadlink 옵션은 readlink와 다른 게 없는 것 같았다.

fallocate -> mkfile

fallocate -l 1M 1Mtest.txt 명령어를 통해 1MB의 파일을 생성하려고 했는데
맥은 fallocate 명령어를 지원하지 않는다.

이 경우 mkfile 명령어를 사용하면 된다.

1
mkfile -n 1m 1Mtest.txt
This post is licensed under CC BY 4.0 by the author.