PART3 : webterror가 지금까지 활용해 왔던 Bash Tip

입질쾌감 물때표

전체 스트링 변환

find . -type f -print0 | xargs -0 sed -i 's/string1/string2/g'

 

확장자 한꺼번에 바꾸기

rename .tbm .php *

 

 리눅스 계정 추가

useradd -p qowlsdnjs -m -d /home/webterror/public_html/STORAGE3/music music

 

특정 파일만 제외하고 모두 옮기기

find ./ -maxdepth 1 -mindepth 1 -not -name file -print0 | xargs -0 mv -t dir

 

데몬띄우는 샘플

start-stop-daemon --start --background -u icecast --quiet --exec /usr/bin/muse -C /home/icecast/playlist.pls -o -e mp3 -b 128 -q 9 -r 44100 -c 2 -s localhost:8000 -m webterror.mp3 -p qowlsdnjs -g cli

start-stop-daemon 사용법
@@ — : 의미는 파라미터를 쓰겠다는 의미
@@ -x : 의미는 실행대상임

start-stop-daemon -u pulse -S -x /usr/bin/pulseaudio -- -D --system

 

tar 압축 잘못 푼것 전부 지우기

tar tf sc_serv2_linux_09_09_2014.tar.gz | sort -r | while read file; do if [ -d "$file" ]; then rmdir "$file"; else rm -f "$file"; fi; done

 

동영상에서 mp3 추출 방법

$ ffmpeg -i 마더\(Mother\)\ 시즌1\ E01.avi -acodec libmp3lame -metadata TITLE="Name of Song" OUTPUTFILE.mp3

# 여러파일에 적용할 경우
$ for vid in *.mkv; do ffmpeg -i "$vid" -acodec libmp3lame "${vid%}.mp3"; done

 

파일명 앞에 이름붙이기

for file in *; do mv "$file" "Vangelis-Voice-${file}"; done;
@@ 파일명 replace
for file in *; do mv "$file" "${file//Voice/Voices}"; done;

 

파일명에 whitespace 등이 들어간 파일 검색해서 지우기

find . -name "빌보드*" -print0 | while read -d $'\0' file; do echo "$file"; done
find . -name "빌보드*" -print0 | while read -d $'\0' file; do rm "$file"; done

 

@@ $’\0’는 스트링이 끝나는 Null 바이트를 지칭한다.

When you write $’\0′, that is internally treated identically to the empty string. For example:
$ a=$’\0′; echo ${#a}
0
That’s because internally bash stores all strings as C strings,
which are null-terminated — a null byte marks the end of the string.
Bash silently truncates the string to the first null byte (which is not part of the string!).

# a=$’foo\0bar’; echo “$a”; echo ${#a}
foo
3
When you pass a string as an argument to the -d option of the read builtin,
bash only looks at the first byte of the string. But it doesn’t actually check
that the string is not empty. Internally, an empty string is represented as
a 1-element byte array that contains just a null byte. So instead of reading
the first byte of the string, bash reads this null byte.

Then, internally, the machinery behind the read builtin works well with null bytes;
it keeps reading byte by byte until it finds the delimiter.

Other shells behave differently. For example, ash and ksh ignore null bytes
when they read input. With ksh, ksh -d “” reads until a newline.
Shells are designed to cope well with text, not with binary data.
Zsh is an exception: it uses a string representation that copes with arbitrary bytes,
including null bytes; in zsh, $’\0′ is a string of length 1
(but read -d ”, oddly, behaves like read -d $’\0′).

 

다른 프로세스 현재 터미널 foreground로 가져오기

@@ ps aux로 PID를 알아낸다.

@@ 프로세스를 Background로 이동

$ kill -20 PID

@@ 프로세스를 reptry로 잡는다.

$ reptyr PID

@@ 프로세스 트리 보여주기

$ pstree -nha

 

killall 사용법 

1) 설명: 같은 데몬의 여러 프로세스를 한번에 죽이는 경우에 사용한다. Killall은 프로세스이름
으로 프로세스를 종료시킨다.
2) 사용법
killall [option] 프로세스명
3) option
­HUP : 재시작한다.
4) 사용예
ㄱ. killall httpd
=> Apache 웹서버 데몬을 모두 종료한다.
ㄴ. killall mysqld
=> mysql 데몬을 모두 종료한다.
ㄷ. killall ­HUP xinetd
=> xinetd 데몬을 다시 실행시킨다.

 

kill 사용법

1) 설명: 프로세스에 특정한 signal을 보내는 명령이다. 보통 실행중인 프로세스에 종료 신호를 보낸다.
보통 중지시킬 수 없는 프로세스를 종료시킬때 많이 사용한다.

2) 사용법
kill [option] [­시그널번호 or ­시그널이름] PID
=> kill 명령 뒤에 어떤 프로세스의 PID(Process ID)를 적어주면 그 프로세스에 종료시그널을
보내게 된다. 보통의 경우 종료시킬 수 있으며, 만약에 종료되지 않으면 9를 signal_number
에 써 줌으로써 강제로 종료시킬 수 있다.
kill [option] [­시그널번호 or ­시그널이름] %작업번호

3) option
­l : 시그널의 종류를 나열한다. 시그널의 종류는 시그널 번호순서대로 나열한다.

4) signal_number와 이름
1 SIGHUP(HUP) : hang up의 약자로 프로세스를 재시작시키는 시그널이다.
2 SIGINT(INT) : 인터럽트. 실행을 중지시킨다. [CTRL] + [C] 를 눌렀을 때 보내지는 시그널이다.
3 QUIT : 실행중지.
9 SIGKILL(KILL) : 무조건 종료, 즉 강제 종료시키는 시그널이다.
15 SIGTERM(TERM) : Terminate의 약자로 가능한 정상 종료시키는 시그널로 kill 명령의 기본 시그널이다.
18 CONT : Continue. STOP등에 의해 정지된 프로세스를 다시 실행시킨다.
19 STOP : 무조건적, 즉각적 정지
20 TSTP : 실행 정지후 다시 실행을 계속하기 위하여 대기시키는 시그널이다. [CTRL] +[Z] 를
눌렀을 때 보내지는 시그널이다.

 

cp 여러파일 복사

cp {put_codes.php,_process_putcodes.php} ../epoint_hdb/
cp ../dir5/dir4/dir3/dir2/file{1..4} .
cp ../dir5/dir4/dir3/dir2/file[1234] .
cp {put_codes.php,_process_putcodes.php} ../epoint_hdb/
cp ../dir5/dir4/dir3/dir2/file{1..4} .
cp ../dir5/dir4/dir3/dir2/file[1234] .

 

inode로 파일 삭제

find . -inum 3506710 -delete

 

리눅스 유저 확인하기

cat /etc/passwd | grep /home | cut -d: -f1

 

메모리[램] 타입 알아내기

sudo dmidecode –type memory

 

다른 유저 커맨드 보는 프로그램

emerge sysdig

 

curl 요청 테스트

curl --header "application/x-www-form-urlencoded" -X POST -d "member.loginKey=522c0cf5-c698-4998-ac27-782339c14b1e&group.id=1&notice.message=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94" http://14.49.37.10:8080/outdoortracker/notice/notify

 

mv 다수 파일 한꺼번에 옮기기

mv file1 file2 file3 -t

 

FTP가 서버와 로컬이 인코딩이 다를경우, 제대로 다운 받는 방법 lftp

lftp 10.23.1.29

set file:charset utf-8
set ftp:charset big5

mirror (directory)

 

svn add 해야 하는 파일 찾기

svn status | awk '/^?/ {print $2}'

 

tee 커맨드의 사용 설명

You can use the tee command for that:

command | tee /path/to/logfile
The equivelent without writing to the shell would be:
재지향의 스위치를 파이프로 사용할수 있도록 해준다.

command > /path/to/logfile
If you want to append (>>) and show the output in the shell, use the -a option:

command | tee -a /path/to/logfile
Please note that the pipe will catch stdout only, errors to stderr are not processed by the pipe with tee. If you want to log errors (from stderr), use:

command 2>&1 | tee /path/to/logfile
This means: run command and redirect the stderr stream (2) to stdout (1). That will be passed to the pipe with the tee application.

 

리눅스 전체 시스템 복사

http://positon.org/clone-a-linux-system-install-to-another-computer

# 리모트로 복사

rsync -avHX SOURCE_IP::all/mnt/slash/ /mnt/slash/

# 하드카피

rsync -avHX /mnt/slash/ /mnt/usb/slash/

# 마운트후 GRUB 설치

mount --bind /proc /mnt/sdb/proc
mount --bind /sys /mnt/sdb/sys
mount --bind /dev /mnt/sdb/dev
mount --bind /run /mnt/sdb/run

# 설치시작

chroot /mnt/sdb/
grub2-install /dev/sda

# 아래처럼 편집할것

vi /etc/default/grub
--------------------------------------------------------------------------------
# The resolution used on graphical terminal.
# Note that you can use only modes which your graphic card supports via VBE.
# You can see them in real GRUB with the command `vbeinfo'.
#GRUB_GFXMODE=640x480
GRUB_GFXMODE=auto
--------------------------------------------------------------------------------
grub2-mkconfig -o /boot/grub/grub.cfg

 

7z unzip 하는 방법

sudo apt-get install p7zip

Uncompressing a *.7z 7zip files in Linux using 7za

$ 7zr e myfiles.7z

7-Zip (A) 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30
p7zip Version 9.04 (locale=C,Utf16=off,HugeFiles=on,1 CPU)

Processing archive: ../../myfiles.7z

Extracting myfiles/test1
Extracting myfiles/test2
Extracting myfiles/test
Extracting myfiles

Everything is Ok

Folders: 1
Files: 3
Size: 7880
Compressed: 404

Creating a 7zip compression file in Linux

$ 7zr a myfiles.7z myfiles/

7-Zip (A) 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30

p7zip Version 9.04 (locale=C,Utf16=off,HugeFiles=on,1 CPU)
Scanning

Creating archive myfiles.7z

Compressing myfiles/test1
Compressing myfiles/test2

Everything is Ok

 

iso 파일 usb에 담기

@@ 우선 포맷은 W95 FAT32 형식으로 만든다.

dd if=/home/user1/Downloads/debian-7.5.0-i386-netinst.iso of=/dev/sdb

 

저장장치 wipe 하기

sudo dd if=/dev/zero of=/dev/sdb bs=1M

 

ISO 디스크 굽기

@@ 커널에 로드 되었는지 확인

dmesg | grep cdrom

@@ CDROM 장치 찾기

wodim --devices

@@ 시디 굽기

sudo cdrecord -v -eject speed=8 dev=/dev/sg1 sample.iso

 

엑셀(xls) CSV로 컨버팅 하는 방법

apt-get install gnumeric

 

리눅스 시스템 전체 복사

cp -af /mnt/gentoo_source/* /mnt/gentoo/

 

FLAC to MP3

sudo apt-get install flac
sudo apt-get install lame

for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done

 

timer 타이머 사용

while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done

 

강제 CPU 돌리기, FAN 테스트

sudo apt-get install stress
stress --cpu 4 --timeout 600

 

$’\r’: command not found 에러 났을 경우

sed -i 's/\r$//' filename

 

배터리용량 알아보기

user1@user1-laptop:~$ upower -e
/org/freedesktop/UPower/devices/line_power_ADP1
/org/freedesktop/UPower/devices/battery_BAT1
/org/freedesktop/UPower/devices/DisplayDevice
user1@user1-laptop:~$ upower -i /org/freedesktop/UPower/devices/battery_BAT1

 

mplayer에서 커서로 화면 이동 시간 조절하기

vi ~/.mplayer/input.conf

LEFT seek -1
RIGHT seek +1

또는 현재 디렉토리에 넣고 아래와 같이 실행한다.

mplayer --input=conf=$PWD/input.conf mp3/20160806120003_10136_1_1_2.mp3

 

우분투 16.04에서는 mplayer2를 따로 다운 받아서 설치해야 한다.
https://launchpad.net/ubuntu/xenial/amd64/mplayer2/2.0-728-g2c378c7-4build1

 

유저 추가 방법

sudo useradd -m -s /bin/bash busan
sudo passwd busan

 

부팅가능USB만들기

@@ fdisk로 파일 FAT32로 되어 있는지 확인하고 mkfs.vfat으로 포맷을 해준다.
sudo mkdir /media/iso
sudo mount -o loop /home/user1/Downloads/ubuntu-14.04.1-desktop-amd64.iso /media/iso

@@ 필요에 의하면 퍼미션이 같은 유저로 복사해야 햔다.
cp -a /media/iso/. /media/8143-A437/

sudo apt-get install syslinux mtools
syslinux -s /dev/sdd1

cp -r /media/8143-A437/isolinux/ /media/8143-A437/syslinux
cp -r /media/8143-A437/syslinux/isolinux.cfg /media/8143-A437/syslinux/syslinux.cfg

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다