유용하게 사용하는 쉘 스크립트에는 어떤 것이 있나요?

eunjea의 이미지

밑에 alias 얘기가 나왔으니...
여러분이 자주 쓰는 간단한 쉘 스크립트는 어떤것이 있는지요.

$ cat ~/bin/tarx
#!/bin/sh

if [ $# -eq 0 ]
then
        echo ""
        echo "Usage: `basename $0` filename" >&2
        exit $NOARGS
fi

if [ -f $1 ] ; then
        filename=$1
        if [ ${filename##*.} != "bz2" ]
        then
                tar xvzf $filename
        else
                tar xvjf $filename
        fi
else
        echo "WTF!? ;-("
fi

댓글

perky의 이미지

phpBB의 주제 2개를 1개로 합치는 스크립트입니다. bbs.python.or.kr 에서 주제를 합쳐야 할 일이 꽤 많아서.. :)
원래 파이썬 소스인데.. 쉘 스크립트인 척 해 봤습니다.. (..;)

#!/bin/sh
python -c '
import MySQLdb
from MySQLdb.cursors import DictCursor
import sys

phpbbprefix = "pybbs_"

if len(sys.argv) < 4:
    print "Usage: %s <forumid> <origtopicid> <topicid_todelete>" % sys.argv[0]
    raise SystemExit
else:
    forumid = int(sys.argv[1])
    origtopicid = int(sys.argv[2])
    deltopicid = int(sys.argv[3])

bdb = MySQLdb.connect(host="localhost", user="사용자", passwd="비밀번호", db="데이터베이스")
b = bdb.cursor()

b.execute("select topic_views, topic_replies, topic_first_post_id, topic_last_post_id from %stopics where topic_id = %d;" % (phpbbprefix, origtopicid))
odt = b.fetchall()
if len(odt) != 1:
    print "Oops! orig not match"
    raise SystemExit
b.execute("select topic_views, topic_replies, topic_first_post_id, topic_last_post_id from %stopics where topic_id = %d;" % (phpbbprefix, deltopicid))
ndt = b.fetchall()
if len(ndt) != 1:
    print "Oops! orig not match"
    raise SystemExit

topic_views, topic_replies, topic_first_post_id, topic_last_post_id = odt[0]
topic_views += ndt[0][0]
topic_replies += ndt[0][1]
topic_first_post_id = min(topic_first_post_id, ndt[0][2])
topic_last_post_id = max(topic_last_post_id, ndt[0][3])

query = "update %stopics set topic_views=%d, topic_replies=%d, topic_first_post_id=%d, topic_last_post_id=%d where topic_id=%d;" % (phpbbprefix, topic_views, topic_replies, topic_first_post_id, topic_last_post_id, origtopicid)
b.execute(query)
print query

query = "delete from %stopics where topic_id=%d;" % (phpbbprefix, deltopicid)
b.execute(query)
print query

query = "delete from %stopics_watch where topic_id=%d;" % (phpbbprefix, deltopicid)
b.execute(query)
print query

query = "update %sposts set topic_id=%d where topic_id=%d;" % (phpbbprefix, origtopicid, deltopicid)
b.execute(query)
print query

query = "select forum_topics from %sforums where forum_id=%d;" % (phpbbprefix, forumid)
b.execute(query)
fdata = b.fetchall()
if len(fdata) != 1:
    print "OOPS!"
    raise SystemExit
query = "update %sforums set forum_topics=%d where forum_id=%d;" % (phpbbprefix, fdata[0][0]-1, forumid)
b.execute(query)
print query

print "Merged!"

# ex: ts=8 sts=4 sw=4 et

You need Python

정태영의 이미지

mp3하나를 무한반복으로 틀어놓기 위한 방법으로 -_-;;

while [ 1 ] ; do mpg123 ......mp3 ; done

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

ironiris의 이미지

게으른 아파치 사용자는 발등이 불떨어지기 전까지 로그 분석도 안하고.. 초기화시켜버립니다. --;
cp -f /dev/null /usr/local/apache/log/access_log;cp -f /dev/null /usr/local/apache/log/error_log

김정균의 이미지

흠.. 이건..

:> /usr/local/apache/log/access_log; :> /usr/local/apache/log/error_log

가 조금 더 깔끔할 것 같군요 :-)

정태영의 이미지

ironiris wrote:
게으른 아파치 사용자는 발등이 불떨어지기 전까지 로그 분석도 안하고.. 초기화시켜버립니다. --;
cp -f /dev/null /usr/local/apache/log/access_log;cp -f /dev/null /usr/local/apache/log/error_log

/usr/local/apache/log/access_log 와..
/usr/local/apache/log/error_log 를...

/dev/null 로 링크시켜놔버리세요 =3=33
아니면.. 로그화일을.. /dev/null 로 적어두면 =3=33

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

최종호의 이미지

runsed, 환상입니다.

Unix Power Tools에 나온 것입니다.

#! /bin/sh
# runsed - run a sed script on file(s), replace originals with edited versions

# Script looks nicer with tabstops set at 4 (in vi, :se ts=4)

myname="`basename $0`"
script=sedscr
stat=1                  # Default exit status (reset to 0 before normal exit)
temperr=/tmp/RUNSEDe$$
tempout=/tmp/RUNSEDo$$
trap 'rm -f $temperr $tempout; exit $stat' 0
trap 'echo "$myname: Interrupt!  Cleaning up..." 1>&2' 1 2 15

if [ ! -r $script -o ! -f $script ] ; then
        echo "$myname quitting: $script isn't readable or isn't a file." 1>&2
        exit
fi

case $# in
0) echo "Usage: $myname file-to-edit [files-to-edit]" 1>&2; exit ;;
esac

for x
do
        echo "$myname: editing $x: " 1>&2
        if [ "$x" = $script ] ; then
                echo "$myname: not editing $script!" 1>&2
        elif [ ! -s "$x" -o ! -f "$x" ]; then 
                echo "$myname: original $x is empty or not a file." 1>&2
        elif [ ! -w "$x" ] ; then
                echo "$myname: can't write $x -- skipping..." 1>&2
        else
                # If get here, run sed.  To keep source file's permissions
                # and owner the same, don't overwrite it until the end --
                # and use "cat > file" to write the file in place.
                sed -f $script "$x" >$tempout 2>$temperr
                if [ $? -ne 0 -o -s $temperr ] ; then
                        cat $temperr 1>&2
                        echo "$myname quitting: 'sed -f $script $x' bombed!?!" 1>&2
                        exit
                elif [ -s $tempout ] ; then
                        if cmp -s "$x" $tempout; then
                                echo "$myname: $x file not changed." 1>&2
                        else
                                if /bin/cat $tempout > $x
                                then echo "$myname: done with $x" 1>&2
                                else
                                        echo "$myname quitting: problem replacing $x?" 1>&2
                                        exit
                                fi
                        fi
                else 
                        echo "$myname quitting: sed produced an empty file - check your $script." 1>&2
                        echo "$myname: didn't change $x" 1>&2
                        exit
                fi
        fi
done

echo "$myname: all done" 1>&2
stat=0
exit
쿠크다스의 이미지

태영님 글보구 문득 떠올라 한번 만들어 봤습니다.
인수로 들어온 명령을 계속 반복하는 겁니다.

#!/bin/bash
yes "$1" | sh

과자가 아닙니다.
cuckoo dozen, 즉.12마리의 뻐꾸기란 뜻입니다.

코너리의 이미지

#!/bin/bash

export SOX_BIN=sox
export MPG321_BIN=mpg321
export OGGENC_BIN=oggenc


# 공백을 #X로 처리한 mp3 파일 목록을 얻는다.
LIST=$(ls *.[mM][pP]3 | sed 's/\ /#X/g');


for i in  $LIST; do

        fullname=$(echo "$i" | sed 's/#X/\ /g');
        name=$(echo "$fullname" | sed 's/.[mM][pP]3//g');
        echo $fullname;

        if [ ! -f "$fullname"]; then
                continue;
        fi

        # mpg321과 sox를 이용한 트릭으로 mp3파일을 wav파일로 변환한다.
        $MPG321_BIN -s "$fullname" | $SOX_BIN -t raw -r 44100 -s -w -c 2 - -t wav "$name.wav"

        # oggenc를 이용해 wav 파일을 ogg로 변환한다.
        $OGGENC_BIN "$name.wav" "$name.ogg";

done

혼자 만들어서 사용했는데...

그다지 멋진 쉘 스트립트는 아니지만, 유용할 것 같아서 올려봅니다.[/code]

The difficulty in life is the choice.

nohmad의 이미지

mysql 접속을 위한 스크립트입니다.
--tee 옵션을 줘서 쿼리 및 결과를 전부 저장하고,
3일 지난 것들은 지웁니다.

#!/bin/sh

TIMESTAMP=`date +%s`
SAVEDIR=~/.mysql

case $1 in
   foodb)
      DB_HOST=211.xx.xx.xx
      DB_NAME=FOODB
      DB_USER=USER
      DB_OPT=
   ;;
   *)
      echo "접속할 데이터베이스는?"
      exit
   ;;
esac

TEEFILE=$SAVEDIR/$DB_NAME-$TIMESTAMP.tee

find $SAVEDIR -mtime +3 -exec rm -f {} ';'
/usr/bin/mysql \
    --host=$DB_HOST --user=$DB_USER --password \
    $DB_NAME --tee=$TEEFILE $DB_OPT
정태영의 이미지

쿠크다스 wrote:
태영님 글보구 문득 떠올라 한번 만들어 봤습니다.
인수로 들어온 명령을 계속 반복하는 겁니다.

#!/bin/bash
yes "$1" | sh

천재-_-;;;;;;;;

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

정태영의 이미지

업그레이드 -_-;;

#!/bin/sh

yes "$@" | sh

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

doodoo의 이미지

아침마다 노래를 들려주는 기상음악 플레이어 입니다...
크론에 등록되어 있구요

#!/bin/sh
mp3dir=/linD/music/mp3/fun
#mp3dir=/root/music
doneval=0
 
filecount=$(ls -l $mp3dir/* |wc -l)
#echo file count "$filecount"
retval=`echo "150/($filecount * 3)"|bc`
#echo $retval
 
while  (expr $retval - $doneval)
do
                for i in ${mp3dir}/*
                do
                                /usr/local/bin/mplayer  "$i" > /dev/null
                                #echo playing "$i"
                                sleep 1
                done
                doneval=`expr $doneval + 1`
done

노래나올때 빨리 출근해야 하므로...모니터 켜지않고..바로 단축명령으로
킬하고 있습니다...kkmp는 다음곡, kmp는 완전 중지.
.bashrc 에 등록되어 있구요
function kmp {
        kill `ps -ef |grep 'mp3.sh'|grep -v grep|awk '{print $2}'`
        echo "kill process......."
}
function kkmp {
        ps -ef|grep '.mp3' |grep mplayer|grep -v grep | awk '{print $2}'|xargs kill $1
}

근데...위의 정태영님의 쉘에....
yes "$@" | sh 이 부분의 |sh 을 정말 모르겠네요...무슨 뜻인가요?

bibreen의 이미지

bash에서 queue를 쓰고 싶어서 google에서 찾다가, 아래의 URL에서 코드를 보고
제 취향대로 수정해서 쓰고 있습니다. :)

http://www.tech-recipes.com/bourne_shell_scripting_tips911.html

#!/bin/sh
#
# queue.sh
# bash용 queue 스크립트
 
 
create_queue()
{
	local qName=$1
	declare -a $qName
}
 
queue_insert_head()
{
	local qName=$1
	local element=$2
	eval "${qName}=(\"$element\" \"\${${qName}[@]}\")"
}
 
queue_insert_tail()
{
	local qName=$1
	local element=$2
	eval "${qName}=(\"\${${qName}[@]}\" \"$element\")"
}
 
queue_remove_head()
{
	local qName=$1
	eval "${qName}=(\${${qName}[@]:1:\${#${qName}[@]}})"
}
 
queue_remove_tail()
{
	local qName=$1
	eval "${qName}=(\${${qName}[@]:0:\$((\${#${qName}[@]}-1))})"
}
 
queue_clear()
{
	local qName=$1
	eval "unset ${qName}[@]"
}
 
queue_head()
{
	local qName=$1
	eval "echo \"\${${qName}[0]}\""
}
 
queue_tail()
{
	local qName=$1
	eval "echo \"\${${qName}[\$((\${#${qName}[@]}-1))]}\""
}
 
## sample code
create_queue myQueue
myQueue=( 2 3 )
queue_insert_head myQueue 1
echo ${myQueue[@]}
queue_head myQueue # echo head element of queue
echo ${myQueue[0]} # get head element of queue
queue_insert_tail myQueue "5 7"
echo ${myQueue[@]}
queue_tail myQueue # echo tail element of queue
echo ${myQueue[$((${#myQueue[@]}-1))]} # get tail element of queue
queue_insert_head myQueue 0
echo ${myQueue[@]}
queue_remove_tail myQueue
echo ${myQueue[@]}
queue_remove_head myQueue
echo ${myQueue[@]}
queue_clear myQueue
echo ${myQueue[@]}
linuxian의 이미지

http://linuxian.innori.com/47

rss.xml따운받아서 그날 mp3파일 뽑아내서 다운받는거~

아 그리고~ 네이버 영한 사전을 이용한 터미널에서 단어찾는 스크립도~사용중

무궁한 쉘~

linuxian의 이미지

http://linuxian.innori.com/47
rss.xml파일 받아서 그날 mp3다운받는 쉘스크립
그리고~

네이버 영한 사전을 이용한 터미널에서 사전찾기~
스크립~^^

keizie의 이미지

#!/bin/sh
 
TARGET_URL="$1"
BASE_URL=$(dirname $TARGET_URL)
NEXT_URL="go first"
 
until [ -z "$NEXT_URL" ]
do
w3m -I cp949 -O cp949 -cols 72 -dump $TARGET_URL | awk 'BEGIN {sw=""} /\[목록보기\]/ {sw=""} {if (sw) print} /댓글 부분으로/ {sw="ok"}'
NEXT_URL=$(w3m -dump_source $TARGET_URL | grep -m 1 "윗글" | awk -F\' '{print $2}')
TARGET_URL="$BASE_URL/$NEXT_URL"
done

EUC-KR로 저장하고 문피아에서 시작할 글의 주소를 붙여주면 위로 위로 올라가면서 긁어줍니다.

매번 온라인으로 읽는 것보다는 저장해놓고 베가에서 망가미야라는 (원래는 만화 보는) 프로그램으로 읽는 게 편해서 만들어 봤습니다. 글 하나를 소스와 덤프로 두 번 접근하는 게 덜 효율적이긴 합니다만서도.

여기에 한 겹 더 입히면 연재되는 글을 꾸준히 추적하면서 받아오게 할 수도 있겠지만, 그러기엔 귀찮.. =3=3

환골탈태의 이미지

윈도우에서 zip을 가져다가 쓸일이 많은데 일일이 디렉토리 만들고 할려니 귀찮을때 좋습니다.
특정 디렉토리의 모든 zip 파일을 해제할때는 -a 옵션입니다.

filename : unzip.sh

#!/bin/bash
if [ $# -eq 0 ]; then
  echo "Usage) $0 [-a|filename]"
  exit
fi
if [ $1 = "-a" ]; then
  for input in `ls *.zip`; do
    DNAME=`basename $input`
    DNAME=${DNAME%.zip}
    mkdir -p $DNAME &>/dev/null
    unzip -u -d $DNAME $input
  done
else
  DNAME=`basename $1`
  DNAME=${DNAME%.zip}
  mkdir -p $DNAME &>/dev/null
  unzip -u -d $DNAME $1
fi

__________________________________________________
Feisty로 전부 다 바꾸고 있습니다 ^^

__________________________________________________
모두 다 Hardy로 업그레이드 하고 있습니다.

s3xus의 이미지

.

장모군의 이미지

find . -type f -name "*.[chSs]" -o -name "*.cpp" -o -name "*.hpp" | xargs grep "$1"

revizes의 이미지

#!/bin/sh
DURATION="1202s"
DATE=`/bin/date '+%Y%m%d'`
DIR=/home/revizes/ebs
MPLAYER=/usr/bin/mplayer
LAME=/usr/bin/lame
FILE_PATH=${DIR}/easy_english_${DATE}
FIFO_PATH=${DIR}/ebsfifo
URL="mmst://219.240.37.11/L-FM_300k"
 
mkfifo ${FIFO_PATH}
 
${LAME} -q2 -b 128 ${FIFO_PATH} ${FILE_PATH}.mp3 & ${MPLAYER} ${URL} -ao pcm:file=${FIFO_PATH} & sleep ${DURATION}
 
/usr/bin/killall mplayer
/usr/bin/killall lame
 
/bin/rm -f ${FIFO_PATH}

다 덤벼! 다 받아줄께!!

다 덤벼! 다 받아줄께!!

정태영의 이미지

실수로 댓글쓰기 버튼을 눌러버렸네요 -_-;; 죄송죄송;;

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

jam02의 이미지

예전에 어디서 퍼온 것 같은데..... 그대로 쓰는 건지 조금 수정한건지 기억은 안나네요..
$HOME/bin에 넣어두고 씁니다.

euckr->utf8으로 물론 반대도 있죠.ㅎㅎ

#!/bin/bash
if [ $# -lt 1 ] 
then
 echo "Try 'euc2utf --help' for more information."
elif [ "$1" = "--help" ] 
then 
  echo "Convert EUC-KR format text to UTF-8"
  echo "euc2utf8 [filename]"
else
  while [ "$1" != "" ] ;  
  do
    iconv -c -f euc-kr -t utf-8 "$1" > "$1.tmp"
    mv -f "$1.tmp" "$1"
    shift 1
  done 
fi

=> 쓰려고 하니.. 갑자기 버그가 보이네요..
"$1.tmp"라는 파일이 이미 존재하면 대략 낭패일듯.. ㅎㅎㅎ

unipro의 이미지

#!/bin/sh
 
if [ $# -lt 1 ] 
then
    echo "Try 'euc2utf --help' for more information."
elif [ "$1" = "--help" ] 
then 
    echo "Convert EUC-KR format text to UTF-8"
    echo "euc2utf8 [filename]"
else
    while [ "$1" != "" ] ;  
    do
	TMPFILE=`mktemp /tmp/$1.XXXXXX` || exit 1
	iconv -c -f euc-kr -t utf-8 "$1" > "$TMPFILE"
	mv -f "$TMPFILE" "$1"
	shift 1
    done 
fi

----
내 블로그: http://unipro.tistory.com

내 블로그: http://unipro.tistory.com

angpang27의 이미지

vi j.sh

#!/bin/bash

jdown;jboot

고통이 지천에 있다한들 어이해 멈출수있더냐

pinebud의 이미지

요즘 많이 쓰는 명령은 이렇습니다 -_-;

$ python
>> 100 + 128 [Enter]

A rose is a rose is a rose..

doodoo의 이미지

계산기는 bc 가 좋던데요..^^;

NamSa의 이미지

메일 :

편하게 메모할려고 사용하고 있습니다
alias memo='echo -e "\n-------------------------------------------------\n`date +%c`\n-------------------------------------------------\n" >> /home/namsa/my/memo ;vi /home/namsa/my/memo +'

아래건 일기장
alias daily='echo -e "\n-------------------------------------------------\n`date +%c`\n-------------------------------------------------\n" >> /home/namsa/my/daily/`date +%F` ;vi /home/namsa/my/daily/`date +%F` +'

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.