괜찮은_프리웨어2023. 4. 7. 14:40

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/438695

 

윈도우7 또는 윈도우8의 ISO 이미지를 USB 메모리에 옮겨서 부팅이 가능하게 해 주는 프로그램이다. 용량도 작고 사용법도 매우 간단해서 편리하구나.

USB 메모리를 연결하고 윈도우 ISO 이미지를 선택한 후에 "Do it!" 버튼을 클릭하면 ISO 이미지의 내용을 USB 메모리로 옮기고 부팅이 가능하도록 만들어 준다. ISO 이미지를 옮기기 전에 USB 메모리를 포맷하고 싶다면 "Quick Format" 항목을 체크해 주면 되겠다. (USB 메모리가 NTFS로 포맷되어 있어야 한다는 점에 유의하자. FAT32일 경우 부팅이 되지 않는다.)

WinToBootic 홈페이지는 여기로: http://www.wintobootic.com/

 

 

728x90
Posted by 반달가면
bash script2023. 4. 7. 14:29

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/533075

 

C언어를 배우면서 가장 먼저 나오는 함수가 printf일텐데, 리눅스 스크립트에서도 printf 명령이 거의 같은 형태로 구현되어 있어서 특정한 형식에 맞춰서 결과를 출력하고 싶을 때 요긴하게 쓸 수 있다.

아래의 몇가지 예시를 보면 감을 잡을 수 있을 것이다. 기본 형태는 printf [형식] [내용] 이런 식이다.

# 줄바꿈(new line) 없이 문자열(%s) 출력
printf "%s" "Hello World"
Hello World(명령 프롬프트가 바로 뒤에 위치)

# 줄바꿈 포함 문자열 출력(\n)
printf "%s\n" "Hello World"
Hello World
(명령 프롬프트가 다음 줄에 위치)

# 탭으로 구분하기(\t)
printf "%s\t%s\n" "Hello" "World"
Hello    World

# 앞에 0을 출력하면서 네자리로 정수(%d) 출력
printf "%04d\n" "123"
0123

# 소수점 두번째 자리까지 실수(%f) 출력(세번째 자리부터 반올림)
printf "%.2f\n" "123.556"
123.56

출력값의 길이를 지정해서 아래의 예시처럼 들여쓰기를 할 수도 있다.

# 길이 7, 소수점 두번째 자리까지 출력
printf "%7.2f\n" "123.556"
 123.56
 
# 길이7, 앞에 0을 출력하면서 소수점 두번째 자리까지 출력
printf "%07.2f\n" "123.556"
0123.56

여러개의 항목을 같이 출력할 때도 요긴하다. 아래의 예시를 보자.

# 이름[탭]이메일[탭]점수
printf "%s\t%s\t%.2f\n" "john" "john@mail.net" "75.332"
john    john@mail.net    75.33

16진수를 10진수로, 또는 10진수를 16진수로 바꿀 때도 편리하다.

# 16진수를 10진수로
printf "%d\n" "0xfeff"
65279

# 10진수를 16진수로
printf "%x\n" "65279"
feff

 

728x90
Posted by 반달가면
bash script2023. 4. 7. 14:21

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/531678

 

스크립트 내부에서 실행하는 명령어가 제대로 실행이 되었는지 아니면 오류가 발생했는지에 따라 이후 대응하는 방식을 결정하려면, 일단 명령의 종료 상태(exit status)를 알아야 한다. 종료 상태는 $? 변수에 저장된다. 이 변수의 값이 0이면 실행을 정상적으로 마치고 종료한 것이고, 0이 아니면 오류가 발생한 것이다. 아래의 예시를 보자.

 

echo "abcd"

abcd

echo $?

0

 

문자열 abcd를 출력하라는 명령이 정상적으로 실행되고 종료되었으므로 종료 상태, 즉 $? 변수의 값은 0이 된다. echo 명령으로 값을 출력해서 확인할 수 있다.

 

만약 이미 존재하는 디렉토리를 다시 만들려고 한다면 오류가 발생할 것이다. 이 경우에는 $? 변수의 값이 0이 아니다.

 

mkdir ~/Documents

mkdir: cannot create directory

echo $?

1

 

$? 변수를 if 조건문에 활용하면 바로 앞의 명령에서 오류 발생 여부에 따라 이후에 실행할 명령을 다르게 정할 수 있다. 아래의 예시를 보면 금방 감이 잡힐 것이다.

 

mkdir $my_dir

if [[ "$?" -eq 0 ]]

then echo "mkdir 명령이 정상적으로 실행되었습니다."

else echo "mkdir 명령 실행중에 오류가 발생했습니다."

fi

 

 

 

728x90
Posted by 반달가면
bash script2022. 8. 5. 14:58

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/531206

 

if 조건문에서 조건식을 적용할 때 대괄호(bracket) 하나만 쓸 수도 있고([ 조건식 ]) 대괄호 두개를 쓸 수도 있는데([[ 조건식 ]]), 일단 결과는 동일하게 나온다.

num=1
# 대괄호 하나
if [ $num -eq 1 ]
then echo "num is 1"
fi
# 대괄호 두개 (기능은 위의 구문과 동일)
if [[ $num -eq 1 ]]
then echo "num is 1"
fi

결과는 동일하지만 실행되는 방식은 다르다. 대괄호 하나인 경우는 별도의 프로세스를 실행한다. 즉, /usr/bin/[ 이 파일을 실행하여 조건식의 결과를 얻는 것이다. 반면에 대괄호 두개는 bash 자체적으로 내장된 기능을 사용하는 것이다. 따라서 별도의 프로세스를 실행하지 않는다.

간단한 스크립트에서는 전혀 상관이 없으나, 수많은 반복 작업을 해야 하는 상황이라면 별도의 프로세스를 사용하지 않고 내장된 기능을 쓰는 것이 조금 더 시간을 단축시킬 수 있지 않을까 싶다.

대괄호 두개를 쓸 경우 또 한가지 장점은, 조건식이 두개 이상 있어서 AND/OR 연산을 할 때 보기가 좀 더 편하다는 것이다.

num=1
name="john"
# 조건식: num=1 AND name="john"
if [ $num -eq 1 -a $name = "john" ]
then echo "$num: $name"
fi
# 대괄호 두개 사용
if [[ $num -eq 1 ]] && [[ $name = "john" ]]
then echo "$num: $name"
fi

대괄호 두개를 쓰면 각 조건식과 AND/OR 연산자가 대괄호에 의해 명확하게 분리되어 보이기 때문에 읽기가 훨씬 수월하다.

 

728x90
Posted by 반달가면