python TIL day-9 wecode

yo·2020년 6월 2일
0

0920 in
0100 out

-고시원 입성. 불태운다.
-아침에 문 열고 저녁에 문 닫고가자.
-linux 태어나서 처음 해보는데 너무 어렵다ㅜㅜ
-할거 엄청 많은데, 이대로 가면 안되겠다 싶어서 리눅스 강의 찾다가 생활코딩 리눅스 강의 발견. 총 66강
-2~3일안에 정주행 완강한다.
-별로 안졸리지만 내일을 위해 퇴근

정규표현식에 대한 오해와 해결

my_list = [x for x in range(10]
오해: for문 안에 있는 x값이 순차적으로 왼쪽 x로 넘어가는 구조인 줄 알았다.
때문에 아래 식이 이해되지 않았다.

def func():
  return "hi"

a = [func() for i in range(10)]
print(a)

출력결과
['hi', 'hi', 'hi', 'hi', 'hi', 'hi', 'hi', 'hi', 'hi', 'hi']

0~9가 넘어가야 할 자리에 func()가 있고, 이 func()는 숫자값을 받지 않는다.
근데 출력 결과는 func가 10번 실행된 것이다. 뭐지??

오해의 해결:
my_list = [x for x in range(10]
리스트 표현식의 작동 구조는 이렇다.
for문의 x값이 전달되는게 아니라, for문이 돌아가는 수만큼 왼쪽의 x가 실행되는 구조다.
위 문장에선 공교롭게 x값이 두개 들어와서 값이 넘어갔을 뿐이다.
이런 이해를 바탕으로 이해되지 않았던 식을 보면 이해된다.
i가 10번 반복되므로 func()가 10번 실행된다. 결과는 당연히 hi가 10개 출력된다.
완전히 이해했는지 확인하기 위해 하나 더 만들어보자.

y = 2
b = [y+ x for x in range(10)]
print(b)

결과는?
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

이해하니 짜릿, 기분 좋다.

linux

linux Basics

1991 Linus Torvals가 개발한 운영체제. 오픈소스, 누구나 코드를 볼 수 있다.
시스템 운영하는 가장 널리 사용되는 운영체제.
beginner들이 보통 어려워 하는 네 가지
1)Linux Directory Structure
2)PATH
3)Configs
4)Shell Commands

Linux File System Hierarchy(FHS)

-/는 디렉토리의 최상위에 존재한다. root directory라고 한다. Tree형태의 FHS의 뿌리가 된다. (참고로 directory는 윈도우스의 폴더와 같은 개념)
-시작점인 root디렉토리 안에 여러 하위 디렉토리들이 있고 그 안에 또 하위디렉토리가 있다.
각 디렉토리들은 slash(/)로 구분한다. (윈도우스에선 back slash\로 구분)
예를 들어, root디렉토리 안에 home이라는 하위 디렉토리 있고 그안에 a라는 하위디렉토리, 또 그 안에 bin이라는 디렉토리 있다면 경로는 아래와 같이 표시한다.
/home/a/bin

cd /

change directory의 약자, 특정 디렉토리로 이동할 떄 사용.
cd다음 가고자 하는 주소를 입력하면 된다. 루트 디렉토리로 가려면 /만 입력하면 된다.

ls

ls명령어는 list의 약자로, 해당 디렉토리의 내용들을 나열해준다.

home디렉토리가 보이는가? 그 안으로 가면 자신의 유저 아이디와 동일한 디렉토리가 있다.
이 디렉토리가 바로 유저의 home디렉토리다.
*맥에서는 다를 수 있다. 맥에선 /home디렉토리 말고 /User 디렉토리에 유저의 디렉토리가 있다.

Home Directory

-가장 기본, 가장 중요한 디렉토리. 유저의 공간이기 때문에.
-주로 여기서 많은 것들을 하게 된다.
-홈디렉토리 이외의 다른 디렉토리들은 주로 system directory라고 하고,
리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리들이다.
system directory를 아는것도 중요하지만 고급 내용이기 때문에, 먼저 기초인 home directory부터 알자.
매우중요.
-cd, cd~만 써도 홈디렉토리로 가진다.
-cd~/bin 입력하면 home디렉토리의 하위 디릭토리인 bin으로 이동한다.

Directory 경로(절대경로, 상대경로)

-파이썬에서 모듈, 패키지 불러오는 경로와 방법이 같다.
-상대경로 사용 시, dot(.)은 현재 위치 의미. duble dot(..)은 현재 위치의 하나 위 상위 디렉토리 의미.

file path

디렉토리 경로 말고 파일로 가는 경로도 똑같다.
/home/a/bin 안에 있는 test.py파일 열고 싶으면?
open /home/eun/bin/test.py

Configs

-리눅스는 설정을 주로 파일 통해서 한다. 여러 config file(설정파일)들이 있다. 너무 많아서 다 알기 어렵다.
-제일 중요한 설정 파일은 shell설정파일. 각 shell마다 고유 설정 파일 존재한다. Bash는 .bashrc라는 설정파일 사용, zsh는 .zshrc라는 설정파일 사용.
-shell설정 파일 비롯한 대부분의 설정파일은 home디렉토리 안에 있다. 근데 ls써봐도 안나온다.
그 이유는 dot file은 hidden file이기 때문(파일 앞에 dot 붙은 파일)
-dot file보려면 ls명령어에 -a를 추가하면 된다.(a means all)
ls -a
-내 컴퓨터엔 bash쉘을 사용하기 때문에 .bashrc파일이 있다.
-근데 이걸로 뭘 할수 있나? 뭘 어쩌라는거지? 라는 질문이 든다면 자연스럽다.
-말 그대로 설정을 할 수 있는데, 그 중 가장 중요한 것이 PATH 환경변수 설정이다.

PATH Environment Variable

PATH 환경변수 이해를 위해 environment Variable(환경변수)먼저 알아보자.
변수는 변수고, 환경은 현재 돌아가고 있는 shell의미한다.
-즉, 환경 변수는 shell의 어떤 설정 값을 가지고 있는 변수를 뜻한다.
-이 환경변수들은 shell이 돌아가는 동안 계속 존재, 계속 사용된다.
-echo $HOME이라 써보자. home환경번수 값이 출력된다. (홈 환경변수는 유저의 홈 디렉토리 경로다)

ijiyuns-MacBook-Pro:~ anna$ echo $HOME
/Users/anna

-home이라는 환경변수 내가 선언한 적 없지만, shell이 시작할 때 이미 자동으로 선언된다.
-리눅스의 대표적 환경변수는 아래와 같다.

-PATH가 중요하다. 명령어들을 찾을 수 있는 경로를 저장해놓은 환경변수다.


Useful Shell Tips, Basic Shell Commands

Piping, Man page, Projects

명령어

pwd: 현재 위치 반환
ls: 해당 디렉토리의 내용물들 알려줌. (list의 약자)

profile
Never stop asking why

0개의 댓글