본문 바로가기

블록체인 기반 핀테크 및 응용 SW개발자 양성과정 일기

[116일차] SHELL SCRIPT on Linux 기본 구문 if , for문 / blockChain 개념

반응형

조건문 if 

 

- js 보다 조금 더 어려울 수도 ! : 직관적이지가 않다. 

- 조건 비교연산자 : 숫자일 때와, 문자열일 때가 다르다. 

 

shell script if문 기본 형태 

 

 

windowsd terminal 옵흔

cd ~ 
cd scripts          //어제 만든 폴더 
vi practice7.sh    // 새 파일 열기 
아래 코드 입력 , 저장
sh practice7.sh   // -> ls -l의 내용이 쭉 나옴

조건을 담는 곳에 위와같이 연산이 아니어도 된다

 

 

 

 

숫자 비교 

 

 

연산 6가지
== -eq
!= -ne
< -lt
<= -le
> -gt
>= -ge

-> 요 것들로 연습해보기 => 참 / 거짓

 

 

 

 

폴더 찾기 조건 걸어보기 

vi practice9.sh

-d (directory)  ~ (home) /scripts/log  'log'라는 폴더가 있는지 확인 

 

log 폴더를 만들어주기 (현재 scripts에 log 폴더 없음 )

 

 

 

 

파일 찾기 조건 걸기 (현재 /log/ 에 text.sh 이라는 파일 없음) 

vi practice10.sh 
아래 코드 작성 

왼쪽 오타.... ~ = home 을 말하는데 ~ 물결 뒤에 / slash ** 

질문 

exit 0 이 없어도 나오는데 꼭 써야하는건지  ?

 

cd log
vi test.sh
아래 코드 생성 

만들어주기 

 

 

 

test2.txt에 echo "Hellooo" 내용이 들어가 잇음 

 

 

 

매개변수 

vi practice11.sh
아래 코드 작성 
sh practice11.sh => 아무것도 안나옴

* 실행하는 방법 : 매개변수를 입력해보기 (아무거나) 

 

$1 매개 변수 역할

 

 

매개변수 두 개로 하면 띄어쓰기 한 개 있는 hello world도 가능 

 

 

 

 

 

 

For 문

 

list

vi practice12.sh 
아래 코드 작성 
sh practice12.sh    //실행 

* 띄어쓰기를 기준으로 for 문이 돌아감! 

구분값 : 띄어쓰기 

파이썬 "  :  " ,     JS " { } "  으로 구분하는 구간은 "do", "done"으로 구분함. (do or done 중 하나라도 없으면 오류 ) 

 

 

 

 

array => ERROR! => 명령 아래처럼 ! (sh 대신) 

zsh practice12.sh   
or 
bash practice12.sh 

 

 

집가서 연습할 것 : 

https://jhnyang.tistory.com/191

 

[리눅스 / 유닉스 / 셸 프로그래밍 ] 반복문 for문 루프(loop)! 문법, 활용예제, 같이 쓰면 좋은 구문,

[ Linux / Unix / Shell programming INDEX ] 안녕하세요~~ㅎㅎ 오늘은 반복문 중 for문에 대해서 포스팅을 이어가보도록 하겠습니다. ▼참고 배시 말고 일반 프로그래밍(C, C++ JAVA)에서 for문의 포스팅 [C, C+..

jhnyang.tistory.com

 

 

 

 


 

 

 

 

 FIND  찾기  -  유용함 ! 어디에 설치했는지 까먹었을 때

 

find -help 로 아래 읽어보기 

find / -name node          // 모든 디렉토리에서 (/) 이름이 node 인 것을 찾아라 => 엄청 많이 나옴 

* 특정한 것만 (ex. 파일만, 폴더만) 찾고 싶을 때 - 옵션 달기 

find / -type f -name node 

* 확장자를 찾고 싶다하면 ? 

find / -type f -name "*".js           // -> 굉장히 많이 나옴,,,
find ~/ -type f -name "*".js         // -> home/utan/에서부터 파일을 찾음 -> 조금 덜 나옴 

 

 

 

 

 

mv 

파일 왓다갓다 움직여보기 
? 요건 제대로 되는 명령어를 찾아보기 ! 

 

 

 

 

User 만들기 

cd /etc/
vi passwd

cd ~ 
sudo useradd -m utan2
-> 기존 계정의 password 입력 

cd /home
ls       //방금 만든 utan2 가 생김 

 

password setting

cd ~ 
sudo passwd utan2
utan2에 대한 password 입력 X 2  (두 번 !)

 

 

계정 생성 요약

sudo useradd -m utan2
sudo passwd utan2

계정 생성 확인

vi /etc/passwd    /// -> list확인 

-> 계정 생성 완료 ! 

 

게임 부캐 로그인하면 본캐 로그아웃 먼저 해야하는 것처럼 바꿔주기  

su utan2    
pwd   // > home/utan2     -> 예전 오리지널 linux로 돌아옴 (예전에 theme 세팅한건 utan이었기때문!) 

=> 계정별로 환경을 구축할 수 있다! 

 

 

 

su utan2
cd /home/utan/scripts
vi node4.txt   // -> 아무거나 수정하려고 해봐 ! -> ERROR 수정 불가  Only by utan

sudo vi node4.txt    // sudo(최고관리자) 로 열려고 해도 
ERROR : utan2 is not the sudoers file. This incident will be reported. 
utan2에게 권한을 주지 않아서 생기는 문제라고 함 ! 

 

계정 돌아가서 권한을 줘보기 ! 

su utan
비번 입력
sudo vi /etc/sudoers
아래처럼 코드 수정 

su utan2
sudo vi /etc/sudoers

 

리눅스는 권한에 따라 파일 접근이 되는 곳이 있고 안되는 곳이 있음

최고 관리자는 모든 권한이 있음

시작이 home부터 시작하는 것들은 새로 생성된 계정 

요 안에 있는 내가 소속된 것들에 내가 접근 가능 but! 내 소속이 아니면 파일에 접근 불가 - > 접근하려면 위에서처럼 관리자 권한을 주어서 수정 가능하게 만듬

 

 

리눅스가 윈도우보다 좋은 장점 : 

위와같이 다중 계정 기능이 강력하다 ! 

 

 

 

 


 

 

 

🔍 블록체인 첫 수업 

 

JS 로 blockchain coin 개념 알기 / 환경세팅  

 

-> 오늘 들은 설명을 JS 로 구현할 예정(이번주) 

express 통해 http 통신에 대한 부분 만들고 / socket 통신으로 만들 것 / 알고리즘 ++ 

다른 언어로 구축된 실제 코인들 / 블록체인 빌드 -  

리눅스를 통해 빌드해서 우리만의 코인 발행 

 

합의 알고리즘 

라이트코인 

비트코인 

+dapp  (이더리움 기반) - solidity 언어 기반 - web3.js  

 

 

vs 옵흔

block.js 파일 생성 

개념 정리

// node.js 환경에서 class 문법 사용 예정

// 블록 체인이란 ? 블록이 체인ed된 것 - 연결된 블록들
// 블록 ? 노드 ?  => 객체다 ~ 

암호 : key 값은 hash256과 같은 암호화 한 key.. (예전에 한 JWT 처럼!) 
알고리즘 要 : 아래와 같은 블록이 엄~청 많아지면 데이터 찾는데 최적화된, 효율적인 알고리즘을 알아야함 
통신 : 탈중앙 (그동안 해온 중앙화 server와 다름)

노드들이 너~ 무 많아지면 한 서버에서 다 가지고 있기 어려우니까 서버마다 노드들을 따로 담음 (=데이터를 잘라 놓음) => 데이터의 무결성 위배 => 때문에 나오게 된 게 어떤 알고리즘! (근데 뭔지를 모르겟네..) 객체(블록) 안에 address 라는게 생김 
너클.... !? -> 찾아보긔 ~ 


최상위 객체는 ↓↓  == 제네시스 블록 (최초의 블록) 
    {
        name:asdf,
        id:aaa,
        key:null,
    },
    => 요러한 객체들을 연결하는게 체인

    {
        name:zxcv,
        id:bbb,
        key:aaa,
    },

    {
        name:qwer,
        id:ccc,
        key:bbb,
    }

 

반응형