파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

반응형

파이썬 코드에서 리눅스 명령 실행을 하고 싶다.

찾아보니 두가지 방법이 있는 것 같다.

 

1. os.system 이용

#!/usr/bin/phtyon
# -*- coding: UTF-8 -*-

import os

print os.system("ls -al")

말 그대로 리눅스 명령어를 실행하는건데 이렇게 실행하고 콘솔에 출력은 되지만 변수로 받아서 파이썬 코드에서 사용하는 것은 안된다고 한다.

2. subprocess 이용

#!/usr/bin/phtyon
# -*- coding: UTF-8 -*-

import subprocess

subprocess.call(["ls", "-al"])
subprocess.call("ls -al", shell=True)

두가지 방법으로 어떤걸 써도 된다고 하는데.... 잘 모르니 쉬워 보이는 두번째 방법으로 -_-;;

subprocess 를 이용하면 실행 결과값을 받아서 파이썬 코드 안에서 사용할 수 있다.

아래 코드는 ls -al 의 결과를 한줄씩 출력 하는 샘플

 

#!/usr/bin/phtyon
# -*- coding: UTF-8 -*-

import subprocess

temp = subprocess.call(["ls", "-al"])
lines = temp.split("\n")

for line in lines:
	print(line)

 

 

 

 

공유하기

게시글 관리

구독하기[인터돌™] 공부 해보자!! 열심히~~~

저작자표시

프로그램은 웹 브라우저, 스프레드 쉬트 어플리케이션, 워드 프로세서와 같은 실행할 수있는 모든 소프트웨어 응용 프로그램입니다. 프로세스는 이러한 프로그램의 현재 실행 중인 인스턴스(instance)입니다.

프로세스는 같은 프로그램이 실행되고 있다고 해도 서로 독립적입니다. 예를 들어 동일한 파이썬 프로그램이 여러 개의 프로세스로서 실행되고 있을 때 각각의 프로세스는 아무런 연관성이 없으며 완전히 독립적으로 실행이 됩니다. 각각의 프로세스는 비록 같은 프로그램을 실행하고 있다 하더라도 각각의 cwd와 환경변수 셋팅이 있습니다.

아래 그림은 명령어 프롬프트 쉘 프로그램의 4개의 인스턴스이며 독립적으로 실행되는 모습입니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

실행 중인 프로세스를 보려면

● 윈도우즈의 task manager: CTRL-SHIFT-ESC

● macOS: Applications>Utilities>Activity Monitor

● Ubuntu Linux task manager: CTRL-ALT-DEL

커맨드 라인(Command Line)

command line은 오퍼레이팅 시스템과 상호 작용을 하고 프로그램을 실행시킬 수 있는 명령을 입력할 수 있도록 해주는 텍스트 기반의 프로그램입니다. command line interface(CLI), command prompt(커맨드 프롬프트), terminal(터미널), shell(쉘), console(콘솔) 모두 다 command line과 같은 것을 의미합니다.

많은 컴퓨터 사용자들은 command line을 고급 기능으로 생각하고 사용하기를 꺼려합니다. 사용하기 불편하기 때문이죠. 그러나 command line을 사용하는 이유가 몇 가지 있습니다.

첫 번째는 사용 환경을 구축할 때 GUI보다는 command line 을 사용하는 오픈 소스 프로젝트가 많습니다. 또 다른 이유는 명령어를 입력하는 것이 마우스로 여러 번에 걸쳐서 버튼을 클릭하는 것보다 매우 빠를 수 있습니다. 아이콘을 다른 아이콘으로 드래그하는 것보다 훨씬 덜 모호하기도 하고 여러 개의 명령어를 묶어서 하나의 스크립트로 작성하여 복잡한 과정을 자동화 하기가 매우 용이하기 때문입니다.

command line 프로그램은 컴퓨터에 실행 가능한 파일의 형태로 존재하며 쉘(shell) 또는 쉘 프로그램(shell program)이라고 합니다. 이 쉘 프로그램을 실행시키면 오퍼레이팅 시스템과 연동할 수 있는 터미널 창이 나타납니다.

윈도우즈에서 쉘 프로그램은 C:\Windows\System32\cmd.exe 입니다. 윈도우즈에서 사용하는 쉘의 이름은 커맨드 프롬프트(command prompt)라고 하며 리눅스나 macOS의 여러 쉘 프로그램과 마찬가지로 텍스트 기반의 CLI 터미널 창을 제공하고 사용자가 명령어를 입력하면 그것을 실행합니다.

이 외에 윈도우즈에서는 리눅스의 쉘과 매우 유사한 Power Shell을 제공하며 command prompt 대신 Power Shell을 사용하는 방법은 다음에 다루도록 하겠습니다.

여기서는 command line의 일반적인 개념과 많이 사용하는 명령어에 대하여 알아보겠습니다.

터미널 창 열기

윈도우즈에서는 시작 버튼을 누르고 cmd 라고 입력하여 "명령 프롬프트" 아이콘이 나타나면 클릭하거나 "시작(윈도우즈로고)>Windows 시스템>명령 프롬프트"를 선택합니다.

터미널 창이 열리면 current folder에 대한 full path가 쉘 프롬프트로 디스플레이 되며 여기에 명령어를 입력할 수 있습니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

커맨드 라인에서 프로그램 실행하기

프로그램이나 명령어를 실행하려면 command line에 이들의 이름을 입력하면 됩니다. 프로그램 이름이나 명령어는 리눅스 시스템에서는 대소문자를 구별하지만 윈도우즈나 macOS에서는 구별하지 않습니다. 프로그램의 이름은 마치 명령어처럼 동작합니다.

윈도우즈에서 shell 프로그램의 command line에 프로그램명을 입력하면 shell은 먼저 cwd에 프로그램이 있는지 찾아 본 후 없으면 PATH 환경변수에 포함되어 있는 폴더 순서대로 프로그램을 찾습니다.

macOS와 리눅스에서 cwd 부터 찾으려면 파일명 앞에 ./를 사용해야 합니다.

프로그램이 PATH에 지정된 폴더에 없는 경우는

● cd 명령어를 사용하여 cwd를 프로그램이 있는 폴더로 바꾼 후 프로그램 이름을 입력하거나

● 프로그램 파일의 full path를 사용합니다.

윈도우즈에서 파일 확장자가 .exe 나 .bat로 끝나는 경우는 확장자를 입력하지 않아도 됩니다. macOS나 리눅스의 경우는 보통 실행 파일 확장자가 없으며 executable permission set을 가지고 있습니다.

Command Line Argument의 사용

Command line argument(명령줄 인수)는 명령어 이름 뒤에 입력하는 텍스트입니다. 파이썬 펑션 호출에 전달되는 인수와 마찬가지로 명령어에 특정 옵션 또는 처리 방향등을 추가합니다.

예를 들어, "cd C:\Users" 명령을 실행할 때 "C:\Users" 부분은 명령 cd에 대한 argument(인수)이며 cd에게 어떤 폴더로 cwd를 바꿀 것인지를 지정합니다. 파이썬 스크립트를 실행할 때 "python scriptName.py"라고 입력하는 데 여기서 "scriptName.py"는 python(명령어) 프로그램에 대한 argument이며 "scriptName.py"를 불러와서 실행할 것을 지정합니다.

command line option(flag, switch 또는 option 이라고도 함)은 한 글자 또는 짧은 단어로 구성되는 command line argument입니다. 윈도우즈에서 command line option은 보통 / 로 시작하고 macOS나 리눅스에서는 싱글 대시(-)나 더블 대시(--)로 시작합니다. command line option은 macOS나 리눅스에서는 보통 대소문자를 구별하나 윈도우즈에서는 구별하지 않으며 command line option끼리는 스페이스로 구분합니다.

폴더와 파일명은 많이 사용되는 command line argument중 하나입니다. 만약 폴더 또는 파일 이름에 공백이 있으면 이름을 따옴표로 묶어주어 command line이 혼돈되지 않도록 해 줍니다.

C:\Users\hank_>cd "Saved Games"

C:\Users\hank_\Saved Games\>

또 많이 사용되는 command line argument에는 /? 가 있으며 macOS와 리눅스에서는 --help가 같은 기능을 합니다. 윈도우즈에서 "cd /?" 를 수행하면 cd 명령어의 기능에 대해서 설명하고 함께 사용할 수 있는 command line argument를 보여줍니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

이 도움말 정보는 윈도우즈 cd 명령이 chdir이라는 이름으로도 사용된다는 것을 알려줍니다. (저의 경우는 chdir 라고 사용해 본적은 없네요.)

대괄호 안에 표시된 것은 옵셔널 인수이므로 선택적으로 사용된다는 것을 의미합니다. 예를 들어, CD [/D] [드라이브:][경로]는 /D 옵션을 사용하여 드라이브 또는 경로를 지정할 수 있음을 알려줍니다. 불행히도 윈도우즈에서 제공하는 /? 에 대한 도움말 정보는 초보자에게는 그렇게 친절하지 않아 종종 이해하기 어려운 경우가 많으므로 책이나 웹의 도움을 받는 것이 좋습니다.

Command Line에서 -c 스위치를 사용하여 파이썬 코드 실행하기

한 두줄 짜리 보관할 필요가 없는 파이썬 코드를 실행하고자 하는 경우에는 -c 스위치 뒤에 파이썬 코드를 따옴표 안에 사용하면 됩니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

-c 스위치를 사용하면 파이썬 쉘에 진입할 필요없이 간단하게 파이썬 코드를 실행하고 다시 윈도우즈 command line으로 돌아올 수 있습니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

Command Line에서 파이썬 프로그램의 실행

파이썬 프로그램은 파일 확장자가 .py인 텍스트 파일이며 실행 파일이 아닙니다. 파이썬 인터프리터가 .py 파일을 읽어서 이 파일안에 있는 파이썬 구문을 실행하는 것입니다.

윈도우즈에서 파이썬 인터프리터의 파일 이름은 python.exe 이며 macOS와 리눅스에서는 python3 입니다. myScript.py라는 파이썬 스크립트를 실행시키려면 윈도우즈에서는 command line에서 "python myScript.py", macOS와 리눅스에서는 "python3 myScript.py"를 실행하면 됩니다.

py.exe 프로그램

윈도우즈에서 파이썬은 C:\Windows 폴더에 "py.exe" 프로그램을 설치합니다. 이 프로그램은 python.exe와 동일하지만 컴퓨터에 설치된 모든 파이썬 버전을 선택하여 실행할 수있는 추가적인 command line argument를 사용할 수 있습니다.

C:\Windows 폴더는 PATH 환경 변수에 포함되어 있으므로 모든 폴더에서 "py" 명령을 실행할 수 있습니다. 여러 버전의 파이썬이 설치되어 있는 경우 "py"를 그냥 실행하면 가장 최신 버전의 파이썬이 실행됩니다.

command line argument에 -3을 사용하면 파이썬 3의 가장 최신 버전이 -2를 사용하면 파이썬 2의 가장 최신 버전이 실행됩니다. command line argument에 -3.9 또는 -3.8과 같이 구체적인 버전을 지정할 수도 있습니다. -c 스위치를 사용하는 것 외에는 "py.exe" 과 "python.exe"는 동일하게 사용됩니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

파이썬 프로그램에서 명령어 실행

subprocess 모듈에있는 파이썬의 subprocess.run() 펑션을 사용하여 파이썬 프로그램 내에서 셸 명령을 실행합니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

탭 키를 사용하는 자동 완성 기능

command line은 입력을 최소화하는 자동 완성 기능을 제공합니다. 폴더나 파일이름의 처음 몇 글자만 입력하고 TAB키를 누르면 나머지 부분을 자동으로 채워주며 지정한 글자로 시작되는 파일이나 폴더가 여러 개 있는 경우는 TAB 키를 누를 때마다 순환하며 나타납니다. 원하는 내용이 나타나면 엔터를 치거나 다른 내용을 계속 입력하면 됩니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

명령어 히스토리(Command History)보기

commnad line의 command history에는 사용한 명령어들이 보관되어 있습니다. 터미널에서 위쪽 화살표 키를 누르면 command line에 마지막으로 사용한 명령어가 나타납니다. 계속하여 위쪽 화살표를 누르면 이전 명령어들이 나타납니다. 아래 쪽 화살표를 누르면 좀 더 최근에 사용한 명령어를 볼 수가 있습니다. 프롬프트에 있는 현재의 명령어를 무시하려면 CTRL-C나 ESC 키를 누르면 깔끔하게 새로운 프롬프트가 나타납니다.

윈도우즈 command line에서 "doskey /history"를 입력하거나 F7 키를 사용하면 명령어 히스토리를 볼 수가 있습니다. macOS나 리눅스에서는 history 커맨드를 사용합니다.

많이 사용하는 명령어

여기서는 command line에 많이 사용되는 명령어를 정리하였습니다. 파이썬 프로그래머로서 꼭 필요한 최소한의 명령어만 다루었으므로 숙지하시기 바랍니다.

폴더와 파일명에 와일드카드 캐릭터(Wildcard Character) 사용하기

많은 명령어가 폴더 및 파일명을 command line argument로 사용하며 또한 폴더와 파일명에 *와 ? 와일드카드 캐릭터가 포함된 것을 허용합니다. * 문자는 글자 수에 관계 없이 임의의 문자와 매치하며 ?는 단일 문자와 매치됩니다. *와 ?를 사용하는 식을 glob pattern(global pattern의 약어) 이라고 합니다. glob pattern을 사용하여 파일명이나 폴더명의 패턴을 지정할 수 있습니다.

예를들면 dir 명령을 사용하여 cwd내의 모든 파일과 폴더를 표시할 수 있지만 파이썬 파일만 리스트하고 싶으면 "dir *.py"를 사용하면 됩니다. glob pattern "*.py"는 ".py" 앞에 문자수 관계없이 문자 그룹이 있는 파일명이나 폴더명을 의미합니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

glob pattern "records201?.txt"는 'records201' 다음에 한 문자가 오고 그 다음에 ".txt"가 있는 파일명과 매치합니다. 이는 records2010.txt, records2019.txt, records201X.txt와 같은 파일 이름과 매치합니다. glob pattern "records20??.txt"는 records2021.txt 또는 records20AB.txt와 같은 이름과 매치합니다.

cd 명령어로 디렉토리 바꾸기

cd [대상 폴더]

shell의 cwd를 대상 폴더로 바꿉니다.

shell은 prompt에 cwd를 표시하며 command line에 사용하는 폴더나 파일명은 이 디렉토리에 상대적인 이름으로 해석됩니다. 폴더명에 스페이스가 있는 경우는 따옴표로 둘러 싸야합니다.

home folder로 이동하고자 하는 경우 윈도우즈에서는 같은 드라이브에 있으면 "cd %USERPROFILE%" 다른 드라이브에 있는 경우는 "cd /D %USERPROFILE%" 를 사용하면 됩니다.

드라이브가 다른 폴더로 바꾸고자 하는 경우에는 드라이브를 먼저 바꾼 후에 폴더를 바꾸던가 /D 옵션을 사용하면 됩니다. 상위의 폴더로 바꾸려는 경우는 .. (마침표 두 개)를 사용합니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

폴더의 내용 보기

dir

윈도우즈에서 "dir" 명령은 cwd에 있는 폴더와 파일을 표시합니다. macOS 및 리눅스에서는 ls 명령이 같은 역할을 합니다. cwd가 아닌 다른 폴더의 내용을 보려면 "dir [다른 폴더명]"이나 "ls [다른 폴더명]"을 실행합니다.

"ls" 명령에는 -l 및 -a 스위치를 많이 사용합니다. ls는 기본적으로 파일 및 폴더의 이름만 표시하는 데 파일의 크기, 권한, 마지막 수정한 타임 스탬프 등을 디스플레이하는 긴 목록을 보려면 -l 플래그를 사용합니다.

macOS 밀 리눅스에서는 파일명이 마침표로 시작하는 파일은 configuratin file로 사용하며 일반 명령어에서 사용하지 못하도록 숨겨진 파일로 관리하는 데 -a 옵션을 사용하면 이런 파일들의 목록까지 볼 수 있습니다. 모든 파일의 자세한 정보를 보고자 하는 경우에는 "ls -al"로 사용합니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

/s 옵션으로 하위 폴더 내용 보기

dir /s

윈도우즈에서 "dir /s"를 실행하면 cwd와 그 하위 폴더의 내용이 표시됩니다.

다음 그림은 home dir 및 하위 폴더에서 "zm"을 시작하는 ".py"파일 목록을 디스플레이 하는 예입니다.

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

macOS 및 리눅스에서는 find . -name "zm*.py" 가 같은 기능을 합니다. 여기서 마침표는 cwd에서 시작하라는 의미입니다(find 다음에 한 칸 띄고 점이 있습니다.).

copy 및 cp를 사용하여 파일 및 폴더 복사

다른 디렉토리에 파일 또는 폴더의 복사본을 만들려면 "copy" 명령어를 사용합니다.

copy [소스 파일 또는 폴더] [대상 폴더]

또는

cp [소스 파일 또는 폴더] [대상 폴더]

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

move 및 mv로 파일 및 폴더 이동

소스파일 또는 폴더를 다음 명령어를 사용하여 대상 폴더로 이동할 수 있습니다.

윈도우즈: move [소스파일 또는 폴더] [대상 폴더]

macOS 및 Linux: MV [소스파일 또는 폴더] [대상 폴더]

파이썬 터미널 실행 명령어 - paisseon teomineol silhaeng myeonglyeong-eo

ren 및 mv로 파일 및 폴더 이름 바꾸기

파일 또는 폴더의 이름은 다음 명령어를 사용하여 바꿀 수 있습니다.

윈도우즈: ren [파일 또는 폴더] [새 이름]

macOS 및 Linux: mv [파일 또는 폴더] [새 이름]

macOS와 리눅스에서는 파일이나 폴더이동에도 사용하는 mv 명령을 사용하여 이름을 바꿀 수 있습니다. 두 번째 인자로 존재하는 폴더명을 사용하면 파일이나 폴더를 이동하는 것이고 그렇지 않은 경우는 파일이나 폴더의 이름을 바꾸는 것입니다.

del 및 rm으로 파일 및 폴더 삭제

파일 또는 폴더를 삭제하려면 다음 명령어를 사용합니다.

윈도우즈: del [파일 또는 폴더]

macOS 및 Linux: rm [file] (rm은 remove의 단축형)

이 두 삭제 명령에는 약간의 차이가 있습니다.

윈도우즈에서는 폴더에 대하여 del을 실행하면 그 안의 모든 파일이 삭제되지만 하위 폴더는 삭제되지 않습니다. del 명령은 소스 폴더를 삭제하지 않으며 rd 또는 rmdir 명령을 사용하여야 합니다.

del [folder]를 실행해도 소스 폴더의 하위 폴더 내 파일은 삭제되지 않습니다. 이 파일들을 삭제하기 위해서는 "del /s /q [폴더명]" 명령을 사용합니다. /s는 del 명령이 서브 폴더에 실행되도록 하는 스위치이며 /q는 조용히(quiet) 물어보지 말고 실행하라는 스위치입니다.