소개
참고:이 튜토리얼의 대화형 터미널은 현재 개선된 대화형 학습 경험을 위해 비활성화되어 있습니다. 여전히 이 튜토리얼을 사용하여 명령 줄에 대해 배우고 Linux 명령을 연습할 수 있지만, 컴퓨터의 터미널이나 가상 머신의 터미널을 사용해야 합니다.
오늘날 많은 사람들은 (데스크톱 및 랩톱), 스마트폰 및 태블릿과 같은 컴퓨터, 그래픽 사용자 인터페이스(GUI로도 불림)를 가지고 있으며, 이를 통해 앱, 웹 및 파일(문서 및 사진과 같은)을 시각적인 경험을 통해 탐색할 수 있습니다. Windows, macOS 및 Linux 운영 체제는 각각 데스크톱 환경(예: 폴더 및 파일 이미지)과 드롭다운 메뉴의 다양한 형태를 제공하여 컴퓨터 프로그램, 응용 프로그램 및 자체 미디어에 액세스할 수 있습니다.
GUI는 많은 사용자에게 컴퓨터를 사용하는 직관적인 방법일 수 있지만, 종종 우리에게 기계를 완전히 제어할 수 있는 최고의 권한을 제공하지 않을 수 있으며, 소프트웨어나 파일을 설치, 수정 또는 삭제할 수 없게 할 수도 있습니다. 또한, GUI는 주로 시각적이므로 모든 사용자에게 접근성이 좋지 않을 수 있습니다.
GUI가 없는 자신의 개인 컴퓨터 및 원격 클라우드 서버를 탐색하는 한 가지 방법은 텍스트 기반 터미널 또는 명령 줄 인터페이스(CLI)를 통해 수행하는 것입니다.
거의 모든 컴퓨터 운영 체제에는 터미널 인터페이스가 있으며, 터미널 에뮬레이터도 태블릿 및 스마트폰용 앱으로 제공됩니다. 터미널은 사용자에게 관리자 권한 증가, 환경을 사용자 정의하는 능력이 높아지고 프로세스 자동화 기회를 제공함으로써 기계에 대한 더 많은 전반적인 접근성을 제공합니다. 또한 클라우드 서버와 같은 원격 컴퓨터에 액세스할 수 있는 기능도 제공합니다.
이 자습서는 터미널 환경에 익숙하지 않은 사용자에게 웹 브라우저에 내장된 웹 터미널을 통해 명령 줄 인터페이스 사용의 기본 사항을 제공할 것입니다. 이미 터미널에 어느 정도 익숙한 경우에는 대신 리눅스 터미널 소개 자습서를 참고하는 것이 좋습니다. 이 자습서를 완료하면 리눅스(또는 macOS) 컴퓨터나 서버에서 터미널을 사용하는 방법에 대한 이해를 얻게 될 것입니다.
터미널 창 이해하기
새로운 컴퓨터나 스마트폰에 처음 액세스할 때는 아마도 전원을 켜고 사용 가능한 앱을 확인하고, 장치를 맞춤 설정하여 필요에 맞게 사용하는 방법을 익히려고 할 것입니다. 터미널을 통해 컴퓨터에 익숙해질 수 있습니다.
이 브라우저 창에서 클릭하여 시작한 대화형 터미널은 브라우저 창 하단에 흰색 직사각형을 표시합니다.
터미널을 시작하지 않았다면, 이 자습서의 시작 부분에 있는 버튼을 클릭하여 지금 시작하십시오.
대화형 브라우저 터미널에는 달러 기호, $
와 깜빡이는 커서가 있어야 합니다. 여기서 터미널에 명령을 입력하여 터미널에게 무엇을 할 지 알려줍니다.
시작한 터미널은 Ubuntu 20.04 터미널입니다. Ubuntu는 Unix 운영 체제를 기반으로 한 인기있는 Linux 배포판입니다. macOS 운영 체제도 Unix를 기반으로 합니다. 이 자습서를 Linux 또는 macOS 기계에서 읽고 계시면, 이 안내서에서 사용할 내장 터미널과 유사하게 작동하는 운영 체제에 터미널이 있어야 합니다.
이러한 Unix(또는 *nix 기반) 운영 체제의 많은 경우 프롬프트 끝에 있는 기호는 다음과 같습니다:
$
또는 달러 기호 — 일반 사용자로 로그인한 상태입니다#
또는 해시/샵 기호 — 상승된 권한을 가진 사용자로 로그인한 상태입니다
# 환경에 표시된 사용자는 기본적으로 슈퍼 사용자 또는 관리자로 간주되는 루트 사용자로도 알려져 있습니다.
아래의 브라우저 터미널에서의 우리 목적을 위해, 일반 사용자로서 로그인되어 있지만 sudo
명령을 통해 관리자 권한도 가지고 있습니다. 이는 일시적인 터미널이므로 작성하는 내용에 대해 걱정할 필요가 없습니다. 우리가 끝나면 모든 것을 삭제할 것입니다. 비슷하게, 클라우드 서버에서는 문제가 발생할 경우 서버를 파괴하고 새로 시작할 수 있습니다.
참고하세요 로컬 컴퓨터의 터미널에서 작업할 때는 관리자로서 터미널에서 영구적인 변경을 가할 수 있는 경우가 있으므로 더욱 주의를 기울이는 것이 좋습니다.
이제 브라우저에서 실행된 터미널로, 로컬 컴퓨터에서 입력할 수 있습니다. 텍스트는 깜박이는 커서에 나타납니다. 다음 섹션에서 여기에 입력할 수 있는 내용에 대해 알아보겠습니다.
디렉터리에 대한 친숙해지기
터미널에서 명령을 입력하여 작업을 시작하겠습니다. 명령 은 사용자가 컴퓨터에게 무엇을 하길 원하는지 전하는 명령입니다. 명령을 터미널에 입력한 다음 컴퓨터가 특정 명령을 실행하도록 하려면 ENTER
또는 RETURN
을 누르시면 됩니다.
다음 명령을 입력한 다음 ENTER
를 누르십시오. 명령을 복사하거나, 해당 코드 블록 위에 마우스를 가져가면 클릭하여 실행 중인 대화형 터미널에서 실행하도록 요청할 수도 있습니다.
이 명령을 실행하면 다음 출력이 표시됩니다:
Output/home/sammy
pwd
명령은 “현재 작업 디렉터리”를 나타내며 현재 파일 시스템에서 어디에 있는지 알려줍니다.
이 예에서는 디렉터리(또는 폴더) /home/sammy
에 있으며, 이는 사용자 sammy
를 나타냅니다. root
라는 승격된 권한을 가진 사용자로 로그인한 경우 디렉터리는 /root
로 표시됩니다. 개인 컴퓨터의 경우 이 디렉터리는 컴퓨터 소유자의 이름일 수 있습니다. Sammy Shark의 컴퓨터의 경우 기본 사용자 디렉터리로 /sammy
, /sammy-shark
또는 /home/sammy
를 사용할 수 있습니다.
현재 이 디렉터리는 비어 있습니다. 이 자습서를 진행하면서 생성할 파일을 저장할 디렉터리를 만들어 보겠습니다. 예를 들어, 이를 files
라고 할 수 있습니다.
이를 위해 “mkdir” 명령을 사용할 것인데, 이는 “make directory”의 약자입니다. 명령을 입력한 후에는 폴더 이름을 작성해야 합니다. 이 이름은 명령에 값을 전달하여 명령이 이 디렉토리를 생성하도록 합니다. 이 값(폴더 이름)은 argument로 알려져 있으며, 명령에 의해 작용되는 동사의 대상으로 생각할 수 있습니다.
새 디렉토리를 “files”로 만들려면 다음을 작성합니다. “mkdir”이 명령이고 “files”가 argument입니다:
이 명령을 실행한 후에는 깜박이는 커서와 함께 새 줄만 출력됩니다. 이 새로운 줄이 있는 터미널에서 다음 명령을 실행할 준비가 되었습니다.
콘텐츠 나열 및 권한 이해
새 디렉토리에 대한 구체적인 피드백이 없으므로 현재 작업 디렉토리에 있는 파일에 대해 자세히 알아보기 위해 명령을 사용할 것입니다. 디렉토리의 파일을 나열하여 새 디렉토리가 실제로 있는지 확인할 수 있습니다. 이를 위해 “ls” 명령을 사용합니다(“list”를 나타냄):
당신은 files
디렉토리가 존재함을 확인하는 출력을 받게 됩니다:
Outputfiles
이것은 현재 작업 디렉토리에 있는 것에 대한 일반적인 정보를 제공합니다. 더 많은 세부 정보를 원하는 경우 flag를 사용하여 ls
명령을 실행할 수 있습니다. Linux 명령에서 flag는 하이픈 -
과 문자로 작성되며, 명령에 추가적인 옵션(및 더 많은 인수)을 전달합니다. 이 예에서는 명령어에 장문 목록 형식을 사용하기 위한 옵션을 사용하기를 원하므로 -l
flag를 추가합니다.
다음과 같이 이 명령과 flag를 입력해 봅시다:
ENTER
를 누르면 터미널에서 다음 출력을 받게 됩니다:
Outputtotal 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
여기에는 두 줄의 출력이 있습니다. 첫 번째 줄은 이 디렉토리에 할당된 컴퓨터 메모리 블록을 참조하고, 두 번째 줄은 파일에 대한 사용자 권한을 대부분 참조합니다.
다소 더 사람이 읽기 쉬운 출력을 얻기 위해 -h
또는 --human-readable
flag를 전달할 수도 있습니다. 이는 메모리 크기를 사람이 읽을 수 있는 형식으로 출력합니다. 일반적으로 하이픈 -
은 한 글자 옵션을 나타내고, 두 개의 하이픈 --
은 단어로 쓰여진 옵션을 나타냅니다. 일부 옵션은 두 형식을 모두 사용할 수 있습니다. 우리는 -lh
와 같이 flag를 연결하여 여러 옵션을 명령어에 추가할 수 있습니다.
예를 들어, 아래의 두 명령어는 서로 다르게 작성되었지만 동일한 결과를 제공합니다:
두 개의 명령어 모두 다음 출력을 반환합니다. 메모리 블록의 컨텍스트를 보다 자세히 설명한 출력입니다:
Outputtotal 4.0K
drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files
출력의 첫 번째 줄은 4K의 컴퓨터 메모리가 해당 폴더에 할당되어 있음을 알려줍니다. 출력의 두 번째 줄에는 더 많은 세부 정보가 있으며, 이에 대해 자세히 알아보겠습니다. 우리가 다룰 모든 정보의 일반적인 고수준 참조는 아래 표에 나와 있습니다.
File type | Permissions | Link count | Owner | Group | File size | Last modified date | File name |
---|---|---|---|---|---|---|---|
d | rwxr-xr-x | 2 | sammy | sammy | 4.0K | Nov 13 18:06 | files |
우리 디렉토리의 이름인 files
는 출력의 두 번째 줄 끝에 있습니다. 이 이름은 출력 라인에 의해 설명되는 /home/sammy
사용자 디렉토리의 특정 항목을 나타냅니다. 디렉토리에 다른 파일이 있다면, 해당 파일에 대한 세부 정보가 있는 다른 출력 라인이 있을 것입니다.
줄의 맨 앞에는 문자 및 대시(-) 목록이 있습니다. 각 문자의 의미를 살펴보겠습니다.
Character | Description |
---|---|
d | directory (or folder) — a type of file that can hold other files, useful for organizing a file system; if this were - instead, this would refer to a non-directory file |
r | read — permission to open and read a file, or list the contents of a directory |
w | write — permission to modify the content of a file; and to add, remove, rename files in a directory |
x | execute — permission to run a file that is a program, or to enter and access files within a directory |
첫 번째 drwx
문자열의 처음 글자 d
는 항목 files
이 디렉터리임을 나타냅니다. 만약 이것이 디렉터리가 아닌 파일이었다면, 이 문자열은 하이픈으로 시작할 것입니다. 예를 들어 -rwx
는 첫 번째 하이픈이 디렉터리가 아닌 파일임을 나타냅니다. 다음 세 글자 rwx
는 디렉터리 files
의 소유자에 대한 허가를 나타내며, 이는 파일 소유자가 디렉터리 files
를 읽을 수 있고(r), 쓸 수 있고(w), 실행할 수 있다는 것을 의미합니다. 이 중 하나라도 하이픈으로 대체된다면, 해당 문자가 나타내는 권한을 소유자가 가지고 있지 않음을 의미합니다. 파일의 소유자를 식별하는 방법에 대해 곧 논의하겠습니다.
출력의 다음 세 문자는 r-x
이며, 이는 files
디렉터리의 그룹 권한을 나타냅니다. 이 경우, 그룹은 읽고 실행할 수 있지만, 쓰기 권한은 없습니다. 왜냐하면 w
가 -
로 대체되었기 때문입니다. 그룹을 식별하는 방법에 대해 곧 논의하겠습니다.
첫 번째 문자열의 마지막 세 문자인 r-x
는 기계에 접근할 수 있는 다른 그룹들의 권한을 나타냅니다. 이 경우, 이러한 사용자 그룹들도 읽고 실행할 수 있지만, 쓸 수는 없습니다.
출력물의 숫자 2
는 이 파일로의 링크 수를 나타냅니다. Linux에서 링크는 사용자가 파일 시스템을 탐색하는 데 도움이 되는 바로 가기를 만드는 방법을 제공합니다. 이 파일을 만들 때 Linux는 파일에 대한 절대 링크를 생성하는 데 필요한 백그라운드 작업과 상대적 경로를 따라 이동할 수 있도록 파일에 대한 자기 참조 링크를 생성합니다. 다음 섹션에서는 절대 경로와 상대 경로에 대해 논의하겠습니다.
숫자 2
다음에는 단어 sammy
가 두 번 표시됩니다. 출력의 이 부분은 files
디렉토리와 관련된 소유자와 그룹에 대한 정보를 제공합니다. 이 줄에서 sammy
의 첫 번째 인스턴스는 디렉토리의 소유자를 나타냅니다. 이전에 확인한 권한은 rwx
입니다. sammy
사용자는 파일을 생성한 소유자이며 현재 파일의 소유자입니다. 현재 환경에서는 sammy
사용자만 있는 것으로 보이지만 Unix류 운영 체제에는 종종 하나 이상의 사용자가 있으므로 파일 소유자를 알고 있는 것이 유용합니다.
sammy
의 두 번째 인스턴스는 files
디렉토리에 액세스 권한을 가진 그룹을 나타냅니다. 이전에 확인한 권한은 r-x
입니다. 이 경우 그룹 이름은 소유자 사용자 이름 sammy
와 동일합니다. 실제 환경에서는 staff
나 admin
과 같은 그룹 또는 사용자 이름이 해당 디렉토리에 액세스할 수 있습니다.
이 출력 라인의 나머지 세부 정보는 기계상 디렉터리의 메모리 할당에 대한 4.0K
및 디렉터리가 마지막으로 수정된 날짜(지금까지 우리는 그것을 만들었습니다)입니다.
파일 시스템 및 권한에 대한 더 깊은 이해를 바탕으로 리눅스 터미널에서 파일 시스템을 탐색하는 방법으로 이동할 수 있습니다.
파일 시스템 탐색
지금까지 우리는 파일 시스템에서 현재 위치를 결정하는 방법, 새 디렉토리를 만드는 방법, 파일을 나열하는 방법 및 권한을 결정하는 방법을 배웠습니다.
다음으로 파일 시스템을 이동하는 방법을 배워 보겠습니다. 새 디렉토리를 만들었지만 여전히 기본 /home/sammy
사용자 디렉토리에 있습니다. 만든 /home/sammy/files
디렉토리로 이동하려면 cd
명령을 사용하고 인수로 이동하려는 디렉토리의 이름을 전달합니다. cd
명령은 “디렉토리 변경”을 의미하며 다음과 같이 구성할 것입니다:
다시 말하지만 새 줄과 깜박거리는 커서만 받게 될 것입니다. 그러나 앞서 사용한 pwd
명령을 사용하여 /home/sammy/files
디렉토리에 있는지 확인할 수 있습니다:
여기에는 다음과 같은 출력이 나타납니다. 여기에 있는지 확인됩니다:
Output/home/sammy/files
이것은 /home/sammy
사용자 디렉터리의 /home/sammy/files
디렉터리에 있음을 확인합니다. 이 구문이 익숙합니까? 이는 슬래시를 사용하여 구성된 웹 사이트의 URL을 연상시킬 수 있으며 실제로 웹 사이트도 디렉터리 내부의 서버에 구조화됩니다.
서버의 기본 디렉터리로 이동해 보겠습니다. 파일 시스템의 어디에 있든 상관없이 항상 기본 디렉터리로 이동하기 위해 cd /
명령을 사용할 수 있습니다.
이동했는지 확인하고 이 디렉터리에 있는 내용을 알아보기 위해 목록 명령을 실행해 보겠습니다.
다음 출력을 받게 됩니다:
Outputbin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var
거기에는 많은 파일이 있습니다! /
디렉터리는 리눅스 서버의 주 디렉터리로, “루트” 디렉터리로 참조됩니다. 루트 디렉터리가 기본 “루트” 사용자와 다르다는 점에 유의하십시오. 리눅스 머신의 주요 동맥으로 생각할 수 있으며, 컴퓨터를 실행하는 데 필요한 모든 폴더가 포함되어 있습니다. 예를 들어, sys
디렉터리에는 리눅스 커널 및 시스템 정보 가상 파일 시스템이 포함되어 있습니다. 각 디렉터리에 대해 자세히 알아보려면 Linux Foundation documentation을(를) 방문하십시오.
또한 이미 있던 디렉터리인 /home
사용자 폴더가 있음을 알 수 있습니다. /
디렉터리에서는 /home
으로 디렉터리를 변경한 다음 다시 files
로 이동하거나 cd
를 사용하여 해당 폴더로 직접 절대 경로를 입력할 수 있습니다:
이제 pwd
를 실행하면 출력으로 /home/sammy/files
를 받게됩니다.
A file path is the representation of where a file or directory is located on your computer or server. You can call a path to a file or directory in either a relative or absolute way. A relative path would be when we move to a location relative to our current working directory, like we did when we were already in /home/sammy/
and then moved into files/
. An absolute path is when we call the direct line to a location, as we did above with /home/sammy/files
, showing that we started in the /
directory, called the /home/sammy/
user directory and then the nested files/
directory.
또한 Linux는 상대 경로를 통해 사용자가 탐색하는 데 도움이되는 도트 표기법을 활용합니다. 단일 .
은 현재 디렉토리를 나타내며, 이중 ..
는 상위 디렉토리를 나타냅니다. 따라서 현재 위치에서 (/home/sammy/files
) 두 개의 점을 사용하여 상위 /home/sammy
사용자 디렉토리로 돌아갈 수 있습니다. 다음과 같이:
pwd
를 실행하면 출력으로 /home/sammy
를 받으며, ls
를 실행하면 출력으로 files
를 받게됩니다.
익숙해져야하는 또 다른 중요한 기호는 ~
로, 이는 기기의 홈 디렉토리를 나타냅니다. 여기서 우리의 홈 디렉토리는 sammy 사용자를 위해 /home/sammy
로 호출되지만 로컬 기기의 경우 sammy-shark/
와 같이 본인의 이름일 수 있습니다.
다음 명령을 기기의 어디서나 입력하여 이 홈 디렉토리로 돌아갈 수 있습니다:
이 시점에서 배운 명령을 사용하여 파일 시스템을 탐색해보세요. 다음 섹션에서는 텍스트 파일을 사용하는 작업을 시작하겠습니다.
텍스트 파일 만들기 및 수정하기
이제 Linux 파일 시스템에 대한 기초가 마련되었으며 주변을 돌아 다니는 방법을 배웠으니 새 파일을 만들고 명령 줄에서 텍스트를 조작하는 방법에 대해 배워 보겠습니다.
먼저 절대 경로로 디렉토리를 변경하거나 pwd
를 사용하여 확인하여 /home/sammy
사용자 폴더의 files/
디렉토리에 있는지 확인하겠습니다.
이제 새 텍스트 파일을 만들겠습니다. 표준 파일인 .txt
파일을 만들 것이며 이 파일은 다양한 운영 체제에서 읽을 수 있습니다. .doc
파일과는 달리 .txt
파일은 서식이 없는 텍스트로 구성됩니다. 서식이 없는 텍스트는 명령 줄에서 쉽게 사용할 수 있으며 따라서 텍스트 데이터를 프로그래밍적으로 처리할 때 사용할 수 있습니다(예: 텍스트 분석 자동화, 텍스트에서 정보 추출 등).
touch
명령을 사용하여 새 파일을 만들거나 기존 파일을 수정할 수 있습니다. 이를 사용하려면 아래에 표시된 것처럼 touch
명령을 사용하고 만들고자 하는 텍스트 파일의 이름을 인수로 전달하면 됩니다.
ENTER
를 누르면 새로운 명령 프롬프트 줄이 표시되고 files/
의 현재 내용을 나열하여 파일이 생성되었는지 확인할 수 있습니다.
Outputocean.txt
지금까지 생성 시점에 텍스트가 포함되지 않은 ocean.txt
파일을 만들었습니다.
텍스트로 초기화된 텍스트 파일을 만들고 싶다면 Linux에서 문자열을 표시하는 데 사용되는 echo
명령을 사용할 수 있습니다.
우리는 인터페이스가 우리 뒤를 따라 말하도록 명령 줄에서 echo
를 직접 사용할 수 있습니다. 전통적인 첫 번째 프로그램 "Hello, World!"
은 다음과 같이 echo
로 작성할 수 있습니다:
OutputHello, World!
에코(Echo)가 되어 택된 것에 따라, echo
명령은 우리가 요청한 것을 돌려줍니다. 이 경우에는 “Hello, World!”를 에코했습니다. 그러나 echo
명령만으로는 텍스트 값을 텍스트 파일에 저장할 수 없습니다. 이를 위해 다음을 입력해야 합니다:
위 명령은 echo
를 사용한 후에 따옴표로 묶인 파일에 추가하려는 텍스트, 그런 다음 리디렉션 연산자 >
및 마지막으로 새 텍스트 파일의 이름 sammy.txt
을 사용합니다.
우리는 새로운 파일이 있는지 다시 ls
로 확인할 수 있습니다.
Outputocean.txt sammy.txt
이제 /home/sammy/files
사용자 폴더에 두 개의 텍스트 파일이 있습니다. 다음으로 터미널에 에코하여 파일에 넣으라고 요청한 텍스트가 sammy.txt
파일에 있는지 확인할 수 있습니다. 파일을 다음과 같이 사용할 수 있습니다. 이 명령은 파일의 내용을 표시하는 기능을 갖고 있습니다.
명령을 실행하면 다음 출력을 받게 됩니다:
OutputSammy the Shark
ocean.txt
라는 빈 파일에 cat
을 실행하면 아무것도 반환되지 않으므로 해당 파일에 텍스트가 없습니다. 우리는 또한 이 기존 파일에도 echo
로 텍스트를 추가할 수 있습니다. 저자 Zora Neale Hurston의 인용구를 파일에 추가해 봅시다.
이제 파일에서 cat
을 실행하면 방금 입력한 텍스트의 출력을 받게됩니다.
OutputSome people could look at a mud puddle and see an ocean with ships.
지금까지 텍스트 파일을 생성하고 이러한 파일에 텍스트를 추가했지만 아직 이러한 파일을 수정하지 않았습니다. 그러려면 명령 줄 텍스트 편집기를 사용할 수 있습니다. Vim 및 Emacs와 같은 여러 인기 있는 선택 사항이 있습니다. 우리의 목적을 위해 우리는 탐색을 시작할 수 있는 좀 더 복잡하지 않은 CLI 텍스트 편집기 프로그램 인 nano를 사용할 것입니다.
nano 텍스트 편집기는 nano
명령을 사용하여 호출할 수 있습니다. 기존의 sammy.txt
파일을 편집하려면 파일 이름을 인수로 전달할 수 있습니다.
파일이 터미널에 열립니다:
Sammy the Shark
키보드의 화살표 키를 사용하여 커서를 줄 끝으로 이동하고 Sammy의 관점에서 몇 줄을 입력하세요.
참고: 명령 줄에서는 마우스나 다른 포인터를 사용하여 파일 시스템 및 파일 내에서 탐색할 수 없습니다. 텍스트 파일을 이동하려면 키보드를 사용해야하며 특히 화살표 키를 사용해야합니다.
파일 작업이 완료되면 다음과 같이 읽을 수 있습니다:
Sammy the Shark
Hello, I am Sammy.
I am studying computer science.
Nice to meet you!
이제 텍스트가 포함된 파일로 작업이 완료되었으므로 파일을 저장하고 닫을 수 있습니다. 터미널 창 하단에 일부 안내가 있다는 것을 알 수 있습니다:
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
현재 파일 작업이 완료되었으므로 파일에서 Exit
하려고 합니다. 여기서 ^
기호는 키보드의 Control
또는 CTRL
키를 나타내며 위의 출력에서는 이 키를 X
와 결합하여 파일을 떠나야 함을 알려줍니다. 이 두 키를 함께 눌러보겠습니다:
CTRL x
위 내용은 기술 문서에서 CTRL + X
또는 Ctrl+x
와 같이 인라인으로 작성됩니다.
이 시점에서 다음 프롬프트가 표시됩니다:
OutputSave modified buffer?
Y Yes
N No ^C Cancel
저장하려면 y
키를 눌러야 합니다:
y
다음과 같은 피드백을 받게 될 것입니다.
OutputFile Name to Write: sammy.txt
CTRL + C
로 취소하는 등의 추가 옵션이 있지만, 파일을 닫는 것에 익숙하다면 파일을 저장하고 종료하기 위해 이 시점에서 ENTER
키를 누를 수 있습니다.
이제 DigitalOcean 대학생들에 대한 몇 가지 파일을 만들고자 합니다. files/
디렉터리에 students
라는 새 디렉터리를 만들어 보겠습니다:
다음으로, sammy.txt
를 새로운 students/
디렉터리로 이동시킵니다. mv
명령어는 move의 약자로 파일의 위치를 변경할 수 있게 해줍니다. 이 명령은 이동할 파일을 첫 번째 인수로, 새 위치를 두 번째 인수로 취합니다. 두 실행은 모두 동일한 결과를 생성합니다.
이후의 옵션은 파일 이름을 변경하려는 경우 유용합니다. 예를 들어 mv sammy.txt students/sammy-the-shark.txt
와 같이요.
이제 ls
명령을 실행하면 현재 디렉토리(files/
)에는 ocean.txt
과 students/
디렉토리만 있는 것을 볼 수 있습니다. students/
폴더로 이동해 보겠습니다.
다른 학생들을 위한 템플릿이 필요한 경우 sammy.txt
파일을 복사하여 더 많은 파일을 만들 수 있습니다. 이를 위해 cp
명령을 사용할 수 있는데, 이는 copy의 약자입니다. 이 명령은 원본 파일을 첫 번째 인수로, 새 파일을 두 번째 인수로 사용하여 작동합니다. Alex the Leafy Seadragon을 위한 파일을 만들어 보겠습니다.
이제 alex.txt
를 열어서 내용을 확인할 수 있습니다.
지금까지 alex.txt
는 sammy.txt
와 동일합니다. 몇 가지 단어를 바꾸면 다음과 같이 파일을 수정할 수 있습니다. 전체 줄을 삭제하려면 CTRL + K
를 사용할 수 있습니다.
Alex the Leafy Seadragon
Hello, I am Alex.
I am studying oceanography.
Nice to meet you!
파일을 저장하고 닫으려면 CTRL + X
를 누르고 y
를 입력한 후 ENTER
를 누르세요.
텍스트 파일 작성에 대해 더 많은 연습을 원하는 경우 Jamie the Mantis Shrimp, Jesse the Octopus, Drew the Squid 또는 Taylor the Yellowfin Tuna를 위한 파일을 만들어 보세요. 텍스트 파일 생성, 편집, 복사 및 이동에 익숙해지면 다음 섹션으로 넘어갈 수 있습니다.
자동 완성 및 기록
이 튜토리얼에 포함된 대화형 터미널을 포함한 명령 줄의 여러 버전은 진행 중에 명령을 자동 완성하고 재사용할 수 있도록 허용합니다. 이는 타이핑 시간을 절약하여 더 빨리 이동할 수 있도록 지원합니다.
cat sa
와 같이 작업 중인 텍스트 파일 중 하나의 처음 몇 글자를 함께 입력해 보세요. 예를 들어 cat sa
. 파일 이름 sammy.txt
의 전체 이름을 입력하기 전에 TAB
키를 누르세요. 이렇게 하면 터미널 프롬프트에 다음이 표시됩니다:
이제 ENTER
를 누르면 터미널이 파일 내용을 명령 줄로 반환해야 합니다.
다른 바로 가기는 UP
화살표 키를 누르는 것입니다. 이렇게 하면 최근에 실행한 명령을 순환하면서 볼 수 있습니다. 깜빡이는 커서가 있는 새 줄에서 몇 번 UP
화살표 키를 누르면 이전 명령에 빠르게 액세스할 수 있습니다.
터미널에서 수행한 모든 명령을 복제해야 하는 경우, 적절히 명명된 history
명령으로 이 세션의 전체 기록을 호출할 수도 있습니다:
연습한 양에 따라 30줄 이상의 명령이 표시되며 다음 출력으로 시작합니다:
Output 1 pwd
2 mkdir files
3 ls
4 ls -l
...
이러한 바로 가기를 익히는 것은 명령 줄 인터페이스에 익숙해짐에 따라 지원됩니다.
웹에서 파일 작업
인터넷에 연결된 명령 줄 인터페이스에서 작업하는 가장 흥미로운 측면 중 하나는 웹의 모든 리소스에 액세스 할 수 있으며 자동화된 방식으로 조작 할 수 있다는 것입니다. 터미널을 사용하면 자격 증명이있는 클라우드 서버에 직접 액세스 할 수도 있습니다. 클라우드 인프라를 관리하고 조정하고 자체 웹 앱을 빌드 할 수도 있습니다. 현재 우리는 이미 터미널에서 텍스트 파일을 사용하는 방법을 배웠으므로 해당 텍스트 파일이 사용할 기계에 사용 가능하도록 웹에서 텍스트 파일을 다운로드하는 방법을 살펴 보겠습니다.
files/
디렉토리로 돌아 가 보겠습니다:
여기서 우리는 curl
명령을 사용하여 웹에서 데이터를 우리의 개인 대화형 브라우저 터미널로 전송합니다. curl
명령은 client URL (웹 주소)의 약자입니다.
우리는 클라우드 서버에 줄스 베른의 해저 20,000리그의 짧은 구절을 업로드했습니다. 아래에 설명 된대로 해당 파일의 URL을 curl
명령에 전달합니다.
ENTER
를 누르면 해당 텍스트의 패스가 터미널에 출력됩니다 (아래 발췌됨)
Output"You like the sea, Captain?"
"Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe.
...
"Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this
is a library which would do honor to more than one of the continental palaces, and I am
absolutely astounded when I consider that it can follow you to the bottom of the seas."
터미널 창에 텍스트가 표시되는 것은 흥미로운데, 우리에게는 파일이 없습니다. 데이터를 전송했지만 저장하지는 않았습니다. (ls
를 실행하여 파일이 없음을 확인할 수 있습니다).
텍스트를 파일에 저장하려면 -O
플래그를 사용하여 curl
을 실행해야 합니다. 이렇게 하면 텍스트가 파일로 출력되어 로컬 사본에 원격 파일과 동일한 이름이 지정됩니다.
터미널에서 파일이 다운로드되었다는 피드백을 받게 됩니다.
Output % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487
파일의 특정 및 대체 이름을 사용하려면 -o
플래그를 사용하여 새 파일의 이름을 인수로 전달할 수 있습니다(이 경우 jules.txt
).
이제 우리는 이 파일을 다른 텍스트 파일처럼 작업할 수 있습니다. cat
을 사용하거나 nano
로 편집해 보세요.
다음 섹션에서는 파일을 정리하고 터미널을 종료합니다.
파일 및 명령 종료
다른 컴퓨터와 마찬가지로, 때로는 더 이상 필요하지 않은 파일 및 폴더를 제거하고 사용 중인 프로그램을 종료해야 합니다.
DigitalOcean University의 학생들이 졸업했으므로 해당 파일 및 폴더를 정리해야 합니다. students/
디렉터리에 있는지 확인하세요.
만약 ls
를 실행하면 폴더에 몇 개의 파일이 있을 수 있습니다:
Outputalex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
rm
명령어를 사용하여 개별 파일을 제거할 수 있습니다. 이 명령어는 remove의 약자입니다. 제거할 파일을 인수로 전달해야 합니다.
경고: 한 번 파일을 제거하면 되돌릴 수 없습니다. 파일을 제거하기 전에 파일을 제거하고자 하는지 확인하십시오. ENTER
키를 누르기 전에.
이제 ls
를 실행하면 sammy.txt
가 더 이상 폴더에 없는 것을 알 수 있습니다:
Outputalex.txt drew.txt jamie.txt jesse.txt taylor.txt
rm
을 사용하여 개별 파일을 제거할 수 있다는 것을 알게 되었지만, 전체 students/
디렉토리와 해당 내용을 제거하는 것은 시간이 많이 소요됩니다.
디렉토리를 제거하는 데 사용되는 명령어는 rmdir
입니다. 이 명령어는 remove directory의 약자입니다. 여기서부터 students/
디렉토리를 작업할 수 있도록 files
의 상위 폴더로 이동합시다(현재 위치한 폴더를 삭제할 수 없습니다).
/home/sammy/
사용자 디렉토리에서 students
에 대해 rmdir
를 실행할 수 있습니다.
그러나 이것은 작동하지 않습니다. 왜냐하면 우리는 다음과 같은 피드백을 받기 때문입니다:
Outputrmdir: failed to remove 'students': Directory not empty
rmdir
는 비어 있는 디렉토리에서만 작동하며 students
디렉토리에는 여전히 파일이 있습니다. (여기서 새로운 비어 있는 폴더를 만들고 이것에 대해 rmdir
을 시도할 수 있습니다. 비어 있는 폴더는 rmdir
을 사용하여 제거할 수 있습니다.)
디렉토리 내에 파일이 아직 있는 경우 다른 옵션을 시도해야합니다. 컴퓨터 과학에서 재귀는 주로 반복적으로 자기 참조하는 데 사용되므로 주 항목과 그 종속 항목을 모두 호출할 수 있습니다. rm
명령을 사용하여 기본 students
디렉토리와 해당하는 모든 종속성을 재귀적으로 제거할 수 있습니다. 우리는 -r
플래그를 사용할 것인데, 이는 재귀적인 것을 의미하며, 폴더 students
를 인수로 전달합니다.
이 시점에서 ls
를 실행하면 현재 디렉토리에 students/
가 더 이상 없으며, 그것이 포함하고 있던 파일도 모두 삭제되었음을 알 수 있습니다.
터미널 세션을 마치고 특히 원격 서버에서 작업할 때는 exit
명령을 사용하여 터미널을 종료할 수 있습니다. 이 세션에서 달성한 것에 만족스러운 경우 (복구할 수 없으므로), 다음을 입력한 후 ENTER
를 눌러 터미널을 나갈 수 있습니다.
인터랙티브 터미널에서 다음 출력을 받게 됩니다. 세션이 종료되었음을 확인할 수 있습니다.
OutputSession ended
이 세션을 완료한 후에는 이 페이지를 새로 고친 다음 대체 명령을 시도하거나 새 파일 시스템을 탐색할 수 있습니다.
결론
축하합니다! 이제 터미널 인터페이스를 잘 다룰 수 있으며 컴퓨터와 서버를 활용하는 데 더 많은 일을 할 수 있게 되었습니다.
학습을 계속하려면 당사의 클라우드 컴퓨팅 소개 커리큘럼으로 원격 서버 설정 및 관리에 대한 안내 경로를 따르실 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/a-linux-command-line-primer