1 리눅스에서 환경변수중 HOME은 무엇인가요?
2 리눅스에서 환경변수중 PATH가 하는 일은 무엇인가요?
3 환경변수를 보는 명령어는 무엇인가요?
l
shell의 어떠한 설정 값을 가지고 있는 변수. (환경은 현재 돌아가고 있는 shell)
shell이 돌아가는 동안 계속 존재
HOME: 사용자의 홈 디렉토리
PATH: 실행 파일을 찾을 경로
env
명령어는 현재 지정되어 있는 환경 변수들을 출력하거나, 새로운 환경 변수를 설정하고 적용된 내용을 출력하는 명령어. (글로벌 환경변수 조회 명령어이다. 참고로 set명령어는 로컬환경변수 조회 명령어)env [옵션]... [name=값]... [명령 [인수]...]
※ 관련 명령어
echo : 환경 변수 출력
export : 환경 변수 확인 및 수정
printenv : 환경 변수 보기
vi 파일경로
: 파일열기
:q
:저장하지 않고 종료
:wq
: 저장하고 종료
이럴경우 간단하게 # source /etc/bashrc 명령어로 수정된 내용을 바로 적용할 수 있다.
출처: https://klero.tistory.com/entry/source-명령어란 [Klero]
-brew 설치된 패키기 모두삭제: brew remove --force --ignore-dependencies $(brew list)
-패키지 설치: brew install 이름
-패키지 삭제: brew uninstall 이름
-패키지 업그레이드: brew upgrade
-버전확인하기: brew --version
-깔린 것들 확인하기: brew list
-ohmyzsh는 brew로 까는게 아니다->brew list에 안나옴.
-안드로이드, 가전제품 등 거의 모든 기계에 들어가 있는 운영체제 ->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 사용
-rm -rf
: 루트디렉토리에 있는 모든 디렉토리 삭제해라
-경우에 따라 슈퍼유저의 기능이 필요할 때 수도 필요.
예) apt-get install git을 실행하면 Permission denied, are you root?라는 문구가 나온다. 권한이 없다는 뜼이다. 이때 sudo apt-get install git을 을 실행하면 권한을 얻어 잘 실행된다.
초급자-Nano추천
고수-Vi추천
앱스토어 역할하는 소프트웨어. apt와 yum이 있다.
git은 버전관리시스템.
프로그램 만드는 개선과정들, 작업들 저장할 수 있는 것.
깃에서 다운받는 방법
먼저 리눅스에 깃을 깐다.
위 사진에 있는 주소 복사.
-git clone 복사한주소 저장할 폴더
gui vs cli
cli쓰는 이유
이유1. cli가 용량, cpu적게 차지.
이유2. gui는 작업 도중 기다려야 할 때가 많다 ->효율성 저하
mkdir why
cd why
위 두 줄을 아래 한 줄로 만들 수 있다.
mkdir why;cd why
하나의 명령의 실행결과를 다른 명령의 입력으로 주는 것.
grep: 어떤 정보에서 내가 필요한 정보를 행(줄)을 가지고 찾는 기능.
cat 파일이름
: 파일내용을 화면에 출력
linux.txt는 엄청나게 긴 파일이다. 이 파일에서 linux라는 텍스트가 포험된 행만을 출력하고 싶다? ->grep등장.
문법: grep linux linux.txt(grep 원하는단어 파일명)
만약 ls --help을 실행했을 때 나오는 내용들 중에 sort만 grep하고싶다면? ->pipe등장
문법: ls --help | grep sort
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.txt
와 cat <hello.txt
의 결과는 둘 다
hello가 출력되는 것으로 같다.
작동메커니즘상 차이는, 전자는 command line argument를 통해 전달되는 것이고, 후자는 standard input으로 전달된다.
위 사진처럼 input, output이 흐르는 형태를 iostream이라고 한다.
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에 입력하면 shell이 해석해서 kernel에 전달
❯ echo $0
-zsh
bash라 뜨면 그거 쓰고 있는 것임.
zsh가 더 편리.
1./home/anna 라는 디렉토리 절대경로 통해 갈 때,
/h/a 까지 쓰고 tab누르면 자동완성.
2. anna디렉토리에 why, hwo 두 디렉토리가 있고, 현재위치는 why인데 who로 가고자 할 때.
->cd why who
chmod +x backup(백업이라는 파일에 대한 실행권한 추가하는 코드)
내가 설치하는 프로그램들은 usr밑에 적당한 곳에 설치됨
기본적으로 설치된 것들은 bin, sbin에 깔림.
bin- 사용자들이 사용하는 명령어들 위치, 일반사용자들과 관련한폴디
sbin-리부팅 등 관리자와 관련된 폴더
etc-cofiguration file(설정파일) 예를들어 zshrc,bashrc. 어떤 프로그램 설정 바꾸고 싶을 때 설정 파일이 여기 있을 확률이 큼.
var: variable file들이 들어간다(예. log)
tmp: 임시파일보관, 컴퓨터 껏다키면 사라짐.
storage: 가격 싸고 용량 크다, 느리다
memory: 비싸고 빠르다.
cpu: 엄청 빠르다.
엄청 빠른 씨피유를 스토리지가 감당 못하니 중간에 메모리로 실행되는 것들만 올려서 처리한다.
스토리지->메모리->씨피유
돌아가는 모든 프로세스가 나오는 명령어.
ps, sudo top
,sudo htop
ps는 백그라운드에서 돌아가는 프로그램은 안나옴.
htop은 깔아야 됨.
둘다 어떤 파일 찾는거.
find가 좀더 복잡
-whereis는 찾고싶은 것의 위치를 알려준다.
-$PATH는 환경변수, 경로들 담고있다. echo $PATH라 치면 쭉 나옴.
ctrl+Z
현재 실행파일 백그라운드로 보냄
fg
백그라운드로 보내진 파일 fore ground로 가져옴. 여러개일 땐 %숫자
jobs
백그라운드 파일 보여줌
&
실행하고자 하는 코드 맨 뒤에 써주면 바로 백그라운드로 실행됨
ls-R
:현재 디렉토리의 하위 디렉토리 모두 보여줌
-항상 켜져있어야 하는 프로그램?
-etc/init.d에 위치
sudo service appache2 start
sudo service appache2 stop
주기적으로 처리해야 할 작업 처리해줌
crontab -e
로 들어가 작업
tail -f
맨 마지막 문장 출력?
alias l='ls -al'
위처럼 설정하면 l만 써도 ls-al이 실행된다.
alias ..='cd ..'
-여러명이 하나의 리눅스 접속 가능.
id
, who
내가 누군지, 지금 누가 접속해는지 각각 보여줌
-user에는 super유저(관리자)와 일반 user 크게 두가지로 나뉨.
-슈퍼유저가 아니지만 슈퍼유저권한으로 코드 치려면 코드앞에 sudo 쓰면됨.
-모든 유저가 가능한 것은 아님
달러표시는 일반유저 의미, 슈퍼유저는 샵 표시
-유닉스, 우분투 쓰면 기본적으로 슈퍼유저 막혀있다.
-슈퍼유저 되려면 su
쓰면 된다. su - root
-비밀번호 치면 id, who해봤을 때 root로 바뀜.
-슈퍼유저는 위험한 명령을 할 수 있기 때문에, 일반적으론 일반유저로 활동하는거 권장.
-슈퍼유저 상태 빠져나갈 떈 exit
써야됨.
-우분투는 일반적으로 슈퍼유저기능 락걸려있음.
-우분투에서 이 락을 풀기위해선 sudo passwd -u root
쓰면됨.
-루트 사용자의 홈디렉토리(?)는 /root , 일반유저는 접근불가
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에 삽입
그룹 이름 지정해서 해당 그룹의 권한을 따로 관리할 수 있다.
그룹 지정 방법은 검색통해 해결해라. 잘 안쓰이는 기능.
----생코 리눅스 강의 66개 중 45강까지 수강 완료---