리눅스, 터미널

yo·2020년 6월 2일
0

1 리눅스에서 환경변수중 HOME은 무엇인가요?
2 리눅스에서 환경변수중 PATH가 하는 일은 무엇인가요?
3 환경변수를 보는 명령어는 무엇인가요?
l

0. 환경변수란? echo란?

shell의 어떠한 설정 값을 가지고 있는 변수. (환경은 현재 돌아가고 있는 shell)
shell이 돌아가는 동안 계속 존재

1. HOME

HOME: 사용자의 홈 디렉토리

2. PATH

PATH: 실행 파일을 찾을 경로

  1. -env 명령어는 현재 지정되어 있는 환경 변수들을 출력하거나, 새로운 환경 변수를 설정하고 적용된 내용을 출력하는 명령어. (글로벌 환경변수 조회 명령어이다. 참고로 set명령어는 로컬환경변수 조회 명령어)
    -사용법

env [옵션]... [name=값]... [명령 [인수]...]

※ 관련 명령어
echo : 환경 변수 출력
export : 환경 변수 확인 및 수정
printenv : 환경 변수 보기

아무거나 배운거 정리

ternimal에서 vi

vi 파일경로 : 파일열기
:q :저장하지 않고 종료
:wq: 저장하고 종료

리눅스 source 명령어

  • source 명령어는 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용하는 명령어이다.
    예륻들어 /etc/bashrc 파일을 수정 후 저장하여도 수정한 내용이 바로 적용되지 않는다.
    왜냐하면 /etc/bashrc 파일은 유저가 로그인할 때 읽어들이는 파일이여서, 로그아웃 후 로그인하거나 리눅스를 재시작해야 적용이 된다.

    이럴경우 간단하게 # source /etc/bashrc 명령어로 수정된 내용을 바로 적용할 수 있다.
    출처: https://klero.tistory.com/entry/source-명령어란 [Klero]

brew 관련

-brew 설치된 패키기 모두삭제: brew remove --force --ignore-dependencies $(brew list)
-패키지 설치: brew install 이름
-패키지 삭제: brew uninstall 이름
-패키지 업그레이드: brew upgrade

-버전확인하기: brew --version
-깔린 것들 확인하기: brew list
-ohmyzsh는 brew로 까는게 아니다->brew list에 안나옴.

Session

-안드로이드, 가전제품 등 거의 모든 기계에 들어가 있는 운영체제 ->linux
-p9k_configure: powerlevel10k 재설정

생활코딩 강의

-맥은 리눅스가 아니지만 unix라는 공통조상-> 맥과 리눅스 조작법 거의 비슷
-명령어를 통해 조작
-cli(command line interface) <->GUI
-현재 위치를 기준으로 실행됨.
-pwd: 현재 위치 확인

-mkdir dirname -> 새 디렉토리 만듬
-ls : 현재 디렉토리 파일 다 보여줌.
-ls -l: 더 자세한 정보 보여줌
-ls -l 에서 l을 parameter라고 부름.
-ls -l로 호출 하고 맨 앞에 d가 있으면 directory

-cd 뒤에 파일명 쓸 때 조금만 쓰고 tab누르면 자동완성됨.
-cd ..부모디렉토리로 이동. (이런 방식을 상대경로라고 한다)
-clear쓰면 화면 전부 지워짐.
-rm : 파일 삭제
-rm -r: 디렉토리 삭제. 예시) rm -r hello_linux
--help: 사용설명서. 예시) rm --help, mkdir --help, ls --help
-man: 사용설명서. 더 자세함. 예시) man ls , sort라는 단어를 검색하고 싶으면 /sort, n누르면 설명으로, q누르면 화면 빠져나옴.
tldr: man, help같은 기능. 따로 설치해야됨
-mkdir -p:

-ls-l = ls --all 왼쪽은 축약형
-ㅣs -alS : 모든 파일 상세히 보여주면서 파일크기순으로 내림차순 정리
-파일이동: mv 원본파일이름 이동될주소
-파일이름변경: mv 원본파일이름 새파일이름
-ls -l dirname 해당 디렉토리 내용 볼 수 있다.

자주 사용되는 명령어

sudo(=super user do)

-옛날엔 컴퓨터 한 대 여러사람이 같이 썼다.
-그래서 권한문제가 발생한다(누가 읽고 쓰고 삭제하고 할 수 있냐 같은 문제)
-평소엔 필요없지만 경우에 따라 관리자 권한이 필요할 때 sudo 사용
-rm -rf: 루트디렉토리에 있는 모든 디렉토리 삭제해라
-경우에 따라 슈퍼유저의 기능이 필요할 때 수도 필요.
예) apt-get install git을 실행하면 Permission denied, are you root?라는 문구가 나온다. 권한이 없다는 뜼이다. 이때 sudo apt-get install git을 을 실행하면 권한을 얻어 잘 실행된다.

텍스트편집기

초급자-Nano추천
고수-Vi추천

패키지매니저

앱스토어 역할하는 소프트웨어. apt와 yum이 있다.

파일다운로드

git

git은 버전관리시스템.
프로그램 만드는 개선과정들, 작업들 저장할 수 있는 것.
깃에서 다운받는 방법
먼저 리눅스에 깃을 깐다.

위 사진에 있는 주소 복사.
-git clone 복사한주소 저장할 폴더

why using CLI?

gui vs cli
cli쓰는 이유
이유1. cli가 용량, cpu적게 차지.
이유2. gui는 작업 도중 기다려야 할 때가 많다 ->효율성 저하

mkdir why
cd why
위 두 줄을 아래 한 줄로 만들 수 있다.
mkdir why;cd why

pipeline

하나의 명령의 실행결과를 다른 명령의 입력으로 주는 것.
grep: 어떤 정보에서 내가 필요한 정보를 행(줄)을 가지고 찾는 기능.
cat 파일이름: 파일내용을 화면에 출력
linux.txt는 엄청나게 긴 파일이다. 이 파일에서 linux라는 텍스트가 포험된 행만을 출력하고 싶다? ->grep등장.

문법: grep linux linux.txt(grep 원하는단어 파일명)

만약 ls --help을 실행했을 때 나오는 내용들 중에 sort만 grep하고싶다면? ->pipe등장
문법: ls --help | grep sort

IO Redirection

i=input
o=output
redirection=방향을 바꾼다.
예시
ls -l의 실행결과를 result.txt파일에 담고 싶다면? >를 사용해라
ls -l > result.txt
잘 됐는지 확인하려면 cat result.txt
만약 에러가 난 실행결과를 다른 곳에 담고 싶다면? 2>를 사용해라
rm rename2.txt 2> error.log
(rename2.txt라는 파일은 없는 파일이라 가정하면, 없는데 지우니까 애러난다. 그 애러를 담으려면 2>가 필요하다)
> 표시는 1>과 같다. 1은 standard output, 2는 standard error의미.
어떤 실행의 아웃풋을 담고자 하고, 혹시 에러가 났을 때 담을 것 까지 염두에 두며 만들려면?
rm rename2.txt 1> result.txt 2> error.log
-cat hello.txt하면 화면에 출력되지만, cat 뒤에 아무것도 안치고 엔터친다음 아무 텍스트나 치면 그 텍스트가 출력된다.

hello.txt 의 내용은 hello다.
cat hello.txtcat <hello.txt의 결과는 둘 다
hello가 출력되는 것으로 같다.
작동메커니즘상 차이는, 전자는 command line argument를 통해 전달되는 것이고, 후자는 standard input으로 전달된다.


위 사진처럼 input, output이 흐르는 형태를 iostream이라고 한다.

redirection append

ls -al > result.txt 한 다음에,
ls -al > result.txt 똑같은 것을 한 번 더 하면 덮어씌어진다.
덮기 말고 뒤에 내용 이어서 추가하려면? >>
ls -al > result.txt(처음에 만든 다음에)
ls -al >> result.txt (처음 파일 뒤에 내용 추가)

*ctrl + c 입력취소


-eot, hahahoho 시작지점, 끝지점 의미.
-dev/null 쓰레기통 같은 것.

shell , kernel

shell은 껍데기, kernel알맹이 라는 뜻.



-커널을 직접 제어하기 어렵다->사람의 언어로 shell에 입력하면 shell이 해석해서 kernel에 전달

bash vs zsh

❯ echo $0
-zsh

bash라 뜨면 그거 쓰고 있는 것임.
zsh가 더 편리.

zsh의 특징기능

1./home/anna 라는 디렉토리 절대경로 통해 갈 때,
/h/a 까지 쓰고 tab누르면 자동완성.
2. anna디렉토리에 why, hwo 두 디렉토리가 있고, 현재위치는 why인데 who로 가고자 할 때.
->cd why who

shell script

실행 권한이 없을 때

chmod +x backup(백업이라는 파일에 대한 실행권한 추가하는 코드)

기타내용

내가 설치하는 프로그램들은 usr밑에 적당한 곳에 설치됨
기본적으로 설치된 것들은 bin, sbin에 깔림.

derectory structure

bin- 사용자들이 사용하는 명령어들 위치, 일반사용자들과 관련한폴디
sbin-리부팅 등 관리자와 관련된 폴더
etc-cofiguration file(설정파일) 예를들어 zshrc,bashrc. 어떤 프로그램 설정 바꾸고 싶을 때 설정 파일이 여기 있을 확률이 큼.
var: variable file들이 들어간다(예. log)
tmp: 임시파일보관, 컴퓨터 껏다키면 사라짐.

process


storage: 가격 싸고 용량 크다, 느리다
memory: 비싸고 빠르다.
cpu: 엄청 빠르다.
엄청 빠른 씨피유를 스토리지가 감당 못하니 중간에 메모리로 실행되는 것들만 올려서 처리한다.
스토리지->메모리->씨피유

ps, top, hop

돌아가는 모든 프로세스가 나오는 명령어.
ps, sudo top,sudo htop
ps는 백그라운드에서 돌아가는 프로그램은 안나옴.
htop은 깔아야 됨.

locate, find

둘다 어떤 파일 찾는거.
find가 좀더 복잡

whereis, $PATH

-whereis는 찾고싶은 것의 위치를 알려준다.
-$PATH는 환경변수, 경로들 담고있다. echo $PATH라 치면 쭉 나옴.

background execute(ctrl+Z, &)

ctrl+Z 현재 실행파일 백그라운드로 보냄
fg 백그라운드로 보내진 파일 fore ground로 가져옴. 여러개일 땐 %숫자
jobs 백그라운드 파일 보여줌
& 실행하고자 하는 코드 맨 뒤에 써주면 바로 백그라운드로 실행됨

ls-R :현재 디렉토리의 하위 디렉토리 모두 보여줌

daemon

-항상 켜져있어야 하는 프로그램?
-etc/init.d에 위치
sudo service appache2 start
sudo service appache2 stop

cron

주기적으로 처리해야 할 작업 처리해줌
crontab -e 로 들어가 작업
tail -f 맨 마지막 문장 출력?

startup script

alias l='ls -al'
위처럼 설정하면 l만 써도 ls-al이 실행된다.
alias ..='cd ..'

Multi user

-여러명이 하나의 리눅스 접속 가능.
id, who 내가 누군지, 지금 누가 접속해는지 각각 보여줌

root user

-user에는 super유저(관리자)와 일반 user 크게 두가지로 나뉨.
-슈퍼유저가 아니지만 슈퍼유저권한으로 코드 치려면 코드앞에 sudo 쓰면됨.
-모든 유저가 가능한 것은 아님

달러표시는 일반유저 의미, 슈퍼유저는 샵 표시
-유닉스, 우분투 쓰면 기본적으로 슈퍼유저 막혀있다.
-슈퍼유저 되려면 su 쓰면 된다. su - root
-비밀번호 치면 id, who해봤을 때 root로 바뀜.
-슈퍼유저는 위험한 명령을 할 수 있기 때문에, 일반적으론 일반유저로 활동하는거 권장.
-슈퍼유저 상태 빠져나갈 떈 exit 써야됨.
-우분투는 일반적으로 슈퍼유저기능 락걸려있음.
-우분투에서 이 락을 풀기위해선 sudo passwd -u root 쓰면됨.
-루트 사용자의 홈디렉토리(?)는 /root , 일반유저는 접근불가

add user

Permission

r-read
w-쓰고, 삭제
x-실행, 디렉토리라면 cd명령을 통해 디렉토리에 들어갈 수 있느냐에 관한 것.
-echo 'hi' 는 hi를 출력. echo는 뒤에 오는 내용을 출력해준다.
-echo 'hi' > perm.txt 는 hi를 redirection해서 perm.txt에 넣어준다.
-a사용자의 파일에 b사용자가 내용 추가하려고 하면 permission denied된다(권한 없다면)

-access mode를 바꿀 땐 chmod를 사용한다. (change mode)
예시) chmod o-r perm.txt (perm.txt파일에 other의 r기능 삭제)
예시) chmod u+r perm.txt (perm.txt파일에 user(소유자)의 r 기능 추가)
예시) chmod u+x perm.txt ()
예시) chmod o-r perm (perm디렉토리에 other의 r기능 삭제)
-실행할 땐 해당 디렉토리 들어가서 ./하면서 시작?

-어떠 디렉토리와 그 하위 디렉토리의 권한을 모두 한 번에 바꾸고 싶다면? -R
(R은 Recursive)
예시) chmod -R o+w perm

-숫자를 사용해서 permission바꿀 수도 있다. (octal modes)

-a를 사용해서 모든 사용자 권한 바꿀 수 있다.(연산자와 클래스 방식)

-a와 =을 사용해 모든 사용자 권한 바꿀 수 있다.
chmod a=r perm.txt (모든 사용자 읽을 수 있게)
chmod a=rxw perm.txt (모든 사용자 rxw가능)
참고
mkdir perm;cd perm;echo 'hi' > perm.txt
perm 디렉토리 만들고, 거기로 이동, hi를 perm.txt에 삽입

group

그룹 이름 지정해서 해당 그룹의 권한을 따로 관리할 수 있다.
그룹 지정 방법은 검색통해 해결해라. 잘 안쓰이는 기능.

----생코 리눅스 강의 66개 중 45강까지 수강 완료---

profile
Never stop asking why

0개의 댓글