라즈베리파이 파일 열기 - lajeubelipai pail yeolgi

* 이 시리즈는 윈도우나 iOS를 주로 사용하고 리눅스를 잘 모르는 사용자가 리눅스를 사용해야할 때를 위한 시리즈입니다.

리눅스 터미널에서 파일 실행하는 방법입니다.

보통 많이 봤던 .exe파일이나, .sh파일, 혹은 확장자가 없어도 파일을 열었을 때,

#!/bin/sh

이렇게 시작하는 파일들을 (Bash 쉘 스크립트라고도 부르죠) 다 똑같이 실행할 수 있습니다.

실행 방법은 온점과 슬래쉬( ./ )를 입력하고 그 뒤에 파일 이름을 입력하는 것인데요.

파일 이름을 filename이라고 하면,

./filename

이라고 입력 하시면 실행이 됩니다. 만약 파일이 확장자가 있다면 확장자까지 입력을 해주셔야 합니다.

예를 들어서 filename.exe라면 아래처럼 입력하시면 되고요.

./filename.exe

filename.sh라면 역시 아래처럼 입력하시면 됩니다.

./filename.sh

다음 시리즈에서는 리눅스에서 다양한 압축파일 푸는 법으로 돌아오겠습니다.

리눅스에서 파일 내용을 확인하는 명령어들을 살펴 봅니다. 각종 로그 파일을 살펴보거나 문서들을 살펴볼때 유용합니다.

cat

cat 명령어는 텍스트로 된 파일일 경우 그 내용을 정상적으로 출력하지만 바이너리 파일일 경우에는 출력은 하지만 알아볼 수 없다. 그리고 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.

사용법 : cat [옵션] 파일명

test 파일을 열어봄

cat test

각 행에 번호를 붙여서 출력

cat -b test

빈 행에도 번호를 붙임

cat -n test

연속되는 2개이상의 빈 행을 한행으로 출력

cat -s test

more

more 명령어는 특정파일의 내용을 확인하는 그 페이지에서 바로 vi 로 파일을 열어서 편집을 할 수도 있으며 텍스트 파일의 내용을 한 페이지씩 차례대로 확인할 수 있다.

사용법 : more 파일명

more test

많은 양의 파일리스트를 확인할때 파이프를 이용해 연결

ls -l /etc | more

특정 파일의 내용을 확인하고 있는 상태에서 사용할 수 있는 키

  • h : more 명령어상태에서 사용할 수 있는 키 도움말 확인
  • Space Bar : 한 화면씩 뒤로 이동하기 (f와 동일)
  • Enter : 현재행에서 한 행씩 뒤로 이동하기
  • q : more 명령어 종료하기
  • f : 한 페이지씩 뒤로 이동하기(Space Bar 와 동일)
  • b : 한 페이지씩 앞으로 이동하기
  • = : 현재 위치의 행번호 표시하기
  • /문자열 : 지정한 문자열을 검색하기
  • n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
  • !쉘명령어 : more 명령어상태에서 쉘명령어를 실행하기
  • v : more 명령어로 열려있는 파일의 현재위치에서 vi를 실행하기

less

less는 more와 매우 유사하다.

사용법 : less 파일명

less test ls -l | less

less 내부명령키

  • Space Bar 또는 f : 한 화면 뒤로 이동
  • b : 한 화면 앞으로 이동
  • Enter : 한 행씩 뒤로 이동
  • 숫자+n : 원하는 페이지만큼 뒤로 이동, 이후부터는 n만 눌러도 숫자페이지만큼 이동
  • q : less 수행종료

head

head는 파일의 앞부분부터 확인하는 명령어이다.

사용법 : head 파일명

기본적으로 행의 앞부분 부터 10 행까지만 출력

head test

20행까지 출력

head -n 20 test

200 byte 까지의 내용을 출력

head -c 200 test

tail

tail은 특정파일에 계속 추가되는 모든 내용을 모니터링 할 수 있어 실무에서 유용하게 사용되는 명령어이다.

/var/log/ 디렉토리에 존재하는 많은 시스템로그파일들의 로그파일들에 저장되는 내용들을 실시간으로 계속 모니터링하기 위한 용도로 자주 사용된다.

사용법 : tail 파일명

기본적으로 파일에서 마지막 부분의 10개행을 화면에 출력

tail test

마지막 부분의 20개행까지 출력

tail -n 20 test

마지막에서 200byte 까지를 출력

tail -c 200 test

로그파일을 실시간 모니터링, 종료는 Ctrl-c

tail -f /var/log/messages

안녕하세요 문쑹입니다 :)

오늘은 리눅스 기본 명령어와 디렉토리에 대하여 포스팅해보겠습니다.

쉘(Shell) 이란?

우리가 윈도우의 도스에서 내리는 대부분 명령은 command.com이라는 파일이 처리합니다. 이 파일을 운영체제의 쉘(Shell)프로그램이라고 말합니다. 쉘 프로그램은 사용자가 내린 명령을 운영체제가 수행할 수 있는 명령어로 해석하여 운영체제에게 전달하는 일을 합니다. 그래서 명령어 해석기라고 불립니다. 정리하자면 리눅스는 커널이라고 불리는 하드웨어를 직접 제어하는 부분과 그 위에서 커널에 명령을 주는 쉘로 구성이 됩니다.

쉘의 동작원리

기본 명령어

date 명령어

현재 날짜 및 시간을 확인할 수 있습니다.

hostname 명령어

호스트의 이름을 확인할 수 있습니다.

ls 명령어

현재 디렉터리안에 존재하는 모든 것들을 확인할 수 있습니다.

clear 명령어

화면을 깨끗하게 지울수 있습니다.

passwd 명령어

사용자 비밀번호를 변경할 수 있습니다.

관리자 권한으로 root 비밀번호 변경

파일 및 디렉터리

리눅스 디렉토리 트리 구조

home 디렉토리

리눅스 시스템은 다중 사용자 시스템이기 때문에 각 사용자마다 별도의 홈 디렉터리가 있습니다. 홈 디렉터리 이름은 일반적으로 사용자명과 같으며 로그인할 때 환경 변수 $HOME은 사용자의 홈 디렉터리의 이름으로 설정되어 있습니다.

아래와 같이 / 디렉터리로 이동한 뒤 cd $HOME을 통해 /home/pi 디렉터리로 이동이 가능합니다.

cd 명령어

cd 명령어는 change directory입니다. 말 그대로 디렉토리를 변경해주는 명령어 입니다. home 디렉토리로 이동하는 몇 가지 방법을 사용해보겠습니다.

pwd 명령어

현재 작업 디렉터리를 보여줍니다.

mkdir 명령어

새 디렉터리를 만드는 명령어 입니다.

touch 명령어

빈 파일을 생성해주는 명령어 입니다. 파일안에 내용은 없습니다.

ls 명령어

디렉터리의 내용을 출력하는데 사용됩니다.

ls -l 명령어를 통해 파일을 상세히 볼 수 있습니다.

read.txt가 폴더인지 파일인지, 권한은 어떻게 되어 있는지 소유자는 누구인지 생성된 날짜는 언제 인지 확인할 수 있습니다.

ls -a 명령어를 통해 숨겨진 폴더와 파일의 리스크를 확인할 수 있습니다.

숨김 파일을 touch명령어를 통해 만들어 보겠습니다. 숨김 파일을 생성할 때 파일명 앞에 .을 추가해주면 됩니다.

밑의 예제를 보면 ls -a 와 ls의 차이를 좀 더 쉽게 파악할 수 있겠죠?

ls -al 명령어를 통해 숨겨진 폴더나 파일의 리스트를 상세히 볼 수 있습니다.

리눅스에서는 명령어 뒤의 옵션을 동시에 붙여서 사용 가능합니다.

cat 명령어

파일의 내용을 화면에 바로 출력할 수 있습니다.

head 명령어

파일의 앞 10줄을 출력해줍니다.

tail명령어

파일의 맨 뒤 10줄을 출력해 줍니다.

head 와 tail 명령어의 옵션을 조정하여 원하는 줄만큼 출력할 수도 있습니다.

tail -f 옵션을 사용하면 실시간으로 변경된 내용을 확인할 수 있습니다.

두개의 터미널을 열어줍니다.

첫 번째 터미널에서 다음과 같이 입력하고 대기합니다.

첫 번째 터미널

두 번째 터미널에서는 nano 에디터를 사용합니다. 입력이 다되었으면 저장 후 nano 에디터를 종료해주세요.

ctrl + x 를 해주시면 됩니다. 저장하시겠습니까? 라고 물어보는데 그냥 y를 입력하고 엔터를 치시면됩니다.

두 번째 터미널

저장이 되는 동시에 첫 번째 터미널에서 입력한 내용이 출력됩니다.

첫 번째 터미널

파일 이동, 삭제, 복사 명령어

cp명령어

파일을 복사해주는 명령어 입니다.

cp <복사할 대상> <복사될 위치>

파일을 복사하는데 다른 이름으로 저장하고 싶다면 cp <복사할 대상> <복사될 위치/파일명> 으로 하시면 됩니다.

mv명령어

파일을 이동하는 명령어 입니다.

mv <파일명> <이동할 위치>

mv명령어를 통해 파일명을 변경하고 싶다면 mv <파일명> <다른이름> 으로 해주시면됩니다.

rm명령어

파일을 삭제해주는 명령어입니다. rm <파일명>

-r 옵션을 사용하면 디렉토리를 삭제할 수 있습니다. rm -r <디렉토리명>

파일 찾기 명령어

which 명령어

특정 명령어의 위치를 전체 경로로 찾아주는 명령어 입니다. witch <명령어>

which 명령어를 통해 python 실행파일들이 어디있는지 찾아 보겠습니다. 그리고 which 명령어를 통해 일반 파일을 찾을 수는 없습니다.

whereis 명령어

실행파일, 소스파일, man 페이지 파일의 위치를 찾아주는 명령어 입니다. whereis <명령어>

find 명령어

python3.7이라는 이름을 가진 모든 파일과 디렉토리를 찾을 수 있습니다.

앞에 sudo를 붙이는 이유는 pi사용자가 아닌 root사용자의 권한을 대행 받아서 모든 폴더를 탐색하기 위해서입니다.

권한

리눅스(Linux)는 하나의 컴퓨터를 여러 사람이 사용할 수 있는 멀티유저 운영체제(OS)이기 때문에 권한 관리가 매우 중요합니다. 특정 파일이나 디렉토리를 생성한 뒤 그 파일에 접근할 수 있는 권한을 설정하여 다른 유저가 접근할 수 없게 할 수 있습니다.

ls -l 명령어를 통해 파일을 자세히 보겠습니다.

<1> file1.txt를 살펴보기

1. -

파일의 타입

2. rw-r--r--

퍼미션 정보

r read 권한 4
w write 권한 2
x execute 권한 1
- 권한없음 0
소유자 rw- 6 읽고 쓰는 권한
소유그룹 r-- 4 읽기 권한
모든유저 r-- 4 읽기 권한

3. 1

링크수

윈도우에 비유하면 "바로가기"와 같습니다. 생성 방법은 in [대상파일] [링크파일] 입니다.

4. root <첫 번째>

소유자

5. root <두 번째>

소유그룹

6. 0

용량

7. 7월 22 11:45

생성날짜

8. file1.txt

파일이름

<2> chmod명령어를 이용하여 file1.txt권한 변경하기

소유자와 소유그룹이 root이고 다른 모든 유저는 읽기(r--)권한만 있는 상태입니다. 그렇기 때문에 pi 사용자로 해당 파일을 읽는 것은 가능하지만 쓰기는 불가능합니다.

1. file1.txt 파일 읽어보기

nano 에디터를 사용하여 file1.txt를 읽었습니다.

2. file1.txt 수정하기

아래와 같이 "hello pi"를 입력하고 ctrl + x -> Y -> Enter 을 하면 저장이 되지 않습니다. 그 이유는 write의 권한인 w가 없기 때문입니다. 이제 권한을 수정하여 글을 쓸 수 있도록 해보겠습니다. 

저장하지 않고 nano 에디터를 빠져나오려면 Ctrl + x -> N을 입력하면 됩니다.

3. file1.txt 권한 수정하기

수정 권한 있을 때

chmod <수정번호> <파일명>

수정 권한 없을 때

sudo chmod <수정번호> <파일명>

pi가 file1.txt 파일에 수정권한이 없기 때문에 sudo를 붙여줍니다.

file1.txt의 모든 유저 권한이 rw-으로 변경된 것을 확인할 수 있습니다.

4. file1.txt 파일 수정 재시도

수정이 잘 된것을 확인 했습니다.

<3> chmod명령어

권한을 변경해주는 명령어이며 숫자를 통해서 권한을 변경할 수 있습니다.

  • chmod <수정번호> <파일명>
  • rwx 3가지 권한을 다 주려면 7을 주면 됩니다.
  • r-- 권한만 주려면 4를 주면 됩니다.
  • -w- 권한만 주려면 2를 주면 됩니다.
  • --x 권한만 주려면 1을 주면 됩니다.
  • read의 약자 r은 4로 표현됩니다.
  • write의 약자 w는 2로 표현됩니다.
  • execute의 약자 x는 1로 표현됩니다.

file2.txt 파일에 소유그룹 권한에 실행 권한을 줘보겠습니다. 아래 예제와 같이 실행권한이 생기면서 초록색으로 변경이 되었습니다.

<4> chown 명령어

파일의 소유자와 소유그룹을 변경할 수 있습니다. chown <소유자> <소유그룹> <파일명 or 디렉토리명>

현재 file1.txt는 소유자와 그룹소유자가 모두 root입니다. 저는 현재 pi로 로그인해 있기 때문에 해당 파일의 소유권을 변경할 권한이 없습니다. 이때는 sudo 명령어를 통해서 권한을 대행받고 소유권을 변경해 보겠습니다.

입출력 재 지정 IO Readirection

리다이렉션은 표준 입출력의 방향을 바꿔줍니다. 표준 입력은 키보드, 표준 출력은 모니터이지만 이를 파일로 처리하고 싶을 때 주로 사용합니다. 모든 명령어에 대한 결과가 모니터화면에 출력되는 것을 당연하게 생각할 수 있지만 이것은 기본 표준 입출력이 모니터라는 것을 의미하기 때문입니다. 

<1> '>' 사용법

ls의 리다이렉션을 readme.txt로 변경

> 을 다시 사용하면 이전에 내용은 사라지고 덮어쓰게 됩니다.

덮어쓰기 된 readme.txt 파일

<2> '>>' 사용법

추가된 readme.txt 파일

다음에는 윈도우랑 라즈베리파이랑 파일을 공유할 수 있도록 설정하는 방법을 포스팅 해보겠습니다. 감사합니다 :)

Hasta Luego~!

Toplist

최신 우편물

태그