Hard Disk 정보 알아내기..질문 입니다.

hyper9의 이미지


어떻게 보면 간단한 프로그래밍인데요.

1) 현재 System에 존재하는 Disk가 몇개 있는지 알아내고

2) User에게 보여 줍니다.

3) 그리고 User에게 어느 Disk 를 선택할지 물어보고

4) 그 답을 받으면, 해당 Disk를 어떻게 Partitioning 할지를
물어봅니다.

5) 그리고 그 답을 받으면 해당 Disk에 Partition을 만들고

6) Format합니다.

이런 작업을 하려고 합니다.
가능하면 Script를 써서 하고 싶은데요,,,(이유는 회사에서 기존에
이와 비슷한 기능을 하는 Program이 Shell Script로 되어 있어
같이 분위기를 맞춰주기 위함입니다..ㅜㅜ)

하지만 Shell Script에 익숙하지 않아서 모든걸 자꾸 C로 짜버리고
싶은 생각이 드네요..

위의 경우도 1) 번 절차의 경우 그냥 /proc/partition을 읽어서 parsing을 하고 싶어지는데요.
이것보다 더 웬지 Script 다운 그런 방법이 없을까요? ㅜㅜ

2) 번의 경우는 1)번을 어떻게 구현했는가에 달려 있을 것 같습니다.
C언어를 써서 /proc/partition을 parsing했다면, Disk정보를 적당한 구조체에 넣어놓을 수 있고
그걸 보여주면 될텐데,,만일 1)번의 경우를 어떠한 Script language적인 방법으로 했다면,, 그에
맞게 2)번도 만들어야 할 것 같은데,,어떻게 하는게 좋을지 ,,조언 부탁드려봅니다.

일단 1) ~ 2) 번을 해결한 후 ,,,3) ~ 6) 번도 생각을 정리해 볼 생각입니다.
1), 2)번에 대해 조언을 주시면 엄청 ~ 감사하겠습니다. ^^

hyper9의 이미지

하지만 모르니,,제겐 간단하지만은 않네요 ~

어떤거냐면요..

예를 들어 if test "$device" = "hda"; then
라는 문장에 대한 건데요..

이게 device가 hda라면 ~ 이란 뜻인것 같은데요,,
반대로 device가 hda가 아니라면 ~ 을 표시하려면
어떻게 해야하는지 질문입니다..~

vamf12의 이미지

세가지 방법이 있습니다. 세가지 모두 본쉘에서 되는지는 모릅니다. ㅎㅎ

1) = VS !=
같다가 있으면, 다르다도 있겠죠

if test "$device" != "hda"; then

2) ! (종료 코드 변경)
test는 명령어 입니다. 뒤의 식을 판별해서 $?값을 셋팅해줍니다. (if는 단순하게 $?값이 0이면 참이고, 아니면 false로 간주하죠)
!(내부명령어)를 사용하면, $?값이 뒤집힙니다.
(한가지 알고 계시면 좋은게, 쉘스크립트는 안쪽의 명령어가 먼저 실행됩니다.)

if ! test "$device" = "hda"; then

위의 코드가 실행되는 순서를 살펴 봅시다.
$device가 치환됩니다.
test 명령어가 실행되어서 두 문자열을 비교 합니다.
! 명령어가 $?값을 뒤집습니다.
if 명령어가 $?값을 판별합니다.

3) : (널명령어)
아무일도 하지 않는 널 명령어 입니다. (정확하게 말하면 $?값이 0으로 바뀝니다.) 널명령을 이용해서 if문의 양식을 맞춰 줘서 else부분만 이용하는 겁니다.

if test "$device" = "hda"; then
    :
else
    bla bla~
fi

블라 블라 부분에 할일을 적어 주면 되겠죠 ^^
vamf12의 이미지

쉘스크립트 답다라... 다운게 있나요?

하드디스크 찾기의 가장 간단한 방법은 역시...

MENU="1"
for disk in /dev/hd* /dev/sd*
do
        test -e $disk || continue
        echo "$MENU) `basename $disk`"
        MENU=`expr $MENU + 1`
done

hyper9의 이미지

위의 답변들은 정말 도움이 많이 되었습니다.
다시 한번 감사드리면서요..

HDD의 size를 알아내는 방법을 질문하고 싶습니다.
Script상에서 HDD size를 알아내야 하는 경우가 있어서요..

/proc/partitions를 읽어내서 parsing하는 방법말고는
딱히 생각나는게 업어서요..

뭔가 더 간단하면서 smart한 방법이 있을 것 같은데,,조언 부탁드립니다.

vamf12의 이미지

파싱하는 방법밖에는 없을것 같네요 ^^
간단하게 파싱하는 것은 인자였나? $n 변수를 이용하면 됩니다.

set `grep hdb$ /proc/partition`
BLOCKS="$4"

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.