이 문서에서는 터미널 명령을 사용하여 일부 명령 및 명령의 기능에 대한 정보를 제공하는 방법에 대해 설명합니다.
프로세스를 설명하기 위해 몇 가지 예시도 제공합니다.
명령줄 도구는 강력합니다. 그래픽 UI(사용자 인터페이스)에서 지루한 작업을 하고 몇 초 정도 걸리는 작업으로 변환되는 툴이 있습니다. 큰 파일의 모든 행에서 마지막 4줄을 제거하는 것은 사용자 인터페이스 애플리케이션에서 오랜 시간이 걸리는 프로세스일 수 있습니다. 그러나 이 프로세스는 명령줄에서 자동화할 수 있습니다.
Ubuntu Linux에서 터미널 창을 여는 가장 일반적인 방법은 다음과 같습니다.
Ubuntu Linux의 터미널 셸과 관련된 많은 명령이 있습니다. 아래 문서에는 영향을 미치는 그룹 아래에 가장 자주 사용되는 명령이 나열되어 있습니다.
다양한 터미널 명령을 사용하는 데 필요한 모든 정보를 제공하기 위해 사용하는 세 가지 주요 명령이 있습니다.
man 명령은 터미널에서 사용되는 모든 명령에 대한 설명서를 표시합니다.
대부분의 셸 명령은 다양한 옵션을 수락합니다. 명령 및 사용 가능한 옵션 목록에 대한 일부 정보를 확인하려면 man
(manual의 약어) 명령을 사용합니다. 자세히 알아보려는 명령의 이름을 인수로 지정합니다. 이것이 바로 man
명령이 적용되는 명령입니다.
예: 명령 man who
를 입력하면 다음 출력이 표시됩니다.
WHO(1) User Commands WHO(1)
NAME
who - show who is logged on
SYNOPSIS
who [OPTION}... [ FILE | ARG1 ARG2 ]
DESCRIPTION
-a, --all
same as -b -d --login -p -r -t -T -u
-b, --boot
time of last system boot
-d, --dead
print dead processes
-H, --heading
print line of column headings
-i, --idle
add idle time as HOURS:MINUTES, . or old (deprecated, use -u)
-l, --login
print system login processes
--lookup
attempt to canonicalize hostnames via DNS
-m, only hostname and user associated with stdin
Manual page who(1) line 1
대부분의 설명서는 여러 개의 긴 화면입니다. 커서 또는 ARROW
키나 Page Up 및 Page Down 키를 사용하여 텍스트를 탐색합니다. 스페이스바 키를 누르면 다음 텍스트 줄이 표시됩니다. q 키를 누르면 설명서가 종료되고 셸로 돌아갑니다.
man 페이지에서 볼 수 있듯이 -a
옵션을 사용하여 활성 사용자 세션에 대한 자세한 정보를 표시할 수 있습니다.
user@3[user]$ who -a
|
|
|
|
Nov 14 13:47 |
|
10 |
id=si |
term=0 |
exit=0 |
|
|
|
system boot |
Nov 14 13:47 |
|
|
|
|
|
|
|
|
run-level 5 |
Nov 14 13:47 |
|
|
Last=S |
|
|
|
|
|
|
Nov 14 13:47 |
|
835 |
id=15 |
term=0 |
exit=0 |
LOGIN |
|
|
tty1 |
Nov 14 13:47 |
|
958 |
id=1 |
|
|
root |
|
- |
tty2 |
Nov 14 19:15 |
00:19 |
959 |
|
|
|
user |
|
- |
tty3 |
Nov 14 19:28 |
00:06 |
960 |
|
|
|
LOGIN |
|
|
tty4 |
Nov 14 13:47 |
|
961 |
id=4 |
|
|
LOGIN |
|
|
tty5 |
Nov 14 13:47 |
|
962 |
id=5 |
|
|
LOGIN |
|
|
tty6 |
Nov 14 13:47 |
|
963 |
id=6 |
|
|
user |
|
? |
:0 |
Nov 14 13:47 |
? |
965 |
|
|
|
|
|
|
pts/3 |
Nov 14 16:29 |
|
1746 |
id=/3 |
term=0 |
exit=0 |
user@3[user]$
또한 프로그램에 대한 도움말 파일을 읽을 수 있으며, man
명령은 셸, 함수 및 라이브러리에 대한 정보도 제공할 수 있습니다.
특정 명령을 사용하는 방법을 잘 모르는 경우 -h
또는 –help
스위치를 사용하여 명령을 실행합니다. 사용 정보 및 명령과 함께 사용할 수 있는 옵션 목록이 표시됩니다.
예: 명령 wget
의 사용 방법을 알아보려면 다음을 입력합니다. wget –help
또는 wget -h
.
User@Ubuntu@#$ wget --help
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
이렇게 하면 터미널에 많은 정보가 인쇄되는 경우가 있습니다. 스크롤하기가 번거로울 수 있습니다. 출력을 보다 쉽게 읽기 위해 pipe
작업을 less 명령을 통해 수행할 수 있습니다. 키보드의 커서 또는 화살표 키를 사용하여 스크롤할 수 있습니다.
예: wget -help | less
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
-o, --output-file=FILE log messages to FILE.
:
완료되면 q를 눌러 less 유틸리티를 닫습니다.
특정 옵션을 찾으려면 출력에 대해 pipe
작업을 grep
명령을 통해 수행할 수 있습니다. (예를 들어, 다음 명령을 사용하여 다음 단어가 포함된 옵션을 검색합니다. proxy.
)
wget -help | grep proxy
User@ubuntu:~$ wget --help | grep proxy
--no-proxy explicitly turn off proxy.
--proxy-user=USER set USER as proxy username.
--proxy-password=PASS set PASS as proxy password.
User@Ubuntu:~$
일부 명령은 info
시스템 내부에도 문서화되어 있습니다. 여기에 있는 정보는 man
명령으로 표시되는 내용을 보완합니다.
예: 명령 info ls,
를 입력하면 다음 출력이 표시됩니다.
[support@support]$" info ls
이제 ls
명령에 대한 중요한 정보가 있는 매뉴얼을 볼 수 있습니다.
File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing
'ls': List directory contents
=============================
The 'ls' program lists information about files (of any type,
including directories). Options and file arguments can be intermixed
arbitrarily, as usual.
For non-option command-line arguments that are directories, by
default 'ls' lists the contents of directories, not recursively, and
omitting files with name beginning with '.'. For other non-option
arguments, be default 'ls' lists just the file name. If no non-option
argument is specified, 'ls' operates on the current directory, acting
as if it had been invoked with a single argument of '.'.
By default, the output is sorted alphabetically, according to the
locale settings in effect. (1) If standard output is a terminal, the
output is in columns (sorted vertically) and control characters are
output as question marks; otherwise, the output is listed one per line
and control characters are output as-is.
--zz-Info: (coreutils.info.gz)ls invocation, 48 lines --Top------------------
Welcome to info version 4.3 Type C-h for help, m for menu item.
스페이스바 키를 누르거나 커서/ARROW
키를 사용하여 페이지를 아래로 스크롤할 수 있습니다.
help
의 경우 H 키를 누릅니다.quit
을 실행하려면 Q 키를 누릅니다.
터미널에서는 사용자 인터페이스에서도 수행할 수 있는 거의 모든 작업을 수행할 수 있습니다.
앞서 언급한 바와 같이, 많은 명령이 먼저 터미널에서 작동되도록 설계된 후 사용자 인터페이스가 맨 위에 놓였습니다. 그래서 일부 GUI가 투박하게 느껴질 수 있습니다. 처음에 일부 GUI는 대부분의 Linux Server 빌드의 영향을 받지 않기 때문에 사후 고려사항이었습니다.
메뉴에서 터미널이 열리는 기본 위치는 Home 폴더에 있습니다. 다음과 같이 알려져 있습니다. ~
현재 디렉토리는 .
연산자로 찾을 수 있습니다. 대부분의 명령은 현재 폴더 선택 시 작동할 때 대소문자를 구분하며, 명령, 위치 및 파일에 적용됩니다. /home
의 경우 다음과 같지 않습니다. /HOME
또는 /Home
.
드라이버 이름이 긴 경우 Tab 키를 사용하면 파일 이름이 자동 완성됩니다. driver-128947232jaseu.sh
예를 들어 dri
입력 시 나머지 글자가 입력됩니다. 시작 문자열이 dri
인 이름이 두 개가 아닌지 확인하고, 있다면 다른 문자를 추가하여 driv
로 만든 후 다시 시도하십시오. 자동 완성 내용이 표시하려는 내용과 일치하는지 확인합니다.
거의 모든 명령은 초기 명령 작성 후 man
페이지를 사용하거나 -h
또는 --help
입력을 통해 전체를 읽을 수 있습니다. 이 구문은 man command_name
, command_name -h
또는 command_name --help
입니다.
더 많은 정보를 얻기 위해 info를 사용할 수 있습니다. 명령 검색은 info command_name
사용을 통해 가능합니다. 이러한 명령이 대부분 코어 유틸리티 패키지의 일부인 경우 또한 info
찾기 작업을 info coreutils command_name
호출을 사용하여 수행할 수도 있습니다. 여기서 검색한 명령은 다음을 대체합니다. command_name
.
거의 모든 명령이 단계별로 발생하는 상황을 정확하게 표시할 수 있습니다. 이는 보통 -v
또는 --verbose
입니다.
한 번에 하나의 명령에 여러 명령 플래그를 지정하여 더 많은 정보를 얻을 수 있습니다. 아래의 ls -al
예시를 참조하십시오.
명령 이름이 항상 명확한 것은 아닙니다. UNIX의 이전 일자의 공간 제한으로 인해 명령 이름이 단축되었고 이러한 규칙이 고착되었습니다.
cd
- 홈으로 다시 이동합니다. 다음과도 같습니다. cd ~
cd..
- 하나의 디렉토리로 돌아갑니다. 다음 /home/user/Desktop
, cd..
명령을 사용하면 /home/user
경로로 이동합니다. 이는 cd ../../
명령으로 확장해 두 단계 위에 있는 디렉토리인 /home
으로 이동합니다.
cd foldername/
- 현재 폴더의 지정된 폴더로 이동합니다.
/
는 중요한 누락으로 간주됩니다. 지금 /home/user
에 있고 Desktop
으로 이동하려는 경우 다음 cd Desktop/
을 입력하되 /
를 Desktop
앞에 입력하지 않아야 합니다. 앞에 /
를 입력하면 작동하지 않는 파일 시스템의 루트로 이동합니다.
cd /some/other/path
- 지정된 폴더 경로로 이동합니다. 경로가 올바른 경우에 해당합니다. 이때 TAB
키를 사용하여 자동으로 완료할 수 있다는 점을 잊지 마십시오.
ls
- 현재 폴더에 있는 모든 파일을 나열합니다.
ls -l
- 소유자, 사용 권한, 크기 및 수정된 날짜를 포함하는 더 긴 목록을 제공합니다.
ls -a
- 숨겨진 파일 및 폴더와 일반 목록을 표시합니다.
ls -al
- 두 옵션을 결합하여 숨겨진 파일과 폴더를 모두 표시하고 긴 형식으로 표시합니다.
ls -h
- 바이트 대신 사람이 읽을 수 있는 KB, MB, GB,
형식으로 파일 크기를 표시합니다. 함께 사용되는 경우가 많은 플래그는 -l
입니다.
현재 위치가 아닌 디렉토리의 파일을 볼 수 있습니다. /home/user/Desktop
에 있고 /home/user
에 있는 파일을 보려면 ls ../
를 사용하면 한 단계 위 디렉토리 파일이 나열됩니다.
cp file /path/to/folder
- 지정된 파일을 지정된 경로에 복사합니다.
cp -r folder /path/to/folder
- 폴더의 내용을 다른 폴더에 반복해서 복사합니다.
cp *.extension /path/to/folder
- 지정된 확장자가 일치하는 파일을 새 폴더에 복사합니다. 모든 .doc 파일을 복사하려면 cp *.doc /path/to/folder
로 지정하되, 해당 폴더가 있어야 합니다.
cp name* /path/to/folder
- 지정된 폴더에 name
으로 시작하는 모든 파일을 복사합니다. 다음과 같이 example
로 시작하는 모든 파일을 복사하려면 cp example* /path/to/folder
로 지정하되, 해당 폴더가 이미 존재해야 합니다.
mv
구문은 위의 cp
예시와 유사하지만 예시 #2의 경우는 해당하지 않습니다. mv
는 -r
플래그를 적용하지 않는데, 폴더를 이동하면 해당 내용도 이동하기 때문입니다. 구문이 모든 인스턴스에 정확한 것은 아니지만 위의 예와 함께 작동합니다. 자세한 내용은 man 페이지를 참조하십시오.
여기서 rm
을 사용한 파일 삭제는 영구적입니다. 휴지통을 사용하지 않습니다. 이 명령은 신중하게 사용하고 Enter
키를 누르기 전에 원하는 파일을 정확하게 삭제하고 있는지 확인하십시오. 삭제 명령이 너무 복잡하면 제대로 종료되지 않습니다.
rm file
- 컴퓨터에서 해당 파일을 제거합니다.
rm -r folder
- 컴퓨터에서 해당 폴더를 제거합니다.
rm -rf folder
- 컴퓨터에서 해당 폴더를 강제로 제거합니다. 이 명령을 잘못 사용하면 구성이 잘못될 수 있습니다.
터미널에서 nano
를 사용하여 파일을 편집하면 빠르고 거친 파일을 사용하여 구성을 완료할 수 있습니다. 이 방법은 유용할 수 있지만 일반 텍스트 파일 및 프로그래밍 파일을 처리하기 때문에 Microsoft Word 문서와 같은 파일이 제대로 열리지 않을 수 있습니다.
루트에서 파일을 소유하는 경우 일반 사용자는 파일을 편집할 수 없습니다. nano
의 접두사가 sudo
여야 변경 사항이 저장됩니다. 그렇지 않으면 읽기 전용 모드로 열립니다.
nano newfile.whatever
가 지정된 이름이며, 편집할 수 있도록 열립니다.
nano existing_file
- 편집할 기존 파일을 엽니다.
내부에서 nano
파일 저장 시 CTRL+O
키를 함께 눌러 저장하고 이름을 변경하거나 Enter
키를 눌러 이름을 동일하게 유지합니다. 파일이 저장됩니다.
nano
종료는 CTRL+X
키를 함께 누르면 가능합니다. 저장되지 않은 변경 내용이 있는 경우 변경 내용을 저장할 것인지 묻는 메시지가 나타납니다.
mkdir folder_name
- 지정한 이름으로 폴더를 만듭니다.
mkdir -p /path/to/folder/name
- 필요에 따라 각 폴더를 만듭니다. /home/user/1stfolder/2ndfolder
폴더를 생성하려 하고 /home/user
만 있는 경우 mkdir -p
를 사용하면 두 디렉토리 1stfolder,
및 2ndfolder
를 모두 만들 수 있습니다.
ps aux
- 컴퓨터에서 실행되는 모든 프로세스를 자세히 나열합니다. 여기에는 사용자, 프로세스 ID PID,
및 프로세스의 이름이 포함됩니다. 이를 사용하면 프로세스 목록을 볼 수 있으며 필요한 경우 불필요한 프로세스 또는 중단된 프로세스를 종료할 수 있습니다.
kill PID
- PID는 문제가 되는 프로세스를 참조하는 번호입니다. PID는 ps aux
와 같은 명령을 통해 얻어야 합니다. 프로세스 종료가 거부되는 경우 kill -9 PID
를 지정하여 어떤 방법으로든 프로세스를 종료해야 합니다.
killall program
- Killall
은 by name
에 따라 listed program
의 모든 인스턴스를 종료합니다. 예를 들어 Firefox 인터넷 브라우저 세션이 3개 열려 있는 경우 killall Firefox
은 정확하게 모든 Firefox 세션을 종료시킵니다. kill
은 종료하려는 문제가 되는 Firefox 프로세스의 지정된 PID만 가져와 해당 PID만 종료합니다.
xkill
은 Windows를 클릭하고 종료하는 사용자 인터페이스 방법입니다. xkill
을 입력하면 해골과 엇갈린 뼈 아이콘이 표시되고, 다음 창을 클릭하면 종료됩니다.
Pipes
는 straight bar,
, 즉 |
키로 표시됩니다.
Windows에서 거의 사용되지 않는 키이지만 백슬래시 키에서는 자주 사용됩니다.
이러한 키는 명령을 함께 연결하는 데 사용됩니다. Pipes
는 한 명령의 출력을 가져와 경로를 지정하고 함께 연결하여 두 번째 명령에 대한 입력으로 사용합니다.
온라인 리소스에서 pipes
및 기록된 볼륨이 있는 경우의 사용에 대해 자세히 알아보십시오.
>
는 새 명령의 출력으로 대체하여 기존 파일 내용을 overwrite
하는 데 사용됩니다.
>>
는 기존 파일에 정보를 append
하는 데 사용됩니다. 이 명령은 로깅 작업에 유용합니다.
Example:
ps aux > processes.log
는 ps aux
의 출력을 processes.log
파일로 보내 텍스트 편집기에서 명령 출력을 볼 수 있도록 하고 파일의 현재 내용을 덮어씁니다.
tee
는 명령을 출력하여 다른 곳으로 보내기 위해 |
와 함께 사용됩니다. 이 명령은 누락 오류가 발생한 경우에 유용합니다. 이렇게 하면 화면에 표시되는 모든 항목도 파일에 캡처됩니다.
예: dmesg
| tee boot.txt
는 dmesg
명령을 실행하여 초기 부팅 정보를 보여줍니다. |
기호는 dmesg
의 출력을 tee
로 보냅니다. 이렇게 하면 터미널과 boot.txt
로그 파일로 전송하여 작업을 수행할 수 있습니다.
실행 파일로 표시된 후 현재 디렉토리에서 파일을 실행해야 합니까? 루트 권한이 필요하지 않은 경우 ./
연산자는 파일을 일반 사용자로 실행할 수 있습니다. ./
는 in the current directory
를 의미하므로 현재 디렉토리 외부 파일에서는 작동하지 않습니다.
현재 디렉토리에 없는 파일을 실행해야 하는 경우 해당 경로를 적절한 실행 프로그램으로 전달해야 합니다. Python 프로그램인 경우 python /path/to/file
, 셸 파일인 경우 sh /path/to/file
을 예로 들 수 있습니다. 다른 프로그램이 있지만 이러한 프로그램이 가장 일반적입니다.
다음과 같이 operation not permitted?
를 받았기 때문에 루트 권한이 있는 파일을 실행해야 하는 경우 명령 앞에 sudo
를 붙여야 합니다. 위의 예와 마찬가지로 sudo python /path/to/file
은 루트 권한으로 스크립트를 실행합니다.
터미널에서 사용자 인터페이스 프로그램을 실행하려면 프로그램 이름을 입력합니다. case sensitive!
그러면 시작됩니다. 이제 현재 터미널을 사용할 수 없게 됩니다. 프로그램이 열려 있는 동안 터미널을 닫으면 프로그램도 종료됩니다. 더 좋은 방법은 프로그램을 백그라운드로 전환하는 것으로, program_name
을 사용하고 exit
단어를 터미널에서 입력해 닫은 뒤 프로세스를 계속 실행하는 것입니다.
터미널에서 루트 권한으로 사용자 인터페이스 프로그램을 실행하려는 경우 gksudo
또는 gksu
를 접두사로 사용하되 sudo
는 접두사로 사용하지 않습니다. sudo
를 사용하여 사용자 인터페이스 애플리케이션을 실행하는 것은 잘못된 습관이므로 자제해야 합니다.
절대로 not
sudo
만 사용해서는 안 됩니다. Operation not permitted.
가 발생하기 때문입니다. 다음 사항을 염두에 두십시오. 루트 권한으로 잘못된 위치에서 명령을 실행하면 컴퓨터가 destroy
될 수 있습니다. 파일이 신뢰할 수 있는 출처에서 왔는지 확인하십시오.
현재 위치한 디렉토리를 모르십니까? pwd
를 입력하여 작업 디렉토리를 인쇄합니다.
디스크 공간을 계산하시겠습니까? df -h
는 빠른 그림을 제공할 수 있습니다.
폴더 또는 파일의 크기를 계산하시겠습니까? du -cksh target_name
이 그 역할을 합니다. 현재 폴더의 크기를 계산하시겠습니까? du -cksh
.
실행 파일을 표시하시겠습니까? chmod +x filename
이 그 역할을 합니다.
ISO를 마운트해야 합니까? Linux에는 이 기능이 내장되어 있습니다. 예를 들어 /home/user/isomount
디렉토리를 만들고 mount -o loop /path/to/myisofile.iso /home/user/isomount
명령을 실행하면 콘텐츠가 해당 폴더 내에 마운트됩니다.
명령을 실행한 후 다시 실행해야 합니다. 하지만 실행된 방법을 정확하게 기억할 수는 없습니다. 터미널에 history
를 입력하면 명령 기록이 인쇄됩니다. 기록을 지우시겠습니까? history -c
는 정보를 삭제합니다.