레이블이 terminal인 게시물을 표시합니다. 모든 게시물 표시
레이블이 terminal인 게시물을 표시합니다. 모든 게시물 표시

wezterm configuration

alacritty ViMode 때문에 쓰고 있었는데, 한글+구두점 후 공백 입력시 공백이 2칸으로 입력되는 문제 해결이 안되고 있고 cursor blink animation 기능을 이용하기 위해 wezterm 으로 갈아 탔다.
alacritty vimode -> wezterm ActivateCopyMode 로 대체할 수 있다.
chatGPT 가 터미널 기능 비교해준 내용이다.

~/.wezterm.lua 설정

한글뒤에,. 등의 구두점 입력 후 공백입력하면 한칸으로 정상(alacritty 에서 2칸으로 문제)

OS 기본 윈도우 제목(크기조절 버튼) 부분을 제거할 수 있어 공간 활용도가 좋다.
ctrl+shift+p : command palette 를 열면 다양한 기능을 검색해서 사용할 수 있다.

ctrl+shift+u : emoji 입력할 수 있다.(alacritty 에서 이모지 입력을 https://github.com/babarot/emoji-cli 를 설치해야 했다.)

ctrl+shift+space : time,file,hash,url 등의 패턴을 알파벳으로 해당하는 부분을 빠른 선택(복사)을 할 수 있다.

ctrl+shift+x : (alacritty ViMode 같은)copy mode 사용 가능하다.

cmd+w 로 tab 닫을때 확인을 하는 기능도 실수를 방지할 수 있다.

cmd+q 로 종료할때도 확인


최신 mac os Tahoe(26.3.1) 에서 GPU 사용율이 높다.
wezterm 실행하고 아무것도 하지 않아도 M1 MAX 맥북 GPU 사용률이 50% 된다.

-- 다음 설정을 추가하면 GPU 사용률이 안정화 된다.
-- 그래도 alacritty GPU 사용률 보단 좀 높다.
config.window_decorations = "MACOS_FORCE_DISABLE_SHADOW | RESIZE"

mac terminal network connection problem

macOS Sequoia 15.3.2 을 사용 중인데 요즘 터미널에서만 네트워크가 작동하지 않는 경우가 있다.
브라우저로는 잘 되는데 맥 기본 terminal, iterm2, kitty, alacritty 등 터미널 에뮬레이터 앱 관계없이 curl, git, brew 등 네트워크 프로그램들이 동작하지 않는다.
curl www.daum.net 을 하면 다음과 같이 도메인을 못찾는다.
curl: (6) Could not resolve host: www.daum.net

아래 처럼 git pull 도 안된다.

ping 도 도메인을 사용하면 안되고, ip 는 동작하는걸 보면 도메인 리졸브가 안되는것 같다.
ping google.com -> 동작 안함
ping 8.8.8.8 -> 동작함

dns 캐시를 지우고 재시작해도 해결이 되지 않았다.
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

다음 네트워크 설정을 수정해보면 된다.
settings > network > vpn & filters > filters & proxies > Falcon(악성코드 탐지) 비활성화 후 활성화

터미널에서 프로그램(커맨드) 처음 실행시 수초간 늦게 실행되는 현상이 있었는데 이것도 falcon 을 재시작(비활성화 후 활성화)하니 빨라졌다.

참고로 CrowdStrike 사의 Falcon은 엔드포인트 보안 플랫폼으로, linux,windows,mac등의 엔드포인트(데스크탑)에서 에이전트가 설치되고 단순 이상한 파일만 감시하는게 아니라 네트워크,프로세스에서 발생하는 동작들을 감시하고 중앙 서버에 보내서 분석하게 된다. crowd(군중)이름을 쓴 이유가 전세계에 crowdstrike 직원?분석가?들이 24시간 분석하고 감시하고 대응한다라고 한다.

암튼 단순 ls,clear 이런것 명령 프로세스도 감시하고 수집하는 것과 과련돼 느려지는 느낌이다.

cool retro term

할로윈에 다음과 같은 git log 스샷이 재밌었는데.

찾아 보니 cool-retro-trem 이라는 터미널 앱을 사용하면 위과 같은 레트로 분위기를 낼 수 있다.
설치
brew install cool-retro-term

musikcube

# terminal music player 로 musikcube 를 사용하고 있다.
# 최근에 musikcube 를 실행하면 abort 에러고 실행이 되지 않는다. 
# 참고로 kitty 터미널에서는 잘됐고, alacritty 에서만 발생한다.
abort musikcube

# 최근 brew install ncurses 로 새버전(v6.5)이 설치됐는데 여기에 버그가 있었다.
# libcursesw.a 정적 라이브러리 내용을 보면 TERMINFO 환경변수의 경로가 요렇다.
strings /opt/homebrew/opt/ncurses/lib/libncursesw.a | rg Cellar/ -B1 -A1
TERMINFO
/opt/homebrew/Cellar/ncurses/6.5/share/terminfo
HOME

# brew ncurses 가 수정되기 전까지 임시방편으로 다음과 같은 환경변수를 설정하고 실행하면 된다.
export TERMINFO=/opt/homebrew/opt/ncurses/share/terminfo
musikcube

ssh - alacritty unknown terminal type

# alacritty 터미널 에뮬레이터 사용중 원격 서버에 ssh 접속 했는데,
# clear 명령 실행시 다음과 메시지가 나오면서 화면이 지워지지 않는다.
'alacritty': unknown terminal type.

# 로컬에서 사용하는 다양한 종류의 터미널 프로그램이 TERM=고유의터미널값 을 사용하는 경우
# TERM=xterm-256color 로 설정된 원격 서버에 ssh 접속 할때
# 컬러가 안보이고 키 입력이 제대로 안되는 문제가 발생할 수 있다.

# 다음과 같이 ssh alias 로 TERM 변수를 설정해 접속하면 된다.
alias ssh='TERM=xterm-256color ssh'
ssh ysoftman@ysoftman.hostname.blabla

Alacritty terminal emulator

terminal emulator 는 맥에서 iterm2 를, 윈도우에서는 자체 terminal 를 쓰고 있었다.

여담이지만 윈도우에서는 microsoft(마소) terminal 나오기전까지 hyper 를 썼었다.
오픈소스라 좋았지만 자잘한 버그도 꽤있었다. 마소 오픈소스로 terminal(스타수 69K , 2020-11기준)을 내놓은건 정말 잘한것 같다.

여러 터미널 예뮬레이터가 중 아직 0.5 버전이지만 스타수가 27k(2020-11기준)나 되고 
GPU Acceleration 으로 아주 빠르다는 alacritty 를 사용하게 됐다.
사실 rust 로 만들었다고 해서 더 끌렸는데, 
사용중인 ripgrep, fd, bat 등의 rust 로 만든 프로그램들이 아주 좋기 때문이다.

맥(catalina 버전)에서 brew 또는 cargo 또는 깃헙에 올려둔 Alacritty-v0.5.0.dmg 릴리즈 파일을 설치 후 실행하면 다음과 같은 에러가 발생한다.

이때는 system preferences > security & privacy > allows apps download from > app store and identified developers 로 선택한다.

설치하기
직접 클론 받아 빌드 & 설치하는 경우
cd alacritty
make app && make install

빌드 바이너리를 사용하는 경우, 아래 URL 에서 다운받으면 된다.

alacritty 깃헙에서 alcritty.yml 설정 파일을 ${HOME}/.alcritty.yml 로 위치시키고
폰트, 컬러, 크기등을 입맛에 맞게 설정해 저장하면 즉시 반영돼 보인다.

#####

alacritty vs iterm2 (GPU rendering 활성화)
성능 비교를 위해 다음 명령으로 수행시간을 측정했다.
time tree /usr

user+system 수행 시간 자체는 비슷하지만 화면에 뿌려지는 시간 차이가 난다.
alacrityy = 28 s
iterm2 = 35 s

time seq 1 1000000

seq 로 숫자 출력되는 속도도 alacritty 가 빠르다.
alacritty = 1.200 s
iterm2 = 4.156 s

터미널 화면을 크게 하고 cacademo 플레이 했을때도 iterm2 는 많이 끊기는데,
alacritty 는 매끄럽게 재생된다.(이건 fps 결과가 없어 직접 눈으로 체감해봐야 한다.)

역시 rust == fast 다. alacritty 터미널 화면 출력에서 확실히 빠른게 체감된다.
CPU 를 많이 쓰긴 하지만 빠른 화면 출력이 맘에 들고 폰트,컬러등 화면도 잘 나와 iterm2 보다 alacritty 를 주로 사용할것 같다.
(추가로 윈도우에서도 위 테스트를 해봤는데, terminal 더 빠르다. 윈도우에서는 terminal 을 주로 사용)

#####

디폴트 단축키
마우스 클릭으로 URL 오픈시 
iterm2: cmd+click
alacritty: shift+click

마우스 클릭으로 블럭(단어) 선택시
iterm2: alt+double-click
alacritty: shift+double-click

마우스 클릭으로 라인전체 선택시
iterm2: alt+triple-click
alacritty: shift+triple-click

#####

윈도우 환경
설정파일 위치
%APPDATA%\alacritty\alacritty.yml

wsl(windows subsystem for linux) 실행
alacritty -e wsl

edex-ui

# edex-ui 영화에서 보이는 해커들이 사용하는 터미널 느낌이다.
# 앱을 실행하면 전체화면으로 멋진 터미널을 사용할 수 있다.


# edux 잠깐 사용해 소감은
# 배경의 리소스 및 파일 탐색도 잘 동작하고 그럴싸한 소리도 나와 기분내기는 좋다.
# tmux 등도 실행되지만 느려지고 nerdfont 나 한글이 깨져 보인다.
# js 내부 로직을 rust 로 만들었으면 더 좋았을것 같은데 아쉽다.

터미널에서 이미지 보기

# 터미널에서 이미지 파일 보기
# imagemagick 의 display 명령으로 터미널에서 이미지를 볼 수 있다고 하지만
# X11 앱 및 X11 용 imagemagick 설치등 까다롭다.
# iterm2 를 사용한다면 imgcat 스크립트를 사용해도 된다.
wget https://iterm2.com/utilities/imgcat
chmod +x imgcat
imgcat ./image.jpg

# terminal-image-viewer 는 ansi, unicode 로 이미지를 보여준다.
npm install -g terminal-image-viewer
tiv -w 70 -h 30 ./image.jpg


안드로이드폰 termux 사용

# 안드로이드폰으로 터미널 환경을 구성해 보자
# 준비
# 키보드(USB) 를 OTG 를 통해 폰에 연결한다.
# 안드폰에 termux 앱을 설치하자.
# termux는 aarch64(ARM 용으로 포팅한 64bit arch linux) 기반으로
# 패키지 관리자로 apt 또는 pkg(apt를 래핑)를 사용한다.
https://play.google.com/store/apps/details?id=com.termux&hl=en

# 참고로 키보드 사용시 단축키는 윈도우(리눅스)를 생각하면 된다.
alt + tab : 앱(전환)
alt + d : chrome 주소표시줄 포커싱
등등..

# termux 실행 후 필요한 패키지 설치
pkg update && pkg upgrade
pkg install -y zsh python2 python vim rust golang ripgrep curl git tig fzf tmux cmake ctags lua53 fortune cowsay figlet cmatrix golang ruby openssh libandroid-support man lsd dnsutils
pkg install -y vim-python
gem install lolcat

# 기본 zsh 로 변경
chsh -s zsh

# termux 스샷~


# /etc 에서 설정하는 파일들(krb5.conf, resolve.conf ... 등)은 ../usr/etc/ 에 위치한다.
# 만약 ../usr/etc/krb5.conf 설정 후 kinit 시 다음과 같은 에러가 발생한다면
kinit : Cannot contact any KDC for realm 'ysoftman.com' ...

# 각 서버의 디폴트 포트는 다음과 같고 포트까지 명시해보자
kdc = kauth.ysoftman.com:88
admin_server = kadmin.ysoftman.com:749
kpasswd_server = kadmin.ysoftman.com:464 # on UDP

# oh-my-zsh 를 사용하는 경우 powerline 폰트 하나
를 ~/.termux/font.ttf 파일로 생성해야 한다.
cp -v fonts/Hack/Hack-Regular.ttf ~/.termux/font.ttf

# known issue
- 아직 한국어를 지원하지 않고 오직 영어만 된다. 이슈를 줄이기 위해서라는데.. 흠. https://github.com/termux/termux-packages/issues/2796#issuecomment-424589888
- oh-my-zsh 는 동작하지만, prezto 는 zsh 시작시 모듈 로딩을 못하는 문제가 있다.
- vim plugin 중 youcomplteme 는 python 이 포함된 vim 을 사용해야 하는데
apt 로 설치되는 vim 은 python 으로 빌드된 것이 아니라 별도로 vim-python 도 설치해야 한다.

mutt terminal email

# mutt 로 터미널상에서 메일을 받고, 보낼 수 있고 한글지원도 잘 된다.
# mutt 설치는 간단하다.
# mac
brew install mutt

# centos, ubuntu
sudo yum install mutt
sudo apt-get install mutt

# -s (subject)
# 메일 내용 "냉무"
# ysoftman@ysotman.com 으로 메일로 보낸다.
echo "냉무" | mutt -s "mutt test 메일입니다." ysoftman@ysoftman.com

# 내용이 길다면 파일로 작성해서 다음처럼 보낼 수 도 있다.
# -a 옵션을 주면 파일 첨부도 가능하다.
mutt -s "mutt test 메일입니다." ysoftman@gmail.com < msg.txt

# 별도의 설정이 없어 다음과 같은 로컬 호스트 주소로 메일이 간다.
# 때문에 대부분 스팸처리된다.
ysoftman <ysoftman@macbook-pro.local>

# mutt 가 사용할 메일함 디렉토리 생성
sudo mkdir -p /var/mail/ysoftman

# mutt 설정 파일을 만들자.
vi ~/.muttrc
set realname="ysoftman"
set imap_user="ysoftman@gmail.com"

#set imap_pass="password" # 명시하지 않으면 프롬프트가 뜬다.
set folder="imaps://imap.gmail.com:993/" # 메일상자들의 기본 폴더
set spoolfile="+inbox" # 기본 메일 상자

#set smtp_url="smtp://ysoftman@smtp.gmail.com:587/"
set smtp_url="smtps://ysoftman@smtp.gmail.com:465/"

#set smtp_pass="password" # 명시하지 않으면 프롬프트가 뜬다.
# gmail 발송시 인증자 없을 에러가 있는 경우 gssapi:login 인증방식을 사용해야 한다.
set smtp_authenticators="gssapi:login"
set ssl_starttls=yes # 서버가 tls 직원하면 활성화
set ssl_force_tls=yes # 항상 ssl 로 연결
set editor="vim"
set charset="utf-8"
set mail_check=30 # 새매일 체크 주기
set imap_check_subscribed=yes
set imap_keepalive=30
set header_cache="$HOME/mail" # 메일 헤더 캐싱 위치
set message_cachedir="$HOME/mail" # 메일 내용 캐싱 위치
set sidebar_visible=no # 사이드바 안보기
set sort="threads" # 메일 쓰레드 보기

# 단축키 설정
bind index G imap-fetch-mail

# theme 적용
source ~/.mutt/dracula.muttrc

# dracula theme 설치
mkdir -p ~/.mutt && cd ~/.mutt
git clone https://github.com/dracula/mutt.git
cp -v ~/.mutt/mutt/dracula.muttrc ~/.mutt
rm -rfv ~/.mutt/mutt/

# mutt 실행 중 발생되는 메시지 디버깅 기록(~/.muttdebug0)
# 1~5 로 높을수록 자세한 정보가 남는다.
mutt -d 2

# 참고로 mutt 으로 gmail 접속하려면 앱 비밀번호를 발급받아 사용해야 한다.
https://myaccount.google.com/security -> 앱 비밀번호

# mutt 자주쓰는 키(vim 과 비슷하다)
? 도움말
/ 검색
! 셀명령 실행
: muttrc 에서 사용하는 명령 실행
q 현재화면 종료
j 메일 리스트에서 다음항목으로 이동, 메일내용보기에서 다음메일 보기(아래쪽,오른쪽방향키)
k 메일 리스트에서 이전항목으로 이동, 메일내용보기에서 이전메일 보기(위쪽,왼쪽방향키)
숫자 해당메일로 이동
tab 다음 새메일로 이동
N 새메일/읽은메일 플래그 토글
h 메일보기에서 헤더등 자세한 정보 토글
m 새메일 작성
r 현재 메일 답장
d 메일 삭제
(삭제메일로 표시되며, mutt 종료시 삭제여부를 묻는다.)
u 메일 복구(삭제메일 이전 항목에서 u하면 아래항목의 메일이 복구된다.)
e 저장된 메일 편집
home 메일 리스트에서 첫번째 항목으로 이동
end 메일 리스트에서 마지막 항목으로 이동

터미널 웹브라우저 w3m 사용하기

# w3m
# mac 에 설치
brew install w3m

# 검색 페이지 사용하기
# 구글 페이지로 시작
# 링크나 입력박스등 주요 오브젝트는 tab키로 포커싱힌다.(마우스로 입력창을 클릭해도 된다.)
# 입력박스에 포커싱하고 엔터를 누르면 TEXT: 입력란이 생긴다.  -> 검색 포커싱 엔터
w3m www.google.com


# 주요 단축키
H : 도움말
방향키 : 커서 이동
U : 새 url 열기
/ : 페이지내 검색, n(다음 매칭으로 이동), N(이전 매칭으로 이동)
g : goto first line
G : goto last line
[ : first hyperlink
tab : next hyperlink
shift + tab : previous hyperlink
] : last hyperlink
ctrl + h : 페이지 히스토리(next, previous 웹페이지 이동시)
ctrl + u : 입력란에서 현재 커서 앞의 모든 문자 지우기
ctrl + k : 입력란에서 현재 커서 뒤의 모든 문자 지우기
s : 버퍼스택(열었던 페이지) 팝업 메뉴 보기, space (열기)
mouse double click : hyperlink 열기


#####


# lynx
# mac 에 설치
brew install lynx

linux , windows 10 bash 터미널 beep 없애기

# linux , windows 10 의 linux bash 터미널을 열어 작업할때,
# backspace 로 글자를 더이상 지울 수 없는 경우 beep 가 발생한다.
# 습관적으로 backspace 를 연타하게 되는데 beep 가 아주 거슬린다.
# terminal beep
# /etc/inputrc 파일을 열어 bell-style none 으로 설정한다.
# 기본적으로 이부분이 주석처리되어 있어 주석해제해주면 된다.
# 파일 저장 후 bash 종료하고 다시 실행하면 beep 가 발생하지 않는다~
sudo vi /etc/inputrc
set bell-style none

# vim beep
# vim 도 똑같이 beep 가 발생하는데 .vimrc 에 visualbell 을 설정하자.
vi ~/.vimrc

# beep 사용하지 않고 t_vb 로 설정된 문자로 bell 을 표시하는데
# t_vb 로 설정된것이 없어 visual bell 도 사용하지 않게 된다.
set visualbell t_vb=

# 참고
https://linuxconfig.org/turn-off-beep-bell-on-linux-terminal

# 추가로 windows 의 wsl + termianl 앱사용시 less beep
# git diff, man ls 등 페이지 처음/끝에서 더 이동하려고 하면 (less 커맨드) beep 가 발생한다.
# echo $LESS 는 다음과 같이 설정되어 있는데
# LESS='-g -i -M -R -S -w -X -z-4'
# -R -Q 를 추가하면 된다.(bashrc 등에 넣어주자.)
export LESS="$LESS -R -Q"


mac ls 전체 시간 표시

리눅스에서 ls -l (long listing format) 옵션을 사용하면 파일 수정날짜가 yyyy-mm-dd hh:mm 으로 표시되지만 맥에서 ls -l 사용시 다음과 같이 mm dd hh:mm 으로 년도가 빠져보인다.


-T 옵션을 추가하면 아래와 같이 초와 년도가 표시된다.


참고로 -T 옵션은 맥 ls 에서만 사용된다.
리눅스에서는 --full-time(-l --time-style=full-iso) 로 지정하면 초단위까지 표시된다.
ls --full-time

fish 쉘 사용하기

fish 쉘은 90년대 풍의 커맨드라인 느낌이다.
사용자가 입력하려고 하는 명령에 대한 리스트를 제공해주고 커맨드 입력 중 tab 을 누르면 자동완성하는등 다른 쉘에서 찾아볼 수 없는 편리한 기능이 많다.
(참고로 표준 쉘이 아니기 때문에 bash 와 같은 표준 쉘과 호환되지 않는 것들이 있다.)
홈페이지 https://fishshell.com/

# 설치(맥 brew 기준)
brew install fish

# 쉘 리스트 파일에 추가한다
sudo vi /etc/shells
/usr/local/bin/fish

# ysoftman 계정의 기본 쉘로 fish 쉘 설정
sudo chsh -s /usr/local/bin/fish ysoftman

# 이제 터미널 재시작 하면 fish 쉘이 뜬다.
예) D 누르고 Tab 누르면 D 로 시작하는 디렉토리 리스트를 보여주고 선택할 수 있다.


# bashrc 와 같은 프로파일 환경 설정은 다음 경로에 생성한다.
vi ~/.config/fish/config.fish

youtube downloader and player

# yt-dlp (fork of youtube-dl, https://github.com/yt-dlp/yt-dlp)
# youtube 뿐 아니라 linkedin, instagram 등의 영상도 다운받을 수 있다.
brew install yt-dlp

# 플레이리스 모두 mp3 오디오 파일로 다운 받기
# 플레이리스트가 공개로 돼있어야 한다.
# --download-archive 로 해시파일을 만들어 두면 다음 실행시 신규 영상만 받을 수 있다.
yt-dlp "https://www.youtube.com/playlist?list=PLxZefZxz0kXuZSbU4AQsIiES32Ddqbwbe" \
    --download-archive download-archive \
    --extract-audio --audio-format mp3 \
    --audio-quality 0 \
    -o "%(playlist_title)s/%(title)s.%(ext)s"

# 참고로 플레이리스트 정보만 출력시
rm -f list.txt
yt-dlp "https://www.youtube.com/playlist?list=PLxZefZxz0kXuZSbU4AQsIiES32Ddqbwbe" \
    --skip-download \
    --print "%(playlist_title)s - %(title)s - %(webpage_url)s" | tee -a list.txt

#####

# 실행
musikcube

# 주요 단축키
# ? : 단축키 보기 및 변경
# s : 설정, 여기서 음악 파일 위치르 설정한다.
# t : tracks
# volume_up, volume_down : i,k
# play_previous, play_next : j,l
# play : enter
# toggle pause : space
# toggle mute : m
# toggle repeat : .
# toggle shuffle : ,
# stop : ctrl+x
# rescan : ctrl+r

#####

brew install --cask background-music

# 맥 로그인시 자동 시작을 위해 시스템 설정 > general > login items 에 등록하자.
# background-music 메뉴바에서 output device 를 선택

# cava, scope-tui 같은 비주얼라이저가 background-music 을 input 소스로 사용하기 때문에
# 맥 사운드 output > background music 을 사용하도록 한다.

#####

# cava audio visualizer (https://github.com/karlstav/cava)
brew install cava

# cava 설정에서 오디오 소스 및 기타 설정 수정한다.
vi $HOME/.config/cava/config
[input]
#brew install portaudio
method = portaudio
#brew install --cask background-music
source = "Background Music"

[color]
gradient = 1
gradient_count = 8
gradient_color_1 = '#59cc33'
gradient_color_2 = '#80cc33'
gradient_color_3 = '#a6cc33'
gradient_color_4 = '#cccc33'
gradient_color_5 = '#cca633'
gradient_color_6 = '#cc8033'
gradient_color_7 = '#cc5933'
gradient_color_8 = '#cc3333'

# cava 실행하면 현재 출력 사운드에 대한 visualizer 가 표시된다.
cava

#####

# oscilloscope audio visualizer https://github.com/alemidev/scope-tui
cargo install scope-tui

# 실행
scope-tui audio

# 컨트롤키
q 또는 ctrl-c : 종료
s: scatter 모드 토글
space : pause

#####

brew install mpv mps-youtube

# 현재 디렉토리 음악 재생
mpv .

# youtube 플레이
mpv 'https://www.youtube.com/watch?v=_2Y1hCgDvNE'

# video 없이 소리만 플레이
mpv --no-video 'https://www.youtube.com/watch?v=_2Y1hCgDvNE'

# mps-youtube(mpsyt) 사용하는 경우
# 참고로 mpv 를 플레이어로 사용한다.
mpsyt

# video 보기 설정 켜기
set show_video true

# Youtube Error 403: Daily Limit Exceeded. 에러로 초기 api키를 새걸로 변경해야 한다.
# api 키 발급 받기
1. 구글 개발자 게정 로그인
2. https://console.developers.google.com/project
3. 프로젝트 만들기 : ysoftman-mpsyt
4. API 및 서비스 -> Youtube Data API v3
5. API 및 서비스 -> 사용자 인증 정보 -> 사용자 인증 정보 만들기 -> api 키

# https://console.developers.google.com/apis/credentials?project=ysofmtan-mpsyt
set api_key abcd1234

# youtube 검색하기 /검색어
/Carion Wind Quintet

#####

# youtube, facebook, vimeo, soundcloud 등에서 다양한 멀티미디어 컨텐츠를 다운 받을 수 있다.
# 사용법은 동영상, 음악등의  URL 만 입력하고 다운로드 클릭~
# 언제부터인가 유튜브 영상이 1080p 480p 의 경우 영상과 음성이 따로 서비스하게 되어 ssyoutube 로는 1080p 480p 로 저장시 소리가 빠지게 되는 문제가 있다.


# 유튜브 고해상도 영상 1080p 로 다운받고 싶다면 4kdownloader 를 사용하자.(무료)
https://www.4kdownload.com/download

Linux 터미널 멀티플렉서 Tmux

Tmux (terminal multiplexer)는 하나의 터미널을 다수의 pane(영역)으로 구분하여 프로그램을 실행하고 각 프로그램 사이를 쉽게 이동할 수 있는 툴이다. 보통을 screen 툴을 사용하거나 gui 환경에선 터미널을 여러개의 탭으 생성하여 사용하는데, 한화면에서 여러개의 프로그램으로 돌리며 모니터링할 수 있는데는 tmux 가 좋다.
공식 홈페이지 http://tmux.sourceforge.net/

# Ubuntu 에서 설치
sudo apt-get install tmux

# CentOS 에서 설치
sudo yum install tmux

# MacOS 에서 설치
brew install tmux

#####

# tmux 명령어/단축키
tmux -V # 버전, 버전에 따라 명령이 조금 달라질 수 있다.
tmux # 실행(새로운 세션으로 터미널 열림)
tmux new-session # 실행(새로운 세션으로 터미널 열림)
tmux list-commands # tmux 명령어 보기
tmux ls # 열려 있는 세션 리스트
tmux kill-server # 모든 세션(tabs,pane)종료
tmux list-windows # tab(window) 리스트
tmux list-panes # pane 리스트
tmux a # 세션 붙이기(attach)
ctrl+b d # 세션 떼기(detach)

ctrl+b c # 새 window(tab) 생성
ctrl+b w # tab 리스트 보기 및 선택
ctrl+b n # 다음 tab 이동
ctrl+b p # 이전 tab 이동
ctrl+b f # tab 찾기
ctrl+b 번호  # tab 로 이동
ctrl+b , # 현재 tab 이름 변경
ctrl+b & 또는 exit # 현재 tab 종료

ctrl+b % # 수직으로 pane 나누기
ctrl+b " # 수평으로 pane 나누기
ctrl+b q 번호선택 # pane 번호 보기 및 번호로 pane 선택
ctrl+b 방향키 # pane 이동(ctrl+b 후 방향키로 계속 이동 가능)
ctrl+b spacebar # pane 레이아웃 변경
ctrl+b alt+방향키 # pane 크기 변경
ctrl+b x 또는 exit # 현재 pane 종료

ctrl+b m 현재 pane mark/unmark
ctrl+b { 현재 선택한 pane 과 위쪽 pane 위치 교환
ctrl+b } 현재 선택한 pane 과 아래쪽 pane 위치 교환

ctrl+b : # 명령 프롬프트 사용
ctrl+b t # 현재 시간 보기
ctrl+b ? # 설정된 단축키 보기

# copy & paste
# setw -g mode-keys vi 로 vi 단축키를 활성화 선행
ctrl+b [ # copy mode 시작
spacebar # 블럭지정 시작, 방향키로 복사할 블럭 지정
enter # 복사
ctrl+b ] # 붙이기

# find
ctrl+b [ # copy mode 시작
/ # 찾을 문자 입력, vi 찾기와 같음

# 수직분할 후 수평분할된 3개의 pane 을 가진 세션 시작
tmux new-session \; \
split-window -v \; \
split-window -h \;
attach

#####

# tmux 시작시 로딩되는 설정파일
# 명령 프롬프트로에서도 사용
vi ~/.tmux.conf
# -g global option
set -g display-panes-time 5000 # 5초 동안 pane 숫자 보이기

# 마우스 사용 활성화
# tmux 1.9 이전
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
# tmux 1.9 이후
set -g mouse on

# setw -> set window
setw -g mode-keys vi # vi 단축키 사용(디폴트는 emacs)

#setw synchronize-pane on # 모든 panes 에 동시 입력 활성화
#setw synchronize-pane off # 모든 panes 에 동시 입력 해제

# ctrl+b i panes 동시 입력 활성화 단축키
# ctrl+b I panes 동시 입력 비활성화 단축키
bind i setw synchronize-panes on
bind I setw synchronize-panes off

# 기본 prefix(ctrl+b) 대신 ctrl+a 사용하기
#set -g prefix C-a
#bind C-a send-prefix
#unbind C-b

# 여러개의 pane 생성하고(tiled 레이아웃 사용) 각 pane 에 명령 실행하기
# 현재 창을 계속 split-window 하면 공간이 없다는 에러 발생하기 때문에
# select-pane 으로 활성 창을 옮겨가며 분할해야 한다.
unbind S
bind S \
split-window -v\; \
split-window -v\; \
split-window -v\; \
split-window -v\; \
select-pane -t 00\; \
split-window -h\; \
split-window -h\; \
split-window -h\; \
select-pane -t 04\; \
split-window -h\; \
split-window -h\; \
split-window -h\; \
select-pane -t 08\; \
split-window -h\; \
select-layout tiled\;

# 위에 생성한 창(pane)들의 쉘 프롬프트가 늦게 뜨면 send-key 전달이 되지 않아
# 창들의 쉘 프롬프트가 완료된 후 접속하는것이 좋다.
unbind s
bind s \
select-pane -t 00\; send-keys 'echo ysoftman0' Enter \; \
select-pane -t 01\; send-keys 'echo ysoftman1' Enter \; \
select-pane -t 02\; send-keys 'echo ysoftman2' Enter \; \
select-pane -t 03\; send-keys 'echo ysoftman3' Enter \; \
select-pane -t 04\; send-keys 'echo ysoftman4' Enter \; \
select-pane -t 05\; send-keys 'echo ysoftman5' Enter \; \
select-pane -t 06\; send-keys 'echo ysoftman6' Enter \; \
select-pane -t 07\; send-keys 'echo ysoftman7' Enter \; \
select-pane -t 08\; send-keys 'echo ysoftman8' Enter \; \
select-pane -t 09\; send-keys 'echo ysoftman9' Enter \; \
select-pane -t 10\; send-keys 'echo ysoftman10' Enter \; \
select-pane -t 11\; send-keys 'echo ysoftman11' Enter \;

# 별도 설정 파일 읽기
# source-file ~/workspace/a/a.conf;
# 별도 설정 파일이 존재하면 읽기
if-shell "test -f ~/workspace/a/a.conf" "source ~/workspace/a/a.conf"

# tmux 다시 읽기
# display-message (alias: display) 상태바에 메시지 출력  -p 사용하면 stdout에 출력
bind r source-file ~/.tmux.conf \; display "ysoftman ~/.tmux.conf loaded"

# 현재 바인딩되 있는 모든 단축키 확인
tmux list-keys

#####

iterm2 에서 tmux의 내용을 마우스 드래그해서 copy and paste 가 안될때는
iterm2 -> preferences -> gerneral -> applications in terminal my access clipboard 활성화 (아래 그림 참고)


#####

# .bashrc, .zshrc 에 설정시
# TMUX 변수 값을 확인해 중복 실행을 막는다.
if [ -z "$TMUX" ]; then exec tmux; fi

ascii fun

ASCII 로 축구경기 동영상을 보여주는 곳이다.
telnet ascii-wm.net 2006 으로 접속하면 ASCII 로 축구동영상을 무료로 볼 수 있다. 약 1미터 떨어져서 봐야지 보인다.
홈페이지


[ASCII 축구동영상화면 Deutschland - Argentinien 경기 중인 화면]


#####

# ascii 스타워즈 영화 보기
telnet towel.blinkenlights.nl



# 종료
ctrl+]
telnet> quit

# 참고로 웹버전이 있고 빨리 보기 할 수 있다.
#####

# 자신의 ip 로 위,경도 위치를 알 수 있다.
curl ipinfo.io

#####

# 터미널 날씨 보기
https://github.com/chubin/wttr.in
curl wttr.in

# 지역별로도 볼 수 있다.
curl wttr.in/seoul

#####

# 터미널 지도 보기
# mapscii 설치 및 실행
npm install -g mapscii
mapscii

# 또는 (방향키를 움직이면 지도 위치가 변경된다.)
telnet mapscii.me

#####

# asciiquarium 으로 터미널에서 아스키 문자로 만든 물고기를 보자!
# 참고 https://github.com/cmatsuoka/asciiquarium
# ubuntu 에서 설치
sudo add-apt-repository ppa:ytvwld/asciiquarium
sudo apt-get install asciiquarium

# mac 에서 설치
brew install asciiquarium

# 실행(실행 후 아무키나 누르면 애니메이션 빨리 감기, 마우스 스크롤하면 더 빨리 감기된다.)
asciiquarium

#####

# ascii sl(stream locomotive,증기 기관차)
# mac 에서 설치
brew install sl

# 실행
sl

# ls 로 alias 되어 있는 경우가 있다.
alias sl
sl=ls

# alias 로 실행하지 않도록 한다.
\sl

# 또는
command sl

# lolcat 으로 컬러풀하게~
\sl | lolcat

#####

# ascii live (curl 로 ascii animation 보기)

# curl ascii.live/list 로 가능한 frame(animation)을 알 수 있다.
# 실행
curl ascii.live/parrot
curl ascii.live/donut
curl ascii.live/rick
curl ascii.live/forrest
curl ascii.live/nyan

terminal color

"""""
" .vimrc (vi 편집기에서 표시할 색깔 설정)
" 컬러 설정
color elflord
" 탭크기
set tabstop=4
" 줄번호 표시
set number
" 파일 인코딩 설정
set fencs=utf-8,cp949

#####
# linux
#[규칙] 파일종류=속성;글자색;배경색:
# 파일종류
# di = directory
# fi = file
# ln = linker file
# no = text
# ex = exe
# so = soket
# or = orphan
# pi = name pipe
# bd = block device
# cd = character device
# ow = other writable directory
# 속성
# 00 none
# 01 bold
# 04 underscore
# 05 blink
# 07 reverse
# 08 concealed
# 글자색
# 31 red
# 32 green
# 33 yellow
# 34 blue
# 35 magenta
# 36 sky
# 37 white
# 배경색
# 40 balck
# 41 red
# 42 green
# 43 yellow
# 44 blue
# 45 magenta
# 46 sky
# 47 white
export LS_COLORS='no=00:fi=00:di=00;36:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:ow=01;36;40:*.sh=00;32'

# LS_COLOR 설정 값을 출력하고 설정(export)한다. LS_COLOR 값을 수정할때 용이하다.
# -b : sh 용
dircolors -b

# ls 의 --color=auto 옵션을 alias 로 지정
alias ll='ls -ahl --color=auto'

#####
# mac
# [규칙] 다음 11개의 순서로 색깔을 설정
# directory
# symbolic link
# socket
# pipe
# executable
# block special
# character special
# executable with setuid bit set
# executable with setgid bit set
# directory writable to others, with sticky bit
# directory writable to others, without sticky bit
# 색상
# a  black
# b  red
# c  green
# d  brown
# e  blue
# f  magenta
# g  cyan
# h  light grey
# A  bold black, usually shows up as dark grey
# B  bold red
# C  bold green
# D  bold brown, usually shows up as yellow
# E  bold blue
# F  bold magenta
# G  bold cyan
# H  bold light grey; looks like bright white
# x  default foreground or background
# 컬러값 설정
export LSCOLORS='GxFxCxDxBxegedabagaced'

# CLICOLOR 활성화
export CLICOLOR=1

# ls 의 -G 옵션을 alias 로 지정
alias ll='ls -ahlG'

# iterm2 컬러 설정
iterm2 -> preference -> colors -> darkside

# 또는 scheme 다운로드 후 import
http://iterm2colorschemes.com/
dracula (https://draculatheme.com/iterm/)
iterm2 -> preference -> colors -> import -> schem 파일

Prev