본문 바로가기

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

[115일차] 리눅스 ubuntu 입/출력

반응형

 

windows terminal 로 들어가기 ! (여러 창 띄우기 가능) 

환경 변수란 ? 

 

Path 

 

OS에는 환경변수가 기본적으로 존재 

 

 

윈도우 - 시스템환경변수 검색 

리눅스 - env 입력 -> 환경변수 내용이 쭉 나옴 !

 

 

port 쓸 때 환경변수 사용했음!

server > server.js 들어가서 아래처럼 변경함 

 

export NODE_ENV=8080 

 

 

node라는 애는 컴퓨터에 있는 내용을 가져올 수 있구나! 

node.js != 웹서버 

node.js = JS로 컴퓨터를 조작할 뿐..

진짜 웹서버를 만드는 것은 = express 

 

 

 

process는 무엇을 가지고 있는지 쳌 (OS에 따라 내용 다를 것) 

process: 운영체제별로 내가 운영한 ~ 결과물 return 

vi test 
console.log(process) 작성 
node test   입력 - > 엄청 많은 내용이 쭉 - 나옴 

 

 

 

 

vi server.js
아래처럼 수정 

 

 

 

node env 환경변수 

환경변수 생성 & 수정 : export (없으면 만들고 있으면 수정) 

 

export PORT=8080
echo $PORT   // 체크 

 

수정하기 

SHELL script 대부분 쓰기와 수정을 구별하지않음 ! 

 

 

=> node.js는 컴퓨터의 내용을 읽어올 수 있!

흔히 PORT, NODE_ENV (개발vs배포모드 구별), db내용들 

 

 

io (input & output) 

process 객체 안에 stdin  /  stdout을 통해 입출력 가능 

 

 

out 

vi test

아래 코드 입력 
console.log('hello')
process.stdout.write('world')

node test    // 위의 내용이 찍힘 

 

in 

in 입력을 받을 수 있는 환경 만듬 

vi testin   //testin 이라는 파일 새로 생성 

아래 코드 입력
process.stdin.resume()


node testin  
아무거나 쓰고 enter -> 계속 써짐 

Ctrl + C  // 종료 

 

 

 

다른 언어와 다른 점이 있음 

 

Node.js의 큰 장점 : non blocking io (Single Thread 이기때문에) 

 

 

입력한 것을 그대로 출력하기 

- 비동기로 처리하고 있다고 생각하면 됨

 

 

vi testin 코드 수정

process.stdin.resume()
process.stdin.on('data', showData)

function showData(value){
    console.log(value)
}

node testin 

 

 

컴퓨터가 알 수 있는 코드로 표현되고 있음 (컴퓨터는 1이라는 , hello, ? ㅋㅋ, ㅋ를 정확히 가지고 있는데 컴퓨터만이 알 수 있는 형태로 가지고 있다. 

 

 

 

Buffer를 우리가 알 수 있는 걸로 수정 

function showData(value){
    console.log(value.toString('utf8')
}

완료 

 

 

 

언어 명령으로 process를 종료해보기 

vi testin

아래처럼 코드 수정 

 

 

 

0은 성공적인 의미 

 

 

 

 

이제 10을 입력하면 종료된다. 

 

 

다시 testin 들어가기 

 

 

 

새로운 폴더 생성 

cd ~ 
mkdir scripts

 

SHELL scrip  서버의 자동화  / 편리함을 위함 

 

 

 

달력 출력 

cal    // -> 진짜 달력이 나옴! 
date  //d -> 시간 

cal -> 시스템 환경변수에 적혀있고 cal은 어떤 프로그램으로 구현되어 있음 

명령어로 만들어서 구동할 수 있겠끔 만든 내장된 언어 

 

 

 

세미콜론 ;

shell script는 세미콜론이 매우 중요하다

실행할 코드의 구분값 

 

cd scripts
vi pratice1.sh

아래 코드 입력 

구동시키기 - sh 이용

sh pratice1.sh 

 

달력, 날짜, 환경변수, 목록보기가  쭉 다 나옴

 

 

 

변수에 담기 

vi pratice2.sh 

.sh 에서 주석은 == # 

 

=cal, date는 script 안에 echo문이 이미 있어서 안써도됨 

 

 

 

date, cal vs string(date, cal)  ? 

예약어일 때 예약어로 실행, 예약된 기능이 없으면 TEXT로 실행됨

vi practice3.sh   

아래 코드 작성 

no mercy,,,

 

-> 오류 

변수에 사용할 때 띄어쓰기는 인식하지 못함. 

 

 

 

오른쪽처럼 해도 -> world! not found ERROR 

이유 : 띄어쓰기 하나 때문에 shell script는 

 

 

 

Hello world 로 출력하고 싶을 떄 => String "" or '' 로 인식 시켜주기 ! 

 

 

 

 

 

 

 

 

 

ps -ef | grep node 한번에 변수에 넣는 방법 

 

vi practice4.sh   //생성

 

 

 

연산

 

vi practice5.sh   // 생성 

아래 코드 생성 

 

-> 오류 

수정 : 띄어쓰기 없애기 

 

 

Shellscript는 * 가 곱하기라는 뜻이 아니야,,,,,,,,,,,,,,,,,,,,,,,,TEXT일뿐,,

배열에 넣주기

 

=> MAC BOOK에서만 됨!

 

 

 

expr 은 출력해줌 = 3

echo returns 1+2 

 

 

 

 

변수에 담지않고 shell script 자체에 명령어를 주어서 shellscript 실행하면 -> 다른 것( ex. text file ) 을 만들어 내기 

 

vi practice6.sh 

 

 

 

리눅스에서 > 요 꺽쇠는 왼쪽의 내용을 -> 오른쪽으로 '내보낸다' 라는 의미 

 

 

 

 

백그라운드로 node server.js 돌려놓기 

 

 

 

> 꺽쇠 사용해서 출력되는 내용을 node.txt로 옮기기

 

 

 

 

 

cd ~ 
cd scripts // scripts 폴더 안으로 들어오기 
ps -ef | grep node   // 두 줄 나오는거 확인 ! 
ps -ef | grep node > node3.txt 
vi node3.txt   // -> 두 줄이 나옴 
head -n 1 node3.txt (head로부터 한 줄)
head -n 2 node3.txt (head로부터 두 줄)
tail -n 1 node3.txt (tail로부터 한 줄 ) 
cat node3.txt   // 안의 내용 return 
cat node3.txt | grep server.js  // 도 가능 

 

 

 

vi practice6.sh
아래 코드 입력 

 

 

 

 

명령어를 함축해서 사용하는 법 

cd ~
ls -al
vi .zshrc
i   // 내용 아래처럼 추가 

 

nodeserver 가 안됨 ! 

요렇게 해보니 된당 !

 

내일 : 기본 문법  /  기술적인 것 -> 간단한 무언가 만들 수 있게! 

 

반응형