본문 바로가기

Linux

2025.01.14 vi 편집기에서 JAVA 코드 입력 및 수정, 출력, Shell 프로그램으로 코드 작성

# vi 편집기에서 java 코드 입력

  - vi .bash_profile에 환경변수 설정

  - vi hello.java 들어가서 자바 코드 입력 후 저장하고 나오기

  - cat hello.java로 제대로 들어갔는지 확인하지

 

# 컴파일하는 법 (javac)

class를 만들어졌기 때문에 사용이 가능하다.

 

# 실행

class 앞에 이름으로 실행해야 한다.

▶ java는 대소문자 구분하기 때문에 정확하게 입력해야 한다.

 

■  cut

  - 문자열을 자르는 명령어

  - cut [옵션] 파일

  - -d : 필드(컬럼) 구분자

  - -f : 필드 선택

    before) 

     after) cut 사용

-d::를 기준으로 cut을 하겠다. 필드는 1번 하고 3번 필드만 선택하겠다.

 

# 디벨로퍼에서 날짜형식 바꾸는 방법 (도구 들어가기)

YYYY-MM-DD

▶ 컬럼 선택은 자유

 

▶ 데이터를 export 할 경우 많이 쓴다. 내가 뽑고 싶은 데이터를 객체 where에 입력

 

▶ 완료 누르고 엑셀 파일을 메모장으로 바꾸고 폴더 옵션에서 확장명 숨기기 해제하기

 

▶ 메모장에 내가 원하는 데이터가 뽑힌 걸 볼 수 있다.

 

# MobaXterm으로 emp.csv 로드 작업

  - 외부에서 바로 전송해도 되고 안에서 드래그해서 전송해도 된다.

 

# 파일 확인

 

ex) cut 사용

cut 명령어를 통해 내가 원하는 데이터만 추출해서 볼 수 있다. 

▶ 필드 구분이 ,로 되어있기 때문에 -d, 를 쓴 것이다.

 

■ awk

  - 특정 단어가 들어가 있는 라인에서 특정 컬럼을 출력하고자 할 때 사용하는 명령어

  - awk [옵션] 컬럼   파일

  - -F : 필드(컬럼) 구분자

ex)

/etc/passwd

$1,$3 : 1,3 필드를 추출하라는 뜻이다.

 

emp.csv

 

# 조건절

IT_PROG인 사원들만 추출하는 조건절을 작성한 것이다.

▶ 작은 따옴표 안에 큰 따옴표로 입력해 주면 된다.

▶ 조건절은 가장 앞에 작성해주면 된다.

 

ex)

▶ salary값이 15000이상인 사원들의 정보만 출력한 것이다.

▶ salary는 문자가 아니기 때문에 큰 따옴표로 구분 없이 그냥 적어주면 된다.

 

# 연산자

  - 산술연산자 : +, -, *, /

  - 비교연산자 : ==, !=, >, >=, <, <=

  - 논리연산자 : && (and), || (or), ! (not)

 

ex)

 

 

# 파일 용량만 뽑고 싶을 경우

▶ 공백으로 나뉘어져 있기 때문에 -F를 생략하면 자동으로 공백을 기준으로 구분한다.

 

ex)

 

리드랙션도 가능

 

 

# 급여에 대한 total값을 다시 생성할 경우

▶ 급여에 대한 정보를 출력하고, 거기에 awk을 또 쓴다.

sum (로컬변수) += $1 : 1번 행부터 반복해서 누적합을 sum에 담는다.

END (print sum) : 출력하는 코드이다.

 

■ sort

  - 특정한 컬럼을 기준으로 정렬하는 명령어

  - sort [옵션]

  - -k필드번호 : 정해진 컬럼을 기준으로 정렬

  - -r필드번호 : 내림차순 정렬

  - -u : 정렬 후 중복을 제거

오름차순 정렬
1번째 컬럼을 기준으로 오름차순 정렬
2번째 컬럼을 기준으로 내림차순 정렬
정렬 후 중복데이터 제거

 

■ uniq

  - 중복된 라인을 제거하는 명령어

ex)

uniq❘sort

uniq만 하면 정렬되어 있지 않는다. 그래서 뒤에 sort를 써서 정렬해 준다.

 


■ Linux shell

  1. shell 역할

     - 사용자 명령어 해석기

     - 사용자가 프롬프트에 입력한 명령을 해석해서 운영체제(커널)에게 전달

     - 사용자와 Linux 사이의 대화를 중계하는 인터페이스 역할을 담당하는 프로그램

     - 사용자가 입력한 명령을 해석해 커널로 전달하거나 커널에서 처리한 결과를 사용자에게 전달하는 역할을 한다.

 

  2.  shell 종류

     - Bourne shell (sh)

     - C shell (csh, tcsh)

     - korn shell (ksh)

     - Bourn again shell (bash)

 

# shell 변경 (chsh 이용)

 

ex)

hostname환경변수라 생각하면 된다. 

 

# execute 하는 방법 (편한 거 사용하기)

 

▶ 에러가 발생한다. 그 이유는 쉘 프로그램을 만들 때 execute 권한을 주지 않기 때문에 발생한다. 

 

# 에러 해결

  - 유저에 execute 권한을 주고 다시 실행하면 정상 실행이 된다. 모든 execute 하는 거 다 해당이 됨

 

 

ex)

  ※ ~ : tilde

      ` : backtick

▶ 날짜 포맷을 예쁘게 하기 위해선 공백이 있어야 하는데 그냥 작성하면 에러가 발생한다. 그래서 날짜 포맷을 작은따옴표로 묶어준다.

sh : 실행한다는 명령어이다. (SQL  run과 같은 개념)

 

ex)

 - #!/bin/bash  : 셔뱅,해시뱅, 스크립트를 실행할 shell 이름을 지정

    → 쉘 프로그램에서는 해시뱅 뒤에 주석이 오면 에러가 발생한다.

    → #은 주석이지만 뒤에 !를 쓰면 배시쉘이라는 뜻이다.

    → 써주는 습관을 가지는 게 좋다.

▶ 로그인 사용자 이름과 로그인 사용자 홈 디렉터리를 뽑는 거다.

 

여러가지 출력 방법

▶ ./user.sh만 하고 실행하면 에러가 발생한다. 그래서 권한을 주고 실행해야 정상 실행이 된다.

 

■ 변수

  - 모든 변수는 문자열로 취급한다.

  - 변수이름은 대소문자를 구분한다.

  - 변수에 값을 대입할 때는 = 좌우에 공백이 없어야 한다.

  - 변수에 값을 출력하려면 echo 명령어를 이용한다. 단, 변수이름 앞에 $ 명시하기

  - 변수이름 : 문자, 숫자, _로 구성될 수 있지만 반드시 문자, _로 시작해야 한다.

 

ex)

set

 

ex) 변수 지우기 (unset 변수이름)

 

ex)

▶ 쉘은 문자형으로 되어있기 때문에 문자형으로 출력이 된다.

 

# expr : 값을 계산하는 명령어

▶ 처음에 그냥 쓰면 더해지지 않는다. 쉘은 공백을 포함해야 하기 때문에 밑에처럼 출력을 해야 값을 계산해서 수행이 된다.

▶ *는 에러가 발생한다. 작은따옴표로 묶어서 실행하거나 역슬래시를 써서 실행해야 한다.

 

ex)

▶ 변수의 값을 저장하는 변수를 지정하고 싶을 때는 ``를 이용하면 된다.

 

▶ 변수 지정 안 하고 그냥 계산하고 싶을 땐 expr 사용하면 된다.

 

ex)

▶ *가 우선순위이지만 +를 먼저 수행하고 싶을 때는 () 묶어주는데 *처럼 \를 써줘야 하고 띄어쓰기에 아주 주의해야 한다.

▶ 괄호 앞에 역슬래시로 시작해서 괄호 전에 역슬래시를 써주고, 괄호하고 변수 사이에 공백이 있어야 한다.

 

 

# 파라미터 변수

  - 파라미터 변수는 순서대로 $0, $1, $2,...형태를 가진다.

  - 전체 파라미터는 $*로 표현한다.

 

ex) vi ex1.sh

▶ $0 위치자 : ex1.sh

▶ $1 위치자 : 10

▶ $2 위치자 : 20

▶ $* 위치자 : $0을 제외한 나머지 출력

후에 할 작업

 

ex) vi ex2.sh

▶ vi 편집기 안에 ``표시로 연산을 해주면 된다.

 

ex)

▶ awk를 통해서 작업을 많이 한다.

▶ emp.csv 파일에서 3번째 필드가 $ename 값과 일치하는 행을 찾아, 해당 행의 2,7,8번째 필드의 값을 출력한다.

 

ex)

 

ex) vi dept.sh

▶ 부서id를 입력값으로 받아서 그 id에 맞은 사원들의 부서id와 급여를 출력한다.

▶ 입력값으로 받은 부서id에 있는 사원들의 급여를 누적합해서 그 결과를 출력하는데 변수 total에 담았다.

▶ 변수를 담을 때는 꼭 `` 명시해야 하고, echo를 통해 출력한다.

 

ex) vi ex3.sh 

   - 변수를 2개 받아 쓸 경우

▶ 변수를 2개 이상 받을 경우엔 awk에도 변수마다 위에처럼 작성해줘야 한다.