210701_교육 4일차

오르미·2021년 7월 2일
0

AIFFEL양재

목록 보기
4/8
post-custom-banner

AIFFEL 노드스터디

(3일차)터미널로 배우는 리눅스 운영체제

1. 명령어

❤️: 필수로 꼭 알아두어야 하는 가장 기본적인 명령어입니다.
👍️: 사용법을 기억해두면 편리한 명령어입니다.
👌️: 이런 명령어가 있다는 것만 알아두고 필요할 때마다 검색해서 사용하면 충분합니다.

❤️echo : 뒤이어입력한 내용출력
👍️pwd : Present Workong Directory 약자 현재 내가 위치한 디렉토리 위치 출력
❤️ls : 현재 디렉토리 내의 파일 및 폴더들을 출력
~ 홈디렉토리 / . 현재폴더 / .. 상위폴더 .으로 시작하는 파일은 숨김파일
ls --all(-a) 숨김파일들까지 표시
ls --help : 도움말
❤️cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동
@상대경로절대경로: 명령을 입력하는 시점에 내가 현재 있는 디렉토리에 영향을 받는 위치 표시 방식을 상대 경로라고 합니다. 반면에 /home/june/aiffel와 같이 어디서 입력하든 똑같은 곳을 가리키도록 위치 전체를 적어주는 것을 절대 경로
👍️ls -alrt :유용할때가 많다.
=ls -l -a -rt(최신파일이라래쪽으로 표시됨)
👌️ 일부 주요 폴더들의 용도 및 내용물
/home: 사용자별 홈 디렉토리들이 있는 곳
/root: 최고 관리자 계정의 홈 디렉토리
/mnt: 저장장치(HDD, SSD)가 붙는 위치
/media: 이동식 미디어(USB 드라이브)가 붙는 위치
/tmp: 재부팅 시 삭제될 임시 파일들을 저장하는 폴더
/dev: 컴퓨터에 연결된 하드웨어 및 가상 기기(device)들을 가리키는 파일들
/proc: 현재 실행 중인 프로세스들을 가리키는 파일들
/etc: 각종 설정 파일들
/bin: 실행 가능한 프로그램(binary)들
/sbin: 시스템 관리용 프로그램들
/usr: 다중 사용자 모드에서 사용 가능한 파일 및 프로그램들 (root 계정만 있는 단일 사용자 모드에서는 사용 불가)
/var: 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 파일들

2. 운영체제

2.1 운영체제란

  • 컴퓨터라는 대저택을 관리하는 집사와 같은 존재. 집주인(최고관리자)의 권한을 위임받아 요리사, 정원사, 청소부 등 각각의 보조 인원(어플리케이션)들에게 재산(연산 자원)을 적절히 분배하여 운영하고, 서로 권한을 침범할 수 없도록 관리하는 역할

  • 커널은 보안, 자원관리, 디바이스 인터페이스 추상화 등 바로 대저택의 집사와 같은 역할을 하는 운영체제의 가장 핵심적인 구성요소

2.2 셀

  • 운영체제껍데기

  • 그래픽기반 GUI셀 컴퓨팅작업을 수행하기 위해 그래픽(아이콘 및 이미지)를 제공, GUI 사용하는 동안 명령을 기억할 필요없다. window, 우분투 및 mac

  • 텍스트기반 CLI 셀 명령을 사용해서 컴퓨팅 작업을 수행함. 사용자는 명령에 대해 잘 알고있어야 한다 . Dos Linux 운영체제

2.3 프로세스와 스레드
😥프로세스와 스레드라는 것에 대해 이해하기가 쉽지않아 여러자료를 살펴봄
유튜브:https://www.youtube.com/watch?v=LLiV5Yz1AWg\

3. 리눅스 기반 운영체제

3.1 프로세스 관리와 시스템 콜
👍️ ps: 현재 터미널과 관련된 프로세스 목록을 출력합니다.
👍️ ps -ef: 모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보를 출력합니다.
👍️ grep: 입력으로 전달된 내용에서 특정 문자열을 포함한 라인만 선택해서 출력합니다. 파이프(|)를 통해 다른 명령문 실행결과와 결합해서 사용할 때 특히 유용합니다.
❤️ sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.
👍️ kill: PID에 해당하는 프로세스에 시그널을 보냅니다.

3.2 프로그램과 환경변수
👌️ which: 명령어의 전체 경로를 출력합니다.

$PATH

  • 셸에서 단어 앞에 $가 붙으면 환경 변수(environment variable) 를 의미 echo $PATHPATH라는 이름의 환경 변수($)의 값을 출력(echo)하라는 뜻
  • PATH 환경 변수는 셸이 프로그램을 실행할 때 참조할 경로들을 나타냄

👌️ export: 셸 변수나 함수를 현재 환경으로 내보냅니다.
👌️ env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.
❤️ apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거합니다.
❤️ cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.
👍️ chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.
👍️ chmod: 대상 파일의 권한을 변경합니다.
👍️ sort: 입력된 텍스트를 줄 단위로 정렬합니다.

sudo(Switch User Do) 명령어

✅ 셸 편리한 기능

  • 터미널 에뮬레이터에서 무언가를 복사하거나 붙여넣을 때에는 Ctrl+Shift+C, Ctrl+Shift+V를 사용해야 합니다.
  • 위아래 화살표를 통해 이전에 실행한 명령들을 다시 입력할 수 있습니다.
  • history 명령을 통해 기존에 실행한 명령들을 표시할 수 있습니다. 여기서 나오는 번호를 참고하여 !번호를 실행하면 해당 번호의 명령이 다시 실행됩니다.
  • Ctrl+A, Ctrl+E를 통해 명령어의 앞, 뒤로 커서를 이동할 수 있습니다.
  • clear 명령어 또는 Ctrl+L을 통해 기존에 터미널에 출력되었던 내용을 깨끗이 지울 수 있습니다.
  • 실수로 Ctrl+z를 눌러 프로세스를 중지시켰다면, fg를 통해 다시 재개시킬 수 있습니다.
  • 실수로 vi 편집기에 처음 들어갔다면, Ctrl+C 또는 Esc를 누른 뒤 :q!를 입력하고 엔터를 눌러 편집기를 종료할 수 있습니다.

✅ 셸 명령어모음
셸 환경
👍history: 셸 명령어 이력을 출력합니다.
👍man: 프로그램의 매뉴얼 페이지를 출력합니다.
👌which: 명령어의 전체 경로를 출력합니다.
👌export: 셸 변수나 함수를 현재 환경으로 내보냅니다.
👌env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.
텍스트 처리
❤️echo: 뒤이어 입력한 내용을 출력합니다.
❤️cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.
👍sort: 입력된 텍스트를 줄 단위로 정렬합니다.
👍less: 텍스트 파일의 내용을 자유롭게 조회하고 검색합니다.
👍head: 텍스트 파일의 앞 몇 줄만 출력합니다.
👍tail: 텍스트 파일의 마지막 몇 줄만 출력합니다.
👍cut: 텍스트를 구분자(delimiter)에 따라 나눕니다.
👍uniq: 텍스트 중 중복 값들을 제거합니다.
👍grep: 정규식을 활용해 텍스트를 검색합니다.
👍wc: 텍스트를 단어, 줄, 문자 등 단위로 셉니다.
👌comm: 텍스트 파일을 비교합니다.
👌zcat: 압축된 텍스트 파일을 출력합니다.
👌sed: 정규식을 활용해 텍스트를 변형합니다.
👌awk: 텍스트를 스캔하고 변형합니다.
파일 제어 및 이동
❤️ls: 현재 디렉토리 내의 파일 및 폴더들을 출력합니다.
❤️cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동시킵니다.
❤️cp: 파일을 복사합니다.
❤️mv: 파일을 이동합니다.
❤️rm: 파일을 삭제합니다. 폴더를 삭제하기 위해서는 -r (recursive) 옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면 -f (force) 옵션을 함께 사용해야 합니다.
👍chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.
👍chmod: 대상 파일의 권한을 변경합니다.
👍find: 파일을 찾습니다.
👍pwd: Present Working Directory의 약자입니다. 현재 내가 >위치한 디렉토리 위치를 출력합니다.
👌ln: 파일에 대한 링크를 생성합니다.
👌touch: 파일 접근 및 수정 시간을 변경합니다. 빈 파일을 만드는데도 사용할 수 있습니다.
👌tar: 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축합니다.
👌mount: 새로운 저장장치를 파일시스템으로서 추가합니다.
👌rename: 여러 파일들의 이름을 규칙에 따라 한번에 변경합니다.
👌df: 파일시스템의 남은 용량을 표시합니다.
시스템 및 프로세스 제어
❤️sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.
❤️apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패 >키지를 가져다 설치하거나 제거합니다.
👍ps: 현재 프로세스 목록을 출력합니다.
👍kill: PID에 해당하는 프로세스에 시그널을 보냅니다.
👌fg: 배경에서 실행되는 작업을 전경(foreground)으로 가져옵니다.
👌bg: 작업을 배경(backgound)으로 보냅니다.
👌jobs: 전경 및 배경 작업의 목록을 표시합니다.
기타
❤️ssh: 원격으로 셸에 접속합니다.
👍tmux: 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지합니다.
👍watch: 이어지는 명령을 주기적으로 실행하여 표시합니다.
👍curl: 주어진 URL과 통신합니다.
👍wget: 네트워크를 통해 파일을 다운로드합니다.
👍scp: SSH를 통해 원격으로 파일을 전송합니다.
👌ssh-keygen: SSH 공개키 비밀키 쌍을 생성합니다.
👌ssh-copy: SSH 공개키를 해당 서버에 등록합니다.
👌rsync: 원격으로 파일을 동기화합니다.
👌xarg: 명령어를 구성하여 실행합니다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능합니다.
👌cron: 주기적으로 실행될 명령을 등록합니다.
👌htop: 프로세스 목록 및 자원 사용량을 시각적으로 표시합니다.


(4일차)Python

학습목표

  • 파이썬 기본개념 이해 & 사용
    - 변수(variable)
    • 함수(function)
    • 연산자(operator)
    • 제어문(control statments)
    • 자료형(data types)
  • 오류메세지
  • 코드 이해 & 수정

1. 함수와 변수

1.1 print(1) : 함수(인자)

  • 인자 = 입력값 = argument
  • str 타입간의 -연산은 지원하지않음

1.2 변수: 어떤 관계나 범위 안에서 여러 가지 값으로 변할 수 있는 수, 스스로 값을 갖기보단 다른 값을 가리키는 존재
ex) x = '안녕하세요' => [변수명] = [변수값]

1.3 새로운 함수 정의

  • def
  • 함수를 정의(define)할때 사용하는 일종의 예약어
  • 함수명은 임의로 만들수 있다.
  • 함수명 뒤에 붙은 괄호는 이 함수에 입력으로 전달되는 값을 받는 자리이며, 입력값이 필요없는 경우에는 함수명뒤에 ()를 붙여주면 됨
  • def 함수명() 뒤에 : 붙여주고 이어서 함수가 불릴때 실행할 작업들을 한줄씩 나열
  • 해당 함수에 포함 된 작업이라는 것을 나타내기 위해 def줄부터 함수가 끝날때 까지 띄어쓰기 4칸으로 들여쓰기를 해주어야함
  • 함수안에 한줄 더 표시하고 싶다면 print() 함수 더 추가하면됨

1.4 스코프: 함수의 유효범위

  • 함수내에서 변수 정의 가능, 함수안에서만 일어난 일, 함수가 끝나면 해당 변수를 사라지고 볼수없다.
    특정 위치에서 어떤 변수에 접근할 수 있는지, 또 한 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위를 변수의 스코프(scope) 라고 합니다.
    즉, 위의 코드에서 name = '하루'는 함수 내부를 포함해 코드 어디에서든 참조할 수 있으므로, 전역 스코프(global scope) 를 갖는 변수라고 할 수 있습니다. 반대로 name = '시우'는 change_name() 내부에서 정의되어 밖에서 볼 수 없으므로, 지역 스코프(local scope) 를 갖는 변수이다.

1.5 매개변수

  • 입력값으로 주어진 인자(argument)를 받는 변수를 매개변수(parameter)
    위 예제에서 함수 내부의 name은 매개변수이고, 외부에서 함수를 부를 때 넣어준 '로이'는 그 매개변수에 들어가는 인자입니다. 위 예제는 하무를 만들때 매개변수에 기본값을 넣어서 함수를 호출할때 넣어준 '콩순이'(인자)가 없을때 '아무나'가 기본값으로 나옴.

1.6 함수에 인자 여러개 한꺼번에 전달하기

  • 기본값이 있는 인자들이 기본값이 없는 필수 인자들의 뒤에 와야함

1.7 함수의 결과로 값 반환 return

  • 아래의 코드가 어떤 순서로 실행될까
    마치 수학식처럼, 가장 안쪽의 괄호를 가진 add(1, 2)가 먼저 실행되고, 그 이후 옆의 + 3을 더한 뒤, 가장 바깥쪽의 괄호인 print()가 실행됩니다. add()로 인해 입력값인 1과 2의 합인 3이 나오고, 거기에 3을 다시 더해서 print()를 했으니 6이 표시되어야 할 것 같지만!에러!!!!
  • 오류메세지는NoneType과 int(정수, integer) 사이에 + 연산은 금지
  • Type은 뭔지 아직 잘 모르겠지만 그 앞의 None을 보면 무언가가 없다는 것.
  • add()에서 우리는 화면에 표시하라는 print() 함수를 부르긴 했지만, 이 함수의 결과가 무엇인지 명시하지 않아서 생긴오류
  • 이럴때 필요한건 뭐?!!! return
    print() 안의 add_and_return(1, 2)가 먼저 실행되면서, add_and_return() 함수 안 첫 번째 줄인 print(number1 + number2)가 실행되어 화면에 3이 표시되고, 이후에 return number1 + number2로 3이 add_and_return() 함수의 출력값으로서 반환됩니다. 그럼 이제 print(add_and_return(1, 2) + 3)은 print(3 + 3)과 같게 되고, 최종적으로 print(6)이 되어 화면에 6이 출력됩니다.
    🤯내가 설명해보자.(....언젠가...ㅠㅠ)

2. 제어문

2.1 if
2.2 while
2.3 for : for 뒤에는 a in A의 형태로, 값이 여러 개 들어있는 목록 A에서 값을 하나씩 꺼내서 a 변수에 담아 반복문을 실행

  1. 재귀함수: 재귀함수란, 함수 내에서 그 함수 스스로를 사용하는 인셉션 같은 함수 종류입니다. 즉, def f(): 안의 코드 블럭에서 f()를 호출한다면, 그 함수는 재귀함수입니다.
    • 피보나치 수열 만들기!!!!
      1,1,2,3,5,8,13,21,...
      피보나치 수열의 n번째 숫자만큼의 사람이 있다면, n-1번째 피보나치 숫자만큼 주문하면된다는 그런 코드만들기(천천히 다시보자ㅠㅠ)

풀잎스쿨

1. 많이 쓰임

split 공백한칸이 디폴트값

join

strip

문자열 포매팅

- f' 서식지정' f스트링 많이 쓴다. 3.6

2. 심사문제 the 갯수찾기

the grown-ups' response, this time, was to advise me to lay aside my drawings of boa constrictors, whether from the inside or the outside, and devote myself instead to geography, history, arithmetic, and grammar. That is why, at the, age of six, I gave up what might have been a magnificent career as a painter. I had been disheartened by the failure of my Drawing Number One and my Drawing Number Two. Grown-ups never understand anything by themselves, and it is tiresome for children to be always and forever explaining things to the.

Q. 왜 count = 0 으로 시작하고 for문을 생각해내는 것의 포인트는 무엇인가?
A. 질문방에 올렸고, 그분 덕분에 문제를 보고 해결방법을 찾아내가는 과정을 적어봄

  1. print(a.count('the'))= the를 가지고있는 there 같은것도 세어버리기때문에 이건 아님.
  2. 갯수세는건 리스트가 좋겠다. 문장을 리스트로 나누려면 띄어쓰기가 있으니 split()을 쓰자
  3. 리스트를 세자.
  4. 리스트 요소중에 the 가 있는지 확인하려면 for 반복문으로 하나씩 돌아가야 한다. 하나씩 돌아가며 갯수를 샌다. 갯수를 확인하는 코드는 무엇일까.
  5. += 를 사용하려면 0 초기화를 해야한다.
  6. 리스트에서 the를 세어보았더니 특수문자때문에 적게 나온다.
  7. 특수문자를 없애는 코드를 이용하자
profile
개발자가 되어가는 오르미의 기록
post-custom-banner

0개의 댓글