쉘 스크립트 "ls >-" 하면 생기는 파일에 대해서 질문드려요

sheep9121의 이미지

ls >-
를 하면 -라는 파일이 생기는걸 발견했습니다.
쉘 그래머 설명해놓은 문서에는, ">-" 는 왼쪽에 오는 파일디스크립터를 클로즈 한다. 파일디스크립터를 명시하지 않으면 stdout으로 한다고 하는데요.
예상대로 ls커맨드의 결과는 출력되지 않았습니다만, 현재 디렉토리에"-"라는 이상한 파일이 하나 생겨있고, 그 파일은, 사이즈가 0이 아님에도 cat 이나
vim으로 열어보면 보통 파일들과는 조금 다르게 작동하는것을 볼 수 있었습니다.

이 파일의 정체가 뭔가요?? 읽어주셔서 감사합니다

익명 사용자의 이미지

ls > filename 하면 ls 명령으로 출력된게 filename 에 저장됩니다. - 라는 파일 이름으로 파일이 생성된거죠. 그거 삭제하려면 애먹습니다. 파일 탐색기 열어서 GUI 환경에서 마우스로 삭제하세요.
그리고 - | 는 특별한 의미가 있습니다. 시간관계로 추후 설명하겠습니다.

김정균의 이미지

파일 디스크립터는 숫자일 경우만 가능하고, 숫자가 아닐 경우에는 파일로 취급 됩니다.
그러므로, ls >- 라고 파면 ls 의 결과는 - 라는 파일에 저장이 되게 됩니다.

그리고, - 라는 파일을 제어를 하려면 gnu getopt 를 사용하는 프로그램에서는 -- 를 이용하여 - 가 옵션 표시가 아님을 명시해 줘야 합니다.

즉,

[use@host ~]$ cat -- -

이렇게 해 주어야 "-" 파일의 내용을 출력할 수 있습니다. 삭제 역시

[use@host ~]$ rm -f -- -

로 해주어야 합니다. gnu getopt 에서는 - 다음에 문자가 있으면 옵션으로 취급을 하는데, 명령행에 -- 가 오면 이 조건을 무시하게 하는 것입니다.

익명 사용자의 이미지

>>>
gnu getopt 에서는 - 다음에 문자가 있으면 옵션으로 취급을 하는데, 명령행에 -- 가 오면 이 조건을 무시하게 하는 것입니다.
===
gnu getopt 에서는 - 다음에 문자가 있으면 옵션으로 취급을 하는데, 명령행에 -- 가 오면 옵션의 끝임을 알리는 옵션으로 동작합니다. 이렇게 하면 -- 옵션 뒤에 등장하는 - 는 stdin(혹은 stdout)를 의미하지않고 파일명으로 취급됩니다.
<<<

댓글 달기

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