이 구문은 무엇을 의미합니까?


16

터미널을 처음 사용하고 사용법을 배우려고합니다.

이 라인들은 무엇을합니까? 그리고 그들은 어떻게 작동합니까?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"

7
$ man date && man echo껍질에서.
code_dredd

답변:


76
$ type echo
echo is a shell builtin

즉, echo명령은 bash프로그램 자체의 일부입니다 (bash를 사용한다고 가정)

-n 옵션이므로 그 기능을 살펴 보겠습니다

$ help echo
Write arguments to the standard output
...
-n  do not append a newline

그래서 우리가 라인을 실행할 때 :

zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$ 

인쇄 된 텍스트 다음에 줄 바꿈이 없기 때문에별로 좋지 않습니다. 다시 돌아오겠습니다.

$ type date
date is /bin/date

date명령은 별도의 프로그램입니다. 무엇을합니까?

$ man date
Display the current time in the given FORMAT, or set the system date.

date명령 뒤의 문자 는 형식 옵션 (앞에 와야 함 +)-날짜의 다른 부분이 지정됩니다 (예 %A: 요일의 전체 이름- man date전체 옵션 목록은 나머지 참조 ).

$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017

따라서 명령을 하나의 스크립트에 넣고 스크립트를 실행하면

Today's date is: Tuesday, February 7, 2017

좋은! 터미널에서 동일한 효과를 원하는 경우 세미콜론을 사용하여 줄 바꿈 대신 두 명령을 분리 할 수 ​​있습니다.

$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017

21
이것은 고급 RTFM 답변입니다. +1
YSC

1
나는 인수되기 전에이 무엇 더하기 기호에 대한 설명이 없습니다 말하고 싶지만
Délisson Junio

@ DélissonJunio는 편집했지만 Melebius의 답변은 직접 매뉴얼 페이지 인용문을 통해 더 잘 보여줍니다.
Zanna

@ 잔나 나는 OP가 아니지만 내 눈길을 끄는 것은 bash가 따옴표 사이의 모든 것을 플러스를 포함하지 않고 하나의 인수로 해석한다고 생각할 때 플러스가 이상하게 보인다는 사실이었습니다. 그러나 이것은 또 다른 질문 인 것 같습니다
Délisson Junio

2
실제로 따옴표 안에 플러스를 넣을 수도 있습니다. Bash는 인용 된 텍스트와 인접한 텍스트를 함께 실행하는 이상한 느낌을줍니다 (예 : cd "$ x"/ output 또는 cd nospace / "space with"/ nospace
StarWeaver

10

명령 페이지 인 수동 페이지로 시작해야합니다 man. 에 man <command>대한 정보를 얻으려면 입력 하십시오 <command>. 탐색man 은 매우 직관적이지는 않지만 https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages 와 같은 가이드가 많이 있습니다 .

관련 부품 man echo및의man date :

에코

echo [SHORT-OPTION]... [STRING]...

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

따라서 문자열을 인쇄하고 그 후에 새 행으로 이동하지 않습니다 (기본 동작). 다음 명령의 출력은 에코 문자열의 오른쪽에 인쇄됩니다.

데이트

date [OPTION]... [+FORMAT]

FORMAT controls the output.  Interpreted sequences are:

%A     locale's full weekday name (e.g., Sunday)

%B     locale's full month name (e.g., January)

%d     day of month (e.g., 01)

%Y     year

By default, date pads numeric fields with zeroes.  The following optional flags may follow '%':

-      (hyphen) do not pad the field

나는 그것이 분명하기를 바랍니다. 그렇지 않은 경우 언제든지 문의하십시오.


고마워 다른 질문이 있습니다 : 터미널에 날짜를 표시하는 내장 함수가 이미 있습니까?
알 수없는 사람

@Zanna 그것은 실제로 새로운 질문이 아니며, 내가 물었던 질문과 관련이 있습니다.
알 수없는 사람

1
@Unknownperson 기본적으로 터미널에 날짜를 표시하려면 PS1 변수를 편집해야하거나 (아마도 터미널 앱으로 수행 할 수 있기 때문에)이 코드의 기능과 완전히 다른 질문입니다 설정-내가 무지한 것에 대해))이 게시물의 범위를 벗어난
Zanna

1
@Unknownperson date 터미널에 날짜를 표시합니다 (명령 줄 인터페이스). Zanna가 제안한 것과 같이 더 많은 것을 원한다면 새로운 질문을하십시오.
Melebius

4
echo -n "Today's date is: "

인쇄 날짜 : 오늘 날짜 :

date +"%A, %B %-d, %Y"

다음과 같이 인쇄됩니다 : 2017 년 2 월 7 일 화요일

조언 :

  1. 사용 man또는 --help명령은 다른 명령에 대한 자세한 내용을 알고 있습니다.
    예 :

    man echo
    echo --help
  2. 이러한 도전을 시도하십시오 . 터미널에서 일을하는 법을 배우는 데 도움이되는 도전은 정말 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.