Linux

DAY 100 - Linux (2024.11.27)

summ.n 2024. 11. 27. 12:04

Shell 명령어의 실행


1. ls /, date, ls -al 명령을 순서대로 실행 : ls / ; date ; ls -al


2. 명령1 && 명령2 실행 비교

2-1) date && ls /

date 명령이 정상실행하야 뒤에있는  ls / 명령도 정상실행한다.

 

2-2) data && ls /

data 명령이 수행이 안되므로 뒤에있는거 실행 안한다.


3. 명령1 || 명령2 실행 비교

3-1) date || ls /

 date 명령이 정상실행했으므로 뒤에있는 ls / 명령이 실행되지 않는다.

 

3-2) data || ls /

앞에있는 명령이 실행 안됐으므로 뒤에있는 ls  / 명령이 실행된다.


표준 입출력 - 장치



wc

2행 8단어 38바이트

--- stdin

 

출력은 stdout

 

에러는 stderror


리다이렉션(Redirection) ★★★

 

출력 리다이렉션

파일이 없으면 생성, 있으면 덮어쓰기

 

1. ls -al 명령의 실행 결과를 ls.txt 파일로 출력

ls -al > ls.txt

ls -al은 원래 화면에 출력해야하는데 방향을 ls.txt 파일로 바꾸는 것이다.

 

ls -al 1> ls.txt 

숫자 1 은 stdout을 명시하는 것이다. (1은 안적어도 된다.)


1. ls -ai 명령의 실행 결과를 ls.txt 파일 끝에 추가

ls -ai >> ls.txt\


에러 리다이렉션

1. ls 명령의 에러를 ls_err.txt 파일로 출력

ls [없는 파일] 2> ls_err.txt 

숫자 2번이면 에러 !!

 


츨력/에러 리다이렉션 응용

하나의 명령에서 정상 동작과 에러가 동시 발생

 

ls -al . kkk

명령 동시에도 가능 !


1. 표준 출력과 에러를 한번에 리다이렉션

이런식으로 각각의 파일로 저장할 수 있다.


2. 표준 에러 출력 버리기

에러 난 것은 버리겠다 !!

표준 출력만 화면에 출력된다 !!


3. 표준 출력과 에러를 하나의 파일로 리다이렉션

제대로 나온 내용도 ls_log3로 들어가고 에러가 나온 내용도 ls_log3로 들어간다.


입력 리다이렉션

1. .bashrc 파일의 내용을 입력받아 출력


 

1. << 리다이렉션을 이용한 cat 명령 실행

hello 명령어가 나올 때까지 입력을 받는 것이다 


입력/출력 리다이렉션 응용

1. 표준 입력으로 받은 내용을 hello 파일에 출력(저장)

EOF가 나올 때까지 입력을 받고 출력방향을  hello로 바꾼 것이다 !


파이프(Pipe)

 

1. ls -al 의 출력 중에서 앞부분 5줄 출력


파이프 응용

sed (Stream Editor) 명령어

텍스트를 변환하는 스트림 편집기
리눅스에서 grep 명령과 비슷하게 사용할 수 있다.
vi 편집기처럼 원하는 문자열을 치환하는 등 다양한 작업을 수행할 수 있다.
어떤 파일에서 원하는 내용을 추출하거나, 치환하는 작업을 수행할 수 있다.

 

1. 확장자가 .txt인 파일의 검색 리스트를 출력하고, 출력에서 확장자를 .text로 변경한 후, 변경 내용을 text2 파일에 저장

find / -name “*.txt” | sed ‘s/ \.txt/ \.text/g’ > text2

.txt를 찾아서 .txt를  .text로 변경해서 내용을 text2에 저장 !

 

 

"기온 화면에 "가 꼭 찍히게 하고싶으면

 

"기온은 " 이렇게하면 안 찍힌다.

" \" -- 이렇게하면 " 이게 찍힌다.

 

즉 위에서 \. 이렇게 되어있으면 .이 찍히는 것이다.

 

홈디렉토리에서 찾으려면

find ~ -name “*.txt” | sed ‘s/ \.txt/ \.text/g’ > text2

이런식으로 ~로 바꾸면 된다.

난 왜 .text로 안바뀌지..~


awk

패턴 기반의 텍스트 처리 도구
텍스트 파일의 각 줄을 읽고, 특정 조건을 만족하는 줄에 대해 작업을 수행한다.
일반적으로 파일에서 데이터를 추출하거나 변환할 때 많이 사용한다.

 

 

1. ls -al 명령에서 파일 이름과 권한 정보만 출력

 

NR>1은 번호 1번 행보다 큰 영역이므로 앞에  total 104는 빠지는 것이다

번호 1, 9번 열의 데이터를 출력하라 !! (원하는 위치만 볼 수 있는 것이다.)


명령의 선택 + 조합

쉘 변수 (Shell Variables) -- 지역변수
쉘 변수는 주로 쉘 스크립트나 현재 쉘 세션에서만 사용된다.

환경 변수 (Environment Variables) -- 전역변수
환경 변수는 시스템 전반에서 사용되는 변수로, 대체로 대문자로 작성된다.

 

 

set : 쉘 변수 + 환경변수 + 쉘 함수를 출력

env : 환경변수만 출력


변수의 출력 

echo $변수명 : 개별 변수의 값을 출력

$ 뒤에 오는 문자열을 변수로 취급한다 !!

SHELL 변수의 값을 출력함.


쉘 변수의 선언(설정)

변수명=값(문자열)


환경 변수의 선언

 

1. 쉘 변수 THIS_CLASS를 환경변수로 변경 : export THIS_CLASS

 

2. OTHER_CLASS를 환경변수로 선언하고 값을 java 로 대입

 

3. 환경변수 THIS_CLASS를 쉘 변수로 변경


변수 선언의 다른 방법


변수의 해제

 

1. 환경변수 OTHER_CLASS를 해제

아무것도 검색되지 않음


변수의 유효 범위 - 로그인 쉘 / 서브쉘

 

sh 서브쉘로 들어온 것

여기서 exit로 나가면 다시 bash로 나가는 것이다.

 

쉘이 완전 전향되는게 아니라 서브쉘로 가는 것이다 !!

bash가 로그인 쉘 나머지가 서브쉘 !!

 

쉘 변수는 지역변수니까 내가 잡은 곳에서만 되고

환경변수는 밑으로는 다 안다 위로는 모른다.


set -- 쉘변수 환경변수 다 보여줌

위에서 잡은 환경변수는 sh에서는 보인다.

하지만 sh에서 잡은 환경변수는 위에서 안 보인다.


환경 변수의 상속

 

node.js

리눅스에서는 node를 못 찾는다

 

node 설치하기 전에 update해주기 !!

 

 

환경변수 조회가능



변수의 산술 연산

expr


$(( )), $[ ]


쉘 스크립트


greeting.sh

-li  <

-le  <=

-gt  >

.... 더 있음

 

 

1. 프롬프트에서 실행할 쉘을 명시하고 스크립트 파일을 인자로 전달

 

2. 프롬프트에서 스크립트 파일을 직접 실행

644권한으로 읽고 저장만 가능하다. 실행은 안된다. 

x -- 실행권한이 없다.

그래서 bash라는 단어를 써야한다.

 

권한을 바꿔보자



if 조건문


case 조건문


for ~ in

 


while


until


break (반복문 종료)


continue (조건식으로 복귀)


 


환경 설정

리눅스 안에서 자바를 하면 path를 걸어서 환경 설정을 해줘야한다.

 

윈도우 안에서도 JAVA_HOME이라고 건 것처럼

리눅스 안에서도 자바를 깔면 건들지만

 

그게 아니면 웬만하면 건들지 않는게 좋으므로 실습은 지양한다 !!