코딩/위코드 코딩학습

[위코드] TIL(Today I am learned) -08

카슈밀 2020. 7. 4. 17:04
반응형

리눅스 와 깃...

원래는 이틀 수업치인데, 시간이 없어서 시간에 쪼들려서 어쩔 수 없이 묶어 버렸다.

이것을 작성하는 오늘.... 3일치가 되어버렸다. 살려줘!

그래도 어쩔 수 있나 배운 것을 정리하고 복습해야 그래야 뇌에 쏙쏙 박혀버리니까.

 

리눅스 설명은 간단합니다.

✔️ linux가 무엇인지 이해한다.

멀티태스킹을 지원하는 유닉스처럼 보이는 운영체제이다. 하지만 리눅스는 유닉스와는 독립적으로 개발되었으므로 유닉스 계열 운영체제가 아니라 유닉스 클론(Clone) 운영체제이다.

 

✔️ 리눅스의 기본 명령어들과 파일시스템 구조를 이해한다.

 

리눅스 파일 계층 명령구조.

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념  설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다. 

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
    (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l  : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t  : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al  
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin     : 하부 디렉토리인 cgi-bin으로 들어감.
# cd  ..             : 상위디렉토리로 이동
# cd 또는 cd ~  : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker     : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
                          아닌 다른 디렉토리(webker)로 이동하려면 /로
                          시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
     : index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.*  .
     : test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
     : index.htm 화일을 index.html 로 이름 변경

$ mv file  ../main/new_file
     : 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download  : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
     : a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제 

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put  guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get  guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x   guestbookt.html
rwx  :처음 3개 문자 = 사용자 자신의 사용 권한
r-x  :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x  :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666  guestbook.html
     : test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766  guestbook.html
     : 자신은 모든 권한을 그룹사용자와,전체사용자에게는
       읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile :  vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile  : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename         : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename     : n줄 만큼 아래에서부터 보여줌

✔️ 환경변수에 대해 이해한다.

1. 로컬 환경 변수
현재 세션에서만 동작하는 환경 변수임.

2. 사용자 환경 변수
특정 사용자에 대해서만 정의된 환경 변수로 로컬 터미널 세션 또는 원격 로그인 세션을 사용하여 로그인할 때마다 로드됨.
관련 파일은 특정 사용자의 홈 디렉토리에 존재하는 파일로 .bashrc, .bash_profile, bash_login, .profile 임.

3. 시스템 전체 환경 변수
해당 시스템에 존재하는 모든 사용자가 사용할 수 있는 환경 변수로 시스템 전원이 켜져 있고 모든 사용자가 로컬 또는 원격으로 로그인할 때마다 로드됨.
관련 파일은 아래와 같음.
/etc/environment
/etc/profile
/etc/profile.d/
/etc/bash.bashrc

 

 

✔️ Shell이란 무엇인지 이해한다.

  • 쉘 : 키보드로부터 명령을 입력받아 OS가 그 명령을 수행하도록 하는 프로그램
  • if ~ else와 fore, while 등의 쉘 루프 명령어
  • grep, awk, cut 등의 텍스트 처리 유틸
  • w, who, free 등의 바이너리 명령어

✔️ .파일이 무엇인지 알고 있다.

. (source) 명령은 스크립트 실행 명령입니다.
스크립트를 실행하는 방법은
1. bash 스크립트파일명
2. 스크립트파일명
3. . 스크립트파일명

이렇게 있는데,
1번의 경우는 명시적으로 스크립트를 실행할 쉘을 지정한 경우입니다.
2번의 경우는 현재의 쉘프로그램에서 스크립트를 실행해줍니다.
그러나 이경우는 스크립트파일에 실행속성이 부여되어 있어야 합니다.
3번의 경우는 현재쉘이 bash(혹은 본쉘 호환쉘)일 경우, 스크립트를 실행해줍니다. 즉 본쉘 호환쉘 내부 명령입니다.

1,2번의 경우는 bash혹은 현재쉘에서 자식프로세스를 만들어 스크립트를 실행합니다.
프로세스는 메모리를 각기 따로 할당하기 때문에, 환경변수등의 메모리 영역이 공유되지 않기 때문에,
export 명령등으로 환경변수를 자식프로세스에 전파해야 자식프로세스가 부모프로세스의 환경변수 값을 가지게 됩니다.

3번의 경우는 자식프로세스를 생성하지 않고, 현재의 쉘(본쉘 호환쉘)에서 직접 명령의 해석해 실행하기에,
환경변수등이 그대로 적용됩니다. 쉘프로세스에서 실행하는 것이라 쉘프로세스의 메모리및 환경변수를 사용하는 것이죠.

종합하자면...
1번의 경우는 명시한 쉘의 자식프로세스에서 실행
2번의 경우는 현재의 쉘의 자식프로세스에서 실행
3번의 경우는 현재의 쉘이 직접실행

참고로, 본쉘은 sh이고, 그냥 스크립트에 실행속성을 부여하여 실행할 경우,
우분투의 경우는 dash가 실행됩니다.
그리고, 본쉘 호환쉘은 bash, ash, dash, ksh(콘쉘)등이 있습니다..

출처 : 우분투코리아 커뮤니티

https://forum.ubuntu-kr.org/viewtopic.php?t=25326

 

✔️ 리눅스 명령어에 대해 알고 있다.

파일 시스템 탐색을 위한 리눅스 명령어

모든 최신 운영 체제와 마찬가지로 리눅스 파일 시스템은 기본 디자인의 핵심에 있으며, 시스템 계층을 시각화하고 조작할 수 있는 다양한 방법을 제공합니다. 파일 시스템을 창의적으로 탐색하는 법을 배우면 Linux 기술이 한 층 성장할 수 있습니다.

1. pwd

pwd는 Print Work Directory의 약자이며, 현재 작업 중인 디렉터리를 보여줍니다. 이것은 현재 사용자가 있는 디렉터리를 보여줍니다. 이는 사용자의 작업을 평화롭게 만드는 것을 목표로 하는 가장 편리한 리눅스 명령어 중 하나입니다.

2. ls

ls 명령 list segments의 약자이며, 아마도 유닉스 세계에서 가장 널리 사용되는 명령 중 하나일 것입니다. 파일과 디렉터리의 모든 정보를 제공하며 특정 디렉터리와 특정 파일의 내용도 제공합니다. 이 명령을 pwd와 함께 사용하여 강력한 Unix 파일 시스템 내에서 길을 탐색할 수 있습니다.

3. cd

리눅스/유닉스는 보통 디렉터리와 파일로 이루어져 있습니다. 특히 사용자가 리눅스를 사용하다 보면 특정 디렉터리 아래 하위 디렉터리를 만들게 되고 여기서 다양한 작업을 하게 됩니다.

리눅스에서 작업하고 있는 현재의 위치를 현재 디렉터리라고 합니다. 기본적으로 디렉터리를 기준으로 파일이나 디렉터리를 찾으려고 시도합니다. 즉 파일 또는 디렉터리의 이름을 절대 경로로 지정하지 않으면 현재 디렉터리를 기준으로 상대적인 위치에서 파일을 찾습니다. 시스템에 로그인하면 홈 디렉터리가 현재 디렉터리가 된다. 이에 해당 디렉터리로 이동하는 방법이 cd 명령어입니다.

4. mkdir

Windows os에서 문서 또는 이미지 파일 등을 정리하기 위해 새 폴더를 만드는 것과 같이 리눅스에서도 새 디렉터리를 만듭니다. 터미널을 통해 새 폴더를 만들고 싶습니까? mkdir 명령은 필요한 권한을 가지고 있다면 Linux 시스템에서 원하는 위치에 폴더를 만들 수 있습니다.

5. rmdir

rmdir은 remove directory의 약자이며, 빈 디렉터리를 삭제할 때 사용하는 명령어이다. 삭제하려는 디렉터리가 비어있지 않을 경우에는 삭제를 할 수 없없습니다.

6. lsblk

Linux 시스템에서 사용 가능한 블록 장치를 나열해야 할 경우가 종종 있습니다. lsblk는 이 목적으로 가장 많이 사용되는 Linux 명령어 중 하나입니다. 이 편리한 리눅스 명령어는 블록 장치의 트리 구조를 나타내며 전문 사용자가 많이 사용합니다.

7. mount

Windows와 달리 SD 카드 또는 USB를 연결할 때마다 배포판이 처음에 직접 표시되지 않을 가능성이 존재합니다. mount 명령을 사용하여 기존 파일 시스템으로 마운트 해야 합니다. 이 리눅스 명령어는 가장 강력한 터미널 명령 중 하나입니다.

8. df

df 명령은 파일 시스템의 디스크 공간에 대한 필수 정보를 표시하는 가장 강력한 Linux 터미널 명령 중 하나입니다. 시스템 관리자가 실시간 서버 또는 네트워크 지향 시스템을 모니터링하고 분석하는 데 널리 사용됩니다. 기본적으로 1,024Byte 블록 단위로 출력하며, 옵션을 통해서 다른 단위로도 출력이 가능합니다.

시스템 조작을 위한 리눅스 명령어

시스템 명령은 Linux 시스템에 대한 정보를 얻는 데 필수적입니다. 이 작업을 위해 많은 강력한 Linux 명령을 사용할 수 있습니다.

9. uname

uname 명령은 이름, 버전 및 기타 시스템 특정 세부 사항과 같은 시스템 정보를 얻기 위한 기본 Linux 명령어입니다. 이 명령으로 OS 및 커널 버전을 빠르게 확인할 수 있으며, 시스템의 명령 길이를 확인할 수 있습니다.

10. ps

이 리눅스 명령어는 현재 시스템에서 실행 중인 프로세스를 시각화할 수 있습니다. 시스템 리소스를 분석하는데 사용되는 매우 유연한 수단이며, 터미널을 통해 기본적으로 시스템 프로세스를 조작할 수도 있습니다. 이 리눅스 명령어는 기본 및 최상의 Linux 모니터링 도구 중 하나로 간주됩니다.

11. kill

kill 명령은 자원 제한으로 인해 멈춘 프로세스를 중지하는 강력한 방법입니다. Linux 시스템 기술을 발전시키시면 이 명령의 본질과 중요성을 알게 될 것입니다. 종종 재미있는 Linux 명령 목록에 표시되는 kill 명령은 이름만큼이나 강력합니다.

12. service

service 명령은 리눅스 터미널에서 시스템 전체 서비스를 호출하기 위한 명령입니다. 시스템 조작을 위한 강력한 Linux 터미널 명령. 터미널 창에서 직접 System V init 스크립트를 실행하기 위해 이 명령을 사용할 수 있습니다.

13. batch

미리 정의된 일정에 따라 시스템 서비스를 실행하는 깔끔한 도구를 찾고 있다면 배치 명령이 있습니다. 자동화 쉘 스크립트 작성을 위한 또 다른 강력한 Linux 명령어 중 하나로 Linux 생산성을 크게 향상시킬 수 있습니다.

14. shutdown

리눅스 명령어 shut down은 halt, init과 함께 시스템을 종료하는 명령어 중 하나입니다. shut down은 현재 접속 중인 모든 사용자에게 시스템이 종료된다는 메시지를 보낼 수 있습니다.

파일 관리를 위한 리눅스 명령어

파일은 Linux 시스템의 중심에 있습니다. 시스템에서 볼 수 있는 거의 모든 것이 일종의 파일이므로 그에 따라 조작할 수 있습니다. Linux 전문가가 되려면 파일 관리 방법을 숙달해야 합니다.

15. touch

touch 명령은 유효한 빈 파일을 작성하기 위한 필수 Linux 명령어입니다. 터미널에서 이동 중에 파일을 생성하고 요구 사항에 따라 나중에 또는 실시간으로 파일을 채울 수 있습니다. 타임스탬프를 변경하기 위한 이동 명령이기도 합니다.

16. cat

처음에 여러 파일을 연결하기 위해 고안된 cat 명령은 이후 다른 목적으로 사용됩니다. 이 리눅스 명령어는 새 파일을 작성하고 터미널에서 파일 내용을 보고 출력을 다른 명령행 도구 나 파일로 리디렉션하는 데 사용합니다.

17. head

head 명령을 사용하면 터미널에서 직접 파일 또는 파이프 된 데이터의 시작을 볼 수 있습니다. 텍스트 처리를 많이 사용하는 사용자가 가장 많이 사용하는 Linux 명령 중 하나입니다. 터미널에서 많은 파일을 처리할 때마다 이 명령을 사용하여 생산성을 향상시킬 수 있습니다.

18. tail

tail 명령어는 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력합니다. 기본 값으로 마지막 10줄을 출력해 줍니다. 참고로 head 명령어의 경우에는 파일의 앞 부분을 출력합니다. 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용됩니다.

19. cp

cp 명령은 copy의 약어이며, 시스템에서 파일이나 디렉터리를 한 폴더에서 다른 폴더로 복사하도록 지시하는 간단한 방법입니다. 이 깔끔한 명령을 사용하면 터미널에서 바로 여러 파일을 디렉터리로 복사할 수 있습니다.

20. mv

move의 줄임말로 GUI에서 수행하는 절단 작업을 보완합니다. cp와 마찬가지로 mv 명령을 사용하여 하나 또는 여러 파일을 한 위치에서 다른 위치로 이동할 수 있습니다. 이 Linux 명령이 -f 매개 변수를 사용하여 큰 파일을 전송하도록 할 수 있습니다.

21. comm

Linux 세계로 향한 최초의 Unix 명령 중 하나인 comm을 사용하여 두 개의 파일을 공통 행과 구별되는 행으로 비교할 수 있습니다. 이것은 터미널에서 많은 양의 파일을 처리해야 하는 많은 사람들에게 필수적인 리눅스 명령어입니다.

22. less

가장 많이 사용되는 또 다른 Linux 명령어인 less 명령은 파일의 내용을 볼 때 제공하는 편리성 때문에 많이 사용됩니다. cat 과는 달리 less 명령을 사용하면 터미널 세션을 방해하지 않으면서 파일 내에서 양방향으로 탐색할 수 있습니다.

23. ln

ln 명령은 특정 파일에 대한 심벌릭 링크를 만들기 위한 가장 편리한 리눅스 명령어 중 하나입니다. 이 작지만 유연한 명령을 사용하여 디스크 공간의 특정 파일이나 디렉터리에 대한 심벌릭 링크의 여러 인스턴스를 생성할 수 있습니다.

24. cmp

두 파일을 비교하고 결과를 표준 출력 스트림에 인쇄하려면 cmp 명령을 사용하면 정확하게 수행할 수 있습니다. 이 명령어는 comm 명령과 함께 대량의 텍스트 파일을 정기적으로 처리하는 사용자들이 가장 많이 사용하는 Linux 명령어 중 하나입니다.

25. dd

이 명령어는 베테랑 사용자들이 파일을 한 유형에서 다른 유형으로 복사 및 변환하기 위해 가장 많이 사용하는 Linux 명령 중 하나입니다. 이 강력한 명령어에 대한 흥미로운 점은 부팅 가능한 라이브 USB 스틱을 만들 때 다른 터미널 명령 중에서 자주 사용한다는 것입니다.

26. alias

터미널에서 직접 파일의 다른 문자열로 단어를 바꿀 수 있으므로 시스템 관리자가 가장 많이 사용하는 리눅스 명령어 중 하나입니다. 다른 기능 중에서, 쉘을 사용자 정의하고 환경 변수를 조작할 수 있는 최상의 터미널 명령 중 하나입니다.

지루할 때 탐색 할 수 있는 재미있는 리눅스 명령어

터미널 앞에서 즐거운 시간을 보내기 위해 재미있는 리눅스 명령어를 사용할 수 있습니다. 이 터미널 명령은 유닉스 철학에 대한 심층적인 통찰력을 제공하면서 지루함을 되찾을 수 있는 재미있는 Linux 명령어입니다.

27. cal

유닉스가 터미널에 편리한 작은 달력 도구를 제공한다는 것을 알고 계셨습니까? cal 명령은 달력을 ASCII 텍스트 형식으로 표시하는 재미있는 Linux 명령어 중 하나입니다. 지정된 정보를 터미널에 바로 가져오려면 월 및 연도와 같은 매개 변수와 함께 이 명령을 입력해보세요.

28. fortune

이 명령어는 제가 가장 좋아하는 재미있는 리눅스 명령어 중 하나입니다. 터미널에 입력하고 직접 확인하십시오! 독창적이거나 어리석은 구절을 보여줄 것입니다.

29. history

터미널 세션 기록을 확인하고 싶습니까? history 명령을 사용하면 정확하게 수행할 수 있습니다. 매개 변수 없이 입력하면 작은 창에서 터미널 세션의 bash 기록이 인쇄됩니다. 터미널에서 사용할 유용하면서 재미있는 Linux 명령 일뿐만 아니라 터미널 사용에 대한 훌륭한 통찰력까지 제공합니다.

30. yes

yes 명령어는 주어진 문자열을 Ctrl + C키로 멈출 때까지 계속 반복해서 출력해줍니다. 이런 명령어가 왜 필요할까 싶겠지만, 시스템 성능 테스트 같은 것을 할 때 사용할 수 있습니다.
예를 들면 CPU를 100%까지 올려서 컴퓨터의 냉각 시스템이 작동하는지를 테스트할 때 사용할 수 있습니다.

31. banner

구식 유닉스에서 사용되는 멋진 ASCII 배너를 보았고 마음에 드셨나요? banner 명령은 자신만의 맞춤 배너를 만들 수 있는 재미있는 Linux 명령 중 하나입니다. 터미널에 일부 텍스트와 함께 이 명령을 입력해보세요.

32. rev

이것은 베테랑 리눅스 사용자를 위한 또 다른 재미있는 터미널 명령어 입니다. rev 명령은 입력 텍스트를 가져 와서 각 문자를 반대로하여 표준 출력에 기록합니다! 친구에게 비밀스럽고 미묘한 인상을 남기기 위해 사용할 수있는 Linux 명령어 중 하나입니다.

네트워크 관리자에게 가장 많이 사용되는 리눅스 명령어

Linux는 네트워킹을 위해 제공하는 강력함과 유연성으로 전 세계 sysadmins에게 유용한 솔루션입니다. Linux는 우리에게 익숙한 대부분의 컴퓨터 네트워크 뒤에 있습니다. 이 가이드는 초보자를위한 것이므로 네트워킹을 위한 가장 기본적인 터미널 명령만 간략하게 설명합니다.

33. wget

이 명령어는 네트워크 관리자가 터미널에서 바로 웹에서 파일을 다운로드하는데 활용하는 최고의 리눅스 명령어 중 하나입니다. 이것은 스크립트나 크론 작업에 사용될 수 있는 편리한 작은 터미널 명령 중 하나이며, 사용자에게 HTTP, HTTPS 및 FTP 인터넷 프로토콜을 사용할 수 있는 기능을 제공합니다.

34. iptables

iptables 명령은 시스템 관리자가 특정 호스트 시스템에서 들어오고 나가는 인터넷 트래픽을 제어할 수 있는 터미널 유틸리티를 호출합니다. sysadmins는 정기 트래픽을 정의하고 의심스럽거나 신뢰할 수 없는 네트워크 요청을 블랙리스트에 올리는 데 가장 많이 사용하는 Linux 명령어 중 하나입니다.

35. traceroute

이 명령은 네트워크 패킷이 한 시스템에서 다른 시스템으로 이동하는 경로를 결정하기 위해 이 명령을 다른 터미널 명령과 함께 사용하는 보안 전문가가 많이 사용합니다. 이것은 여러 가지 유해한 침입자로부터 컴퓨터를 보호할 수 있는 강력한 네트워크 명령입니다.

36. cURL

cURL은 네트워크를 통해 파일을 전송하여 새로운 Linux 시스템 사용자도 사용할 수 있는 매우 강력한 네트워크 도구입니다. 이것은 사용자 개입 없이 작동하도록 설계된 리눅스 명령어 중 하나이며, 일반적으로 네트워크 관련 쉘 스크립트에 사용됩니다.

Linux 명령어 검색 및 정규 표현식

Linux는 머신을 효과적으로 검색하기 위한 유연한 터미널 명령을 제공합니다. 이러한 Linux 터미널 명령을 강력한 정규식 명령과 결합하면 파일의 특정 파일 또는 시퀀스에 대한 정보를 매우 빠르게 얻을 수 있습니다.

37. find

find 명령어 는 터미널에서 파일을 검색하는데 가장 많이 사용되는 리눅스 명령어 중 하나입니다. 이 강력하면서도 유연한 터미널 명령을 통해 사용자는 파일 권한, 소유권, 수정 날짜, 크기 등과 같은 특정 기준에 따라 파일을 검색할 수 있습니다.

38. which

검색하려는 모든 파일이 실행 파일인 경우 which 명령은 매우 유용합니다. 이 편리한 터미널 명령은 특정 매개 변수를 취하여 $ PATH 시스템 환경 변수에서 이진 파일을 매우 효과적으로 검색합니다.

39. locate

locate 명령은 특정 파일의 위치를 ​​찾는데 사용되는 리눅스 명령어 중 하나입니다. Linux 시스템에서 특정 파일의 위치를 ​​모를 때 활용할 수 있는 가장 간단한 터미널 명령 중 하나입니다.

40. grep

대량의 텍스트 파일에서 패턴을 검색할 때 사용할 수 있는 가장 강력한 정규식 터미널 명령 중 하나입니다. 찾고자 하는 패턴을 입력으로 받아 특정 패턴에 대해 지정된 파일을 검색합니다.

41. sed

지정된 부분을 교체하여 파일 또는 스트림의 각 줄을 조작하는데 가장 많이 사용되는 Linux 명령어 중 하나입니다. 많은 양의 텍스트 데이터를 다루고 이동 중에도 변경해야 하는 사용자들이 많이 사용합니다.

I / O 및 소유권을 다루는 리눅스 명령어

Linux는 I/O 스트림과 파일 또는 디렉터리 소유권을 설정하고 조작하기 위한 강력한 터미널 명령 세트를 제공합니다. 아래에 나열된 Linux 명령어는 이러한 목적을 위한 가장 기본적인 Linux 터미널 명령 중 일부를 간략하게 보여줍니다.

42. clear

clear 명령은 기존 터미널 화면을 지우는데 편리합니다. 이전의 일부 Linux 명령이 터미널 화면을 깨져서 출력이 깨진 후 터미널 화면을 지워야 하는 경우가 종종 있습니다.

43. echo

echo 명령은 터미널 콘솔에 특정 텍스트를 출력할 수 있는 매우 강력한 명령 줄 유틸리티입니다. echo를 입력하고 괄호 안에 일부 텍스트를 입력하면 스스로 확인할 수 있습니다. 이 명령의 흥미로운 점은 출력을 다른 터미널 명령으로 파이프 할 수 있다는 것입니다.

44. sort

정렬 명령은 수행하는 작업에 매우 효과적입니다. 사전 순 또는 역순으로 파일을 정렬해야 할 때마다 이 명령을 사용하십시오.

45. sudo

sudo 명령은 Linux 명령의 성배입니다. 권한이 없는 사용자는 낮은 수준의 권한이 필요한 파일에 액세스하고 수정할 수 있습니다. 종종이 명령을 사용하여 일반 사용자 계정에서 루트에 액세스합니다.

46. chmod

chmod 명령은 시스템 파일 또는 객체의 액세스 권한을 변경하거나 수정하는데 사용하는 가장 강력한 Linux 명령어 중 하나입니다. 이 명령은 사용자로부터 매우 다양한 매개 변수 세트를 취할 수 있으며, 파일 권한 변경에 따라 다릅니다.

47. chown

chown 명령은 chmod 명령과 매우 유사합니다. 그러나 액세스 권한을 변경하는 대신 사용자가 파일 또는 디렉터리의 소유권을 변경할 수 있습니다. chmod 및 chown 터미널 명령은 모두 루트 권한이 필요합니다.

일상적인 사용을 위한 기타 명령어

아래 터미널 명령어는 생산성을 높이고 작업량을 줄이는 데 도움이 됩니다. 상황에 맞지 않을 때마다 이 Linux 명령을 사용하십시오.

48. man

man 명령은 manual을 나타내며, 사용자가 직접 사용할 수 있는 가장 유용한 Linux 명령어 중 하나입니다. 이 명령 다음에 다른 명령의 이름은 해당 명령의 매뉴얼 또는 설명서 페이지를 나열합니다. 특정 터미널 명령을 사용하는 방법을 결정할 때 이 명령을 자주 사용해야 합니다.

49. tar

tar 명령은 파일을 아카이브하고 추출하는데 사용됩니다. 파일을 압축하는데 널리 사용되는 명령으로 이러한 작업을 매우 효율적으로 처리할 수 ​​있습니다.

tar 압축 풀기 및 해제 명령어 사용방법은?

50. whatis

whatis 명령은 사용자가 제공한 간단한 설명으로 데이터베이스 세트를 순회하며 해당 데이터베이스 명령과 일치하는 시스템 명령을 인쇄합니다.

 

출처 : https://dora-guide.com/linux-commands/

 

 

-------------------------------- 리눅스 끝 ----------------------------------------------------------

 

GIT 시작 

1.git/ GitHub 이란? VCS(Version Control System)이란?

  1. Git이란 소스코드를 효율적으로 관리하기 위해 사용되는 버전 관리 시스템입니다.
  2. Version은 소스코드(Source code) 파일의 version을 뜻함   

repository 생성 + 관련 명령어(git init, git add remote, git remote -v)

2. Local repository를 만드는 방법은 두가지가 있습니다.

  1. 아예 새로운 저장소를 만드는 방법 (git init)
    이미 만들어져 있는 Remote repository를 Local repository로 복사해오는 방법 (git clone)
  2. local repository / remote repository
       Remote repository
       파일이 Remote repository 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소입니다. 여러 사람과     같이 쓰는 공유 클라우드 느낌으로 생각하면 쉽습니다.
       Local repository
       내 PC에 파일이 저장되는 개인 전용 저장소입니다.
  3. git init 
    1. .git 폴더 생성하는 명령어
    2. .git 폴더가 있어야 파일 추적 및 관련 작업 가능

   4. git add

       working directory에서의 변경 파일을 stage area로 추가하는 명령어

   5. git remote

       remote repository와 local repository를 연결시키는 명령어

   6. git pull origin

       로컬 저장소로 Master 브랜치 불러오는 명령어

 

3.git clone vs. git pull 개념 및 차이점

  1. git clone작업 할 기존 저장소의 로컬 사본을 얻는 방법입니다. 여러 개의 작업 사본을 갖고 싶지 않은 경우 일반적으로 주어진 저장소에 대해 한 번만 사용됩니다. (또는 로컬 사본을 엉망으로 만든 후 깨끗한 사본을 얻으려고합니다)
  2. git pull(또는 git fetch+ git merge)는 원격 저장소에서 새로운 커밋으로 해당 로컬 복사본  업데이트 하는 방법 입니다. 다른 사람과 공동 작업하는 경우 자주 실행하는 명령입니다.

4.branch의 개념 + 관련 명령어(branch 생성, branch 이동, branch 제거)

     branch란 기본적으로 분기를 만드는 개념이다.
      나무의 가지에서 본점을 master라고 칭하고, 따로 feature.branch에서 갈라져나와 적용하고 싶은 기능을 구현하여        만들고 이를 적용한 후에 문제가 없다면 master와 합칠 수 있게 테스트 공간을 만드는 것이다.
      이때, master 브런치를 만들었어도 기본적으로 권한은 master에 있으므로 이동을 해야한다.

  • Branch 생성: git branch - feature/branchname으로 주로 생성
  • Branch 이동: git checkout
  • Branch 제거: git branch -d 

 

5.git staging 설명 + 관련 명령어(add, commit, push)

   git staging이란?

  • 스테이징(Staging)은 확정할 변경 사항을 준비시키는 것

  명령어

  • git add: 변경된(Modified) 파일들을 스테이징해 인덱스 영역에 등록하는 것
  • 세션 시 git add . 을 사용하여 전체 등록 진행하였음 (현업에서도 add . 주로 사용) 
  • git commit: 인덱스의 변경 사항들을 확정하는 것

    현 단계까지 로컬 저장소에서 일어나는 일이며, 다른 사람에게는 변경 사항은 미공개

6. conflict는 왜 발생하는가? 어떻게 해결하는가?

  • Master에서 Branch를 만들고 작업 후 Pull Request 전송 시 conflict 발생 경우 존재
  • 다른 작업자가 본인과 동일한 라인, 코드 수정 후 merge 했을 시 발생
  • 로컬 저장소로 최신 Master 브랜치와 본인의 브랜치 불러와 conflict 부분 수정, commit 진행
  • Conflict를 방지하기 위한 방안 (현업 시)
    Master 브랜치의 변화를 지속적으로 내 브랜치로 가져와서 충돌나는 부분을 매번 제거

 

=======================GIT 끝 ==================================

자바스크립트의 구동원리 dom, event 등이 개념이 섞이고 있어서 어느걸 넣어야 하는지 모르겠다.

이것도 넣어보고 저것도 넣어보면서 진행중.

이부분은 다시 재정비가 필요함을 느끼는 중.

메소드, 객체(키와 밸류) 등 개념이 확실하지 않음.

어렵네 어려워

 

 

아무튼 오늘 웹은 어떻게 동작하는 가에 대한 영상을 듣게 되었는데

영상편집이 좀 필요하시는 것 같다.

음역대가 일정하지 않고, 잡음이 꽤 들어가는 문제가 있...

 

 

인터넷의 구조는 단순합니다.

user      요청  호스팅

브라우저 ㅡ>  서버

             <ㅡ

             응답

 

위와 같은 구조

즉, 서버(hosting server)는 항상 켜져 있어야하는 존재가 있어야 하고 이때 서버의 전기세....많이 나옵니다.

이때 브라우저가 서버에 요청할 때 무엇이 사용될까요?

 

바로 도메인입니다. www.korea.co.kr 를 예시로 두겠습니다.

이러한 도메인에는 무엇이 있을까요? 바로 ip주소입니다.

원래는 웹브라우저의 주소들은 ip주소만 존재하였습니다. 

이러한 존재를 일일히 치기도 쉽지 않고, 기억하기도 어려웠기때문에 이를 해결하기 위해서 도메인이 나온 이유입니다.

http  프로토콜

www (World Wide Web) 서브도메인

korea 도메인

co.kr 탑레벨 도메인

port 5000  네트워크 포트

path 통로인데 뭐라 설명해야할지?

query string ?~~~ 

 

그렇다면 string 문자인 도메인을 컴퓨터 용어(2진법)에서는 읽을 수 없습니다. 그렇기에 ip주소로 변환하는 것이 필요합니다.

바로 string을 number(ip주소)로 알려주는 것이  DNS(Domain Name System)입니다. 

 

www.korea.co.kr의  의 주소(ip)를 저장해두고, 이를 도메인 주소를 매칭하여 해당 ip주소를 불러주는 방식입니다.

즉 user - dns 주소 요청-브라우저에 ip주소를 알려줌.

    user(dns에게 받은 주소) - hosting 서버를 ip주소를 기입하여 접속.

 

 

다음은 브라우저에서 다운을 받았는지 안 받았는지를 파악하려면 f12 를 누르시고, 

개발자도구에서 network를 클릭한다면, network 통신상태를 확인할 수 있습니다.

요청/응답의 구조는 대충 이러하다.

 

네트워크 OSI 7계층

1. 물리계층

2. 데이터 링크계층

3. 네트워크 계층

4. 전송계층

5. 세션계층

6. 표현계층

7. 응용계층

 

그냥 이정도만 있는거 알고가자. 

 

마지막으로 호스팅 서버의 배포단계입니다.

호스팅 서버주소를 인터넷에 공개하여 이때 외부에서 접근할 수 있는 상태의 단계입니다.

그만큼 외부에서 해킹가능성이 매우 높기때문에 매우 매우 신중히 작성하여 구동시켜야합니다.

 

Object 강의 입니다.

 

왜 또 나왔냐? 그냥 또 왔습니다.(그만큼 중요하지만, 내용이 이해가 어려운 부분이라 별수가 없습니다.

객체는 다른 데이터 타입(텍스트, 숫자, 배열 등..)처럼 변수에 저장할 수 있습니다.

{} 만 사용하면 되는데요, 이렇게 {} 으로 생긴 모양의 객체를 object literal(객체 리터럴)이라고 부릅니다.

객체는 순서가 없습니다 <ㅡ> 배열은 순서가 있습니다.

그렇기때문에 객체의 요소를 호출하려면 객체를 배열로 만들거나 아니면, 키를 이용하여 호출하는 수 밖게 없습니다.

 

let example {

 happy : 27

}

 

이전에는 happy: 27을 프로퍼티 네임(happy), 프로퍼티 밸류(27)라고 지칭했습니다.

이젠 네임을 키로, 밸류를 값으로 부르겠습니다.

 

이제 27값을 접근하려고 합니다. 그렇게 접근하려면 

console.log(example.happy)로 접근해도 되고

console.log(example['happy'])로 접근해도 됩니다.

숫자와 뛰어쓰기가 포함되면, [](대괄호)로 접근해서 작성해야하니 유의하시기 바랍니다.

 

 

변수로 프로퍼티 접근하기

변수에 키 이름이 저장되어있으면, 변수로도 프로퍼티에 접근 가능합니다.

dot(.)으로 접근한다는 뜻은 실제 키이름을 쓸 때입니다.

'name'이라는 키가 있었으면 그에 해당하는 프로퍼티에 접근할 수 있었겠지만 존재하지 않기 때문에 undefined가 나온것입니다.

 

변수로 접근할 때는 항상 대괄호로 접근해야 합니다.

 

 

프로퍼티 할당

객체에 이미 키가 존재하는데, 다시 한 번 할당하면 값이 교체(수정)됩니다.

이전에 없던 키로 접근하면, 새로운 프로퍼티가 추가 됩니다.

 

difficult[name] = '값 바꾼다';

console.log(difficult[name]);

 

difficult.color = '색깔';

console.log(difficult.color);

 

 

객체의 특별한 점을 알려드리겠습니다.

객체를 const로 선언했을 때 알쏭달쏭한 현상이 일어납니다.

 

const a = 1;

a = 2;

const로 선언된 변수는 값을 절대 수정할 수 없었습니다.

a = 2;를 시도하면 자바스크립트 오류가 납니다.

const로 선언된 변수에 객체를 다시 할당하면 오류가 생기지만,

그 객체에 프로퍼티를 추가하거나 수정하는 것은 가능합니다.

const mutableObj = {
	name: '객체'
};

 

mutableObj = {
	name: '수정'
}

변수 mutableObj 자체에 객체를 재 할당하는 것은 불가능 합니다.

실행해보면 자바스크립트 오류가 납니다.

 

mutableObj.name = '수정';

mutableObj.type = 'Object 타입';

그런데 프로퍼티에 접근해서 내용을 수정하거나, 프로퍼티를 추가하는 것은 에러가 나지 않습니다.

 

Method(메서드)

객체에 저장된 값이 함수일때 메서드라고 합니다.

 

console.log();

 

console 도 형태를 보니 객체인가 봅니다.

자바스크립트 어디에나 접근이 가능했으니 global 객체입니다.

console다음에 dot('.')으로 프로퍼티를 접근했고,

log라는 키의 값은 함수인 것 같습니다.

log는 console이라는 객체의 메서드입니다.

 

중첩된 객체 (Nested Object)

실무에서 사용되는 객체는 거의 중첩되어 있습니다.

프로퍼티 값이 객체일 수도 있고,

프로퍼티 값인 배열의 요소가 객체일 수도 있습니다.

let nestedObj = {
 type: {
  year: '2019',
   'comment-type': [{
     name: 'simple'
     }]
    }
}

 

위에서 'simple'을 출력하려면?

console.log(nestedObj.type['comment-type'][0].name);

컴퓨터는 왼쪽에서 오른쪽으로 해석한 다는 것을 명심하고 이해해주세요.

항상 왼쪽에 직접 코드를 써야 한다는 것을 잊지 말아주세요!!

 

  • nestedObj.type는 year, comment-type이 있는 객체입니다

  • nestedObj.type['comment-type']는 요소 1개인 배열입니다.

  • nestedObj.type['comment-type'][0] 첫 번째 요소인 객체를 가져옵니다.

  • nestedObj.type['comment-type'][0].name 드디어 'simple'에 접근!

 

객체는 reference로 저장된다.

객체를 변수에 저장하면 객체 리터럴 자체가 저장되는 것이 아니라 reference가 저장됩니다.

텍스트는 변수에 저장하면 텍스트 자체가 저장됩니다.

그래서 같은 텍스트면 서로 값이 같으므로 true입니다.

const a = '안녕';

const b = '안녕';

console.log(a === b);

 

하지만

const hiObj = {
	name: '안녕'
};

const helloObj = {
	name: '안녕'
};

console.log('객체비교 =>', hiObj === helloObj);

답은 false입니다.

객체가 담긴 어느 메모리의 reference 를 저장하기 때문입니다.

즉, 메모리 저장 주소가 다름에따라서 해당 내용이 동일할지라도 다르다고 출력합니다.

 

 

728x90