이 프로그램은 이미 오래 전에 나돌던 프로그램입니다.

아시는 분은 다 아실 프로그램 dezend 입니다.

젠드엔코더로 암호화된 젠드 엔코더파일을 디코더하는 프로그램으로 방법은 간단합니다.

압축해제해서 디코더할 PHP소스 파일을 해당폴더에 넣어 php.exe 파일에 끌어넣기만 하면 됩니다.

예를 들어 test.php 파일을 php.exe 파일에 끌어넣기 하면 test.de.php 파일로 디코더되어 생성됩니다.

Dezend Encoder.zip

[출처] http://blog.habonyphp.com/383#.WWNC2-S1uUn


HTML 태그 내용을 그대로 출력하기 위해서는

<pre>  </pre> 태그사이에 html 소스를 입력해 주면 된다.


[Wed May 01 23:28:43 2013] [warn] Invalid command 'CBandLimit', undefined virtualhost name
[Wed May 01 23:28:43 2013] [warn] Invalid command 'CBandPeriod', undefined virtualhost name
 
위의 로그가 아파치 재시작 또는 문법 검증시 나타난다면

아파치 가상 호스트 설정파일에 ServerName 지시자가 주석처리되어 있거나 정의되지 않는 항목이 있는지

전체적으로 점검해 보아야 한다. 특히 Warning 로그에 해당 라인번호가 명시되지 않으니

수동으로 다 확인해야 한다.



쉘스크닙트를 작성하다 보면 특정 명령의 성공 유무가 궁금합니다.

이것은 해당 Process의 return 값하고 관계가 있을 수 있는데
C 프로그램의 main() 함수에서의 return 값 하고도 관계가 있습니다.
혹은 python 에서의 sys.exit(9) 같은 것과도 동일합니다.

모두 동일한데 0 이 리턴되면 정상이고 0이 리턴되지 않으면
오류로 간주합니다.

예를 들어

ls /etc | grep hosts

라는 명령을 실행하면

$ ls /etc | grep hosts
hosts
hosts.allow
hosts.deny


와 같은 결과가 나오고

$ echo $?
0

와 같이 이전 실행명령의 리턴값 ($?) 을 찍어보면 0 으로써 성공했다는 것이 나옵니다.

ls /etc 에 파일이나 폴더 목록을 보면서 hosts 라는 것이 있는 가를 grep 해본 결과입니다.

이제 host 대신 h_ost 라는 것을 대신 해 보면,

$ ls /etc | grep h_osts
$ echo $?
1


와 같이 0 이 아닌 값이 나옵니다.

이것을 기본적인 shell 스크립트로 만들어 본다면,

#!/bin/sh
ls /etc | grep h_osts
if [ $? -eq 0 ];then
    echo "CMD OK!"
else
    echo "CMD Failure!"
    exit 9
fi
echo "After CMD OK!"

위와 같이 만들 수 있습니다.

그런데 더 간단하게 보이는 방법으로서
명령을 실행하고 나서 쉘의 && || 논리 연산자를 이용하는 방법이 있습니다.

ls /etc | grep h_osts && echo "CMD OK!" || echo "CMD Failure!"

와 같이

CMD && 성공인경우의명령 || 실패인 경우의명령

과 같이 한줄로 표현 가능합니다. 물론 가독성을 위하여

ls /etc | grep h_osts \
    && echo "CMD OK!" \
    || echo "CMD Failure!"; exit 9
echo "After CMD OK!"

와 같이 줄 수 있습니다. (처음에는 적어도 그렇게 생각했지요) 

이것은 sh (bash 도 동일)의 논리 연산자의 실행 최적화와 관계 있는데요,

조건식 && 결과1 || 결과2

와 같은 구문이 있다고 하였을 때
조건식이 True 이면 && 다음 구문까지 확인하여 마저 True인가를 확인하지만 이미 True이기 때문에 && 다음의 결과1은 실행시키지만, || 다음의 결과2 구문은 실행시키지 않습니다.
조건식이 False 이면 그 반대로 || 다음의 결과2 구문만 실행합니다.

그런데 위의 명령을 수행하면 성공 하던 안하던 간에 무조건 exit 9으로 종료를 해 버렸습니다.


생각해보니 
명령1 && 명령2 || 명령3
이 하나의 명령이고 그것에 이어 (';') exit 9 명령이 수행되기 때문입니다.

여기서는 위의 명령3을 exit 9 까지 하나로 묶어 처리해야 합니다.

결론은,

ls /etc | grep h_osts \
    && echo "CMD OK!" \
    || echo "CMD Failure!"; exit 9; }
echo "After CMD OK!"

와 같이 해 주면 되는 것이었습니다.

어느 분께는 도움이 되셨기를...

[출처] http://egloos.zum.com/mcchae/v/11221790



그냥 echo 명령만 사용하면 자동으로 줄바꿈이 되는데, 전에 출력한 문자열을 지우고  새 문자열을 겹쳐 쓰고 싶다면 -n 옵션과 -e 옵션을 사용하자.

-n 옵션은 줄바꿈을 하지 않는 것이고, -e 옵션은 리턴(\r), 탭(\t) 등을 사용할 수 있게 해 주는 옵션이다.

echo "abc\tdef"
abc\tdef
echo -e "abc\tdef"
abc    def

전에 출력한 문자열을 지우고 그 자리에 새로운 문자열을 출력하려면, 첫번째 문자열을 출력할 때 -n 옵션으로 줄바꿈을 억제한 후에 다음 문자열을 출력할 때 -e 옵션으로 리턴(\r)을 출력해서 프롬프트를 줄 시작점으로 보내주면 된다. 아래의 예시를 참고하자.

echo -n "this is the first."
sleep 3
echo -e "\rthis is the 2nd.   "

첫번째 문자열 출력후 3초후에 두번째 문자열을 같은 줄에 겹쳐 쓰게 된다.

두번째 문자열이 첫번째보다 짧다면 이전 출력 뒷부분이 남을 것이므로 뒤쪽에 공백(space)을 충분히 주자.

shell script에서 진행 상황을 표시해 주고 싶을 때 요긴하게 사용할 수 있다.

아래는 위의 내용을 응용한 쉘스크립트 예제파일이다.

processing.sh


[출처] http://bahndal.egloos.com/406163