Linux Tips
Posted on 2018-10-18(목) in Linux
shell
What is My IP?
% http -b ifconfig.me
- httpie, -b : only body
변수 숫자 빼기 연산
% A=5
% B=3
% C=$((A-B))
% echo $C
2
wc
file 명 없이 라인수 출력
% wc -l < default.log
10
sed
1~5 줄 지우기
% wc -l default.log
15 default.log
% sed -i '1,5d' default.log
% wc -l default.log
10 default.log
sudo
sudo user 생성방법
-G : 그룹에 추가
RedHat 계열
% usermod -aG wheel username
Debian 계열
% usermod -aG sudo username
비밀번호 없이 sudo 기능 하도록 하기
% sudo visudo
...
# 추가
username ALL=(ALL) NOPASSWD: ALL
rsync, 디렉토리/파일 비교 (“-i” 옵션)
rsync -avzi $SRC_DIR [login@info]:$DEST_DIR
bash, [[]]
$ a=b b=c c=d d=e e=f f=3
$ echo "$(( a + 7 ))"
10
$ b='1 + 2 + 3'
$ [[ b -eq 6 ]] && echo y
y
Here document
Keybase 와 shell의 “here document” 기능을 사용한 예:
% keybase pgp sign -c << EOF
hello
EOF
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
hello
-----BEGIN PGP SIGNATURE-----
wsFcBAEBCAAQBQJbzu4wCRDbzYs3KlGl4QAAvvUQAFqpyLCc8DeS5jNNLGr2hdqL
55zKqntXq/4J++JzlcASzkde5fdh34IA8ALi3ZBMrdI36pxpGShmL7+aVTR941WH
EnHv/emEhIEkLPve+VJVx0Rc8ylwRJ4wi4rP4bKoBD29J4wmU26PaaCqZNpIdTWu
VbjASz5KDrBJjZkPlTV3hpoJUl0zAoHPBmtkPfx+KXDI88oRiA8Y8h7FAxlwicwy
WMM4KLmXlGNHSBGMPRFOUjgAKo5YnXjAsKgrDiTW8hubsYXWgO5NUCDa9lWsNoW+
bVrynqgGYfTgovy66Y4b7uzU8wzVKiDhRSR5B1MUOiquAjD0veRQdl9RMmZ4Hpz5
z/SdPKk/PYNhg84wQdgQRmtwYUau8utXmqXrqsnyBzzp4fYomFWxcITPr7uki8ks
AsvGJv0cw6zUyMUpPjyO7l2qsrDPvZiQe+Nqe5rueoZ3YWjHWYCUy/IyIziUGhv+
xv6InINIazqEqgsNUwVF0fexF0tEkla/ggXRjTQ7Ht0uYlngV6DmJ0QXNsOs3f2y
E6XIR2Z3iQwo1XPCtYbmXNzZ4n4nBB2vpcBN3o6L/kyU7ITcBgfCylZSkACh9A96
aNaEilAX7Xty31128XlAET8E+loFmRLZnozL426Y1t62yTzpsww1a5YpMPgaR91/
ClWaFiPcpFuSYRB38cnV
=5W1g
-----END PGP SIGNATURE-----
%
ssh, password 자동입력
% ssh-keygen -t rsa -b 2048
% ssh-copy-id id@server
용어, Shebang (Unix)
예)
#!/usr/bin/env zsh
/etc/crontab
- 출처 :
- Linux scheduler : Cron, At jobs - Kernel Talks
- crontab.guru - the cron schedule expression editor
# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
apt, upgrade 패키지 확인.
% sudo apt upgrade --just-print -V
...
다음 패키지를 과거 버전으로 유지합니다:
nginx-common (1.10.1-0ubuntu1 => 1.10.1-0ubuntu1.2)
nginx-extras (1.10.1-0ubuntu1 => 1.10.1-0ubuntu1.2)
...
% sudo apt list --upgradeable
Listing... 완료
nginx-common/yakkety-updates,yakkety-updates,yakkety-security,yakkety-security 1.10.1-0ubuntu1.2 all [upgradable from: 1.10.1-0ubuntu1]
nginx-extras/yakkety-updates,yakkety-security 1.10.1-0ubuntu1.2 amd64 [upgradable from: 1.10.1-0ubuntu1]
※ apt list 의 옵션 : —installed, —all-versions
- 관련 링크:
grep, recursive
% grep -ilR Connection dbtool/
dbtool/src/DBTool/DB/Connection.php
dbtool/src/DBTool/DB/SqliteConnection.php
dbtool/src/DBTool/DB/ConnectionProperties.php
dbtool/src/DBTool/DB/ConnectionException.php
dbtool/src/DBTool/DB/MySqlConnection.php
rsync, 옵션 ‘—delete’ 의 예외 처리.
‘—delete’는 대상 디렉토리에 필요 없는 파일을 지워준다. 원 소스 디렉토리와 똑같이 만들어주기 위한 방법으로 옵션을 주는데… 예외적인 처리를 하고 싶을 때 아래와 같은 옵션을 준다.
% rsync -rvzc --filter=':e /static' --delete
“—filter=’:e /static’” 를 추가해서 /static 파일(혹은 디렉토리)를 제외하고 rsync 가 된다.
locale 환경 변수 수정
% sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
타임존(timezone)을 한국으로 설정하기.
$HOME/.zshrc 에 다음과 같이 추가 한다.
# set timezone #
TZ='Asia/Seoul'; export TZ
- 관련 명령어:
sticky-bit
chmod o+t /path
chmod +t /path
chmod 1757 /path
find / -perm +1000
chmod o-t /path