리눅스에서 euc-kr 한글 파일명 압축 풀기

unzip -O cp949 filename.zip
unzip -O euc-kr filename.zip

윈도우에서 압축한 파일이라면 cp949가 더 정확한 인코딩명이지만, euc-kr도 상관없다. cp949가 euc-kr을 약간 확장한 것이다.

JPG 화질 떨어뜨려서 용량 줄이는 스크립트

for i in *.jpg; do convert -strip -interlace Plane -quality 80 $i $i; done

화질을 80으로 만들지만 그리 나빠 보이지 않는다. 메타데이터를 지우지 않으려면 -strip 옵션을 뺀다.

for i in *.jpg; do convert -interlace Plane -quality 80 $i $i; done

-interlace Plane은 프로그레시브 이미지로 만들라는 것이고, Plane은 프로그레시브 방식 중 하나다. Line, Partition 방식이 더 있다. 인터레이스 옵션에 대한 설명은 Interlace Option을 참고하라.

PDF를 JPG로 변환(imagemagick 사용)

convert -density 300 파일명.pdf 파일명.jpg

이렇게 하면 파일명-1.jpg 식으로 페이지별 파일이 생긴다. -density 옵션은 인치당 픽셀수를 말하는데 인쇄할 때 제대로 나오려면 300은 돼야 한다.

PDF에 암호 걸기

pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz

128비트 암호화밖에 지원하지 않는 듯.

user_pw는 읽기 암호, owner_pw는 인쇄 등 각종 권한에 대한 암호라고 한다. 기본적으로 읽기 보안을 걸려면 user_pw를 설정하면 된다.

mysql client 프로그램에서 결과값 less로 보기

pager less -niS

-n 줄번호감춤(성능향상), -i 대소문자구분x, -S 줄바꿈 안함.

현재 폴더의 하위 폴더들 용량 보기

du -hd 1

-h는 사람이 읽기 좋게 용량 표시, -d 1 하위 1단계 폴더까지만 검사해서 표시. 간혹 -d 1 대신 --max-depth=1이라고 써야 하는 경우가 있다.

맨 아래 것(.)이 하위 폴더까지 합한 현재 폴더 용량.

더 자세한 것은 [링크] Shell에서 용량 관리 위한 명령어 참고.

IP 스캔하기

nmap -sP -PI 192.168.0.0/24

192.168.0 부분만 변경해 주면 되겠지.

오래된 파일 삭제(7일 넘은 파일)

find . -ctime +7 -exec rm -rf {} ;

현재 폴더에 있는 놈만 7일 넘은 파일 삭제

find . -maxdepth 1 -ctime +7 | xargs rm

파일 문자열 치환

sed -e 's|mytory.net|mytory.net|g' db.sql > db.local.sql

보면 알겠지만 s|타겟|변경결과|g 형식임. 펄 정규식이 아니라 오래된 정규식을 사용하는 거니까 자세한 사항을 알고 사용하려면 man sed 해볼 것.

-r 옵션을 넣으면 regex extended를 사용한다.

파일 찾기

locate 파일명

이러면 DB에 색인해 놓은 걸 바탕으로 파일을 찾는다. 속도가 빠르다.

방금 들어온 파일이라 DB에 색인돼 있을 것 같지 않다면 아래처럼 찾는다.

find /folder -name "filename"

더 자세한 내용은 [번역] 쉘에서 파일 찾기를 참고.

모든 하위폴더에 있는 .svn 폴더 삭제하기

rm -rf `find . -type d -name .svn`

현재 폴더에 있는 특정 확장자 파일 문자열 검색

find -name "*.php" -o -name "*.html" | xargs fgrep -il 'test'

아래처럼 하면 하위 디렉토리의 모든 파일에서 찾는다.

grep some_text -r .

더 자세한 내용과 질문은 [Shell] 특정 문자열이 들어있는 파일 찾기를 참고.

클립보드에 파일 내용 붙여 넣기(리눅스)

xclip -sel clip < 파일

7z 압축률 0으로 압축하기

OS간 파일명 인코딩이 깨지지 않게 압축을 하는 가장 간편한 방법으로 가장 간편해 보이는 게 7z을 사용하는 것이다.

7za a -mx=0 압축명.7z 압축대상

-mx=9로 하면 압축률을 최대로 설정한다.

gzip 원본 파일 유지하면서 압축하기

gzip -c 파일명.txt > 파일명.txt.gz

mysql process 보기

쉘의 mysql client에서 다음 명령을 치면 된다.

SHOW PROCESSLIST;

다음은 더 상세한 내역을 보여 준다.

SHOW FULL PROCESSLIST\G

맨 뒤에 ;를 붙이지 않아도 된다. \G를 반드시 붙여야 하고 \g는 안 된다.

git log에서 각 커밋당 수정한 파일 목록 보기

git log --name-only
git log --name-status

위는 이름만 보는 거, 아래는 이름과 A(추가), M(수정) 같은 플래그 같이 나오는 거.

git log 뭐 했는지만 볼 수 있게 뽑기

git log --pretty="format:%ad %s (%an)" --date=short --since=2014-05-01

큰 파일 쪼개고 합치기

쪼개기

split -b 1024m "YourFile.iso" "YourFile.iso.”

합치기

cat YourFile.iso.* > YourFile.iso

쉘에서 기본 브라우저 변경

sudo update-alternatives --config x-www-browser

파일명 일괄변경

i=0;for f in *.jpg;do i=$(expr $i + 1); mv "$f" left21_0126_$(printf %04d $i).jpg; done

mp4에서 오디오 추출

ffmpeg -i video.mp4 -vn -acodec copy audio.m4a

디렉토리에 있는 모든 파일 확장자 한 번에 변경

이건 긁어다 쓰라고 적어 둔 건 아니고, 쉘 스크립트 짤 때 참고하라고.

for f in $(ls);  do extension="${f##*.}"; filename="${f%.*}"; mv "$f" "$filename.txt"; done

설치한 RPM 패키지 파일들 보기

rpm -ql 패키지명

혹은

rpm --query --list 패키지명

pdftk로 모든 페이지 -90도 회전

pdftk A=asdf.pdf cat A1-endwest output a.pdf

cat은 catenates의 약어다. asdf.pdfA라는 변수에 할당하고, cat이라는 operation에서 A1-endwest로 돌리라고 명령을 내린 것이다. 그리고 output 뒤에 출력 파일명을 적어 준 거고.

pdftk로 pdf 합치기

pdftk file1.pdf file2.pdf file3.pdf cat output newfile.pdf
pdftk *.pdf cat output newfile.pdf

뭐 추가로 설명할 건 없다. ‘How to Combine Multiple PDF Files With pdftk’에서 가져온 명령어다.

imagemagick으로 스크린 캡쳐

일단 imagemagick(오타 아님. ick 맞음)이 설치돼 있어야 한다.

import -screen root screen.png

root는 스크린 이름을 뜻하는 것 같다. 복잡한 작업을 하는 사람이라면 자기의 스크린 이름을 알 테고, 그런 거 없으면 그냥 root인 것 같으니 root라고 적자.

이러면 우선 마우스 커서가 십자 모양으로 변한다. 캡쳐 기회가 두 번 주어진다. 윈도우를 클릭하면 해당 윈도우만 캡쳐된다.

두 번 클릭하면 십자모양 커서가 풀리고 홈 폴더에 가 보면 screen-0.png, screen-1.png 이렇게 파일이 두 개 생겨 있다.

시스템 언어 설정 변경(데비안 계열 리눅스)

dpkg-reconfigure locales

시작 서비스 프로그램 켜고 끄는 프로그램(데비안 계열 리눅스)

rcconf

프롬프트에 배터리 정보와 날짜 표시해 주기(데비안 계열 리눅스)

PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\] - \e[32m\$(acpi)\e[m | \e[32m\$(date +'%m-%d %R')\e[m
\[\033[01;33m\]\w\[\033[00m\]\$ "

트루크립트, 시스템 볼륨 마운트

truecrypt --mount /dev/sdb2 /mnt/truecrypt --filesystem=ntfs-3g -m system

마지막 -m system 옵션이 시스템 볼륨임을 알려 주는 옵션이다.

버추얼박스 커널 모듈 새로 컴파일

버추얼박스의 에러 메시지에선 /sbin/rcvboxdrv setup 하라고 나오는데 그러면 Bad argument setup이라고 에러 난다.

아래 명령어가 제대로 작동한다(출처).

/usr/lib/virtualbox/vboxdrv.sh setup

특정 파일들의 용량 합산

특정 파일들의 용량 합산 글 보기

중복 파일 찾기

fdupes는 파일 사이즈와 md5 hash를 기반으로 중복 파일을 찾아 준다. 아래는 하위 폴더를 순환하며 중복 파일을 찾는 명령어.

fdupes -r .

아래는 하위 폴더를 순환하며 찾은 뒤, 중복된 파일들 중 맨 처음에 찾은 것만 남기고 나머지를 삭제하는 명령어.

fdupes -dN -r .

아래는 중복된 것들 중 무엇을 남길지 묻게 하는 명령어.

fdupes -d -r .

동적으로 JAVA_HOME 설정

vi /etc/profile.d/java_home.sh로 편집 연 뒤, 아래 코드를 넣는다.

export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))

재부팅하면 모든 사용자에게 JAVA_HOME이 적용된다. 자세한 내용은 Setting JAVA_HOME Dynamically on Linux 참고.