과거 자료들

TIL - 02.22~02.25

jfl 2022. 2. 27. 22:24

 

#Unix command(1)

@Linux(Unix) 필수 명령어

CLI command : 터미널 명령어

-명령어를 외우는거 x, man 페이지 활용

man 해당 명령어(help같은 느낌)

 

tap을 활용한 명령행 완성 기능 활용(auto-completion), command compeletion

-더블탭 : 사용할 목록을 보여줌

 

i18n : 문자와 관련된 것, LANG 환경변수 설정에 영향받음.

-연습할 때에는 en_US 로케일 사용하는 편이 좋음

-locale : 언어셋

 

*regex : 정규표현식

 

가장 많이 쓰는 명령어

vmstat

vim

grep

apt

ss

nmcli

lsof

sysctl

git

 

*editor : vim 무조건 다뤄야함.

 

*약어의 원어를 알면 명령어가 더 잘 외워짐

 

*~ : 틸드

 

절대/상대 경로

absolute path(절대경로) : /로 시작하는 경로

relative path(상대경로) : .으로 시작하는 경로(.생략 가능)

 

ls 명령어는 ls al, ls l로 많이 한다.

 

*옵션을 연결해서 쓸 때에는 합쳐서 사용

ls a l => ls al

 

*Linux에서는 exe파일이 없다, 권한이 실행이면 실행하는 것

 

mkdir p work/testdir : -p가 붙어서 2개의 디렉토리가 동시에 만들어짐

(work, 그 안의testdir)

 

echo : 화면에 출력하는 것.

cat txt파일 : txt파일 안에 내용 출력

 

 

#vim editor

설명 / 명령어 // 추가 설명

 

[.vimrc에 저장해야 하는 것들]

각종 설정 : set _ // :set all로 옵션사항들 확인

encoding list 설정 : set fencs

function 기능 저장 : nmap, imap ....

단축어 : ab, ia, ca ...

+a 에디터 custom : colorscheme _ // https://vim-bootstrap.com/

...

 

[저장]

저장 / :w // 처음 저장할 때, :w [파일이름] 하면 해당이름으로 저장됨.

저장하면서 종료 / :x, ZZ

저장안하고 종료 / :q!

다른이름으로 저장 / :sav [파일이름]

 

[새창 열기]

vim으로 디렉터리 열기 / :e [디렉터리], Ctrl + ^

vim에서 다른 파일 열기(새창) / :e [파일이름]

다른 창으로 이동 / CTRL + ^

diff 기능, 소스코드 비교할 때 / vim d [파일1] [파일2] ...

코드 안 파일 열기 / 커서 옮기고, gf

분할로 파일 열기 / CTRL+W + f

 

[탭으로 열기]

vim p [파일1] [파일2] ...

 

Ctrl + z / U

 

[단어 경계 이동]

단어의 (,)에서 멈추기 / (w,e), ([[, ]])

괄호 짝 단위로 이동 / %

 

[단축어 설정] - .vimrc에 저장해 놓아야함.

ab [단축어] [단축하고자하는어]

ca [한글] [오타] ; ex. ca w -> :ㅈ 쳐도 :w로 됨.

 

[function에 기능 부여] - .vimrc에 저장해 놓아야함.

normal모드 작동 / nmap <단축키> <명령>

insert모드 작동 / imap <단축키> <명령>

0map 에 앞에 단어를 넣으면 그 모드의 단축키 명령어로 저장됨.

[Linux -> Window로 텍스트 가져갈 때]

:set ff=dos

:set fenc=korea

:wq // 만약 다른이름으로 저장해야한다면? :sav new_dosfile.txt

 

[Window -> Linux로 텍스트 가져갈 때]

fencs 설정 되있으면 자동으로 됨.

안될 때

:set ff=unix

:set fenc=utf8

:wq

 

[프로그래머를 위한 기능]

들여쓰기 다시 해주기 / gg -> = -> G //전체, 비주얼모드(V) -> 색칠 -> = //부분

-> 공백 4칸으로 전환 / :set et ts=4 ; :ret

공백 4-> 탭 전환 / :set noet ts=4 ; :ret!

자동완성 / CTRL + N

특수문자 포함 자동완성 / CTRL + X

 

 

 

#Linux package manager

[이론]

Package[패키지] : 미리 컴파일 된 묶음.

// 옛날에 소스코드를 받아서 하나하나 빌드했는데 시간도 빌드하는 환경도 만들어야 돼서 쉽지않았음 -> 패키지 등장

 

패키지 매니저 : apt(주력), dpkg(보조)

파일이름 : [패키지이름]_[버전]_[릴리즈]_[아키텍쳐].deb

 

[dpkg] - 검색, 확인시 씀

패키지 리스트 확인 / dpkg l strace
패키지 상태 확인 / dpkg s

패키지 검색 / dpkg S [파일명] // dpkg S ‘*trace’ 하면 trace로 끝나는 패키지 검색

----------------------------------------------

#apt 요즘에 쓰는 툴

*binary : 명령어

*apt-get으로 되있는 문서는 옛날게 많음.

 

@sources list

aptpackage를 가져오는 곳(다운 받는 곳의 정보)

/etc/apt/sources.list.d/*.list 파일명으로 추가할 것.

-> apt edit-sources

 

[networking]

# - root 범위에서 실행

 

[apt] -ubuntu mirror 꺼 사용

sudo select-editor > 2

apt edit-sources kakao.list > ppt자료에 3개 입력하고 저장(틀리면 안되니 복사사용)

 

*yy : 복사, p: 다음행에 붙여넣기

 

sudo apt update

 

[패키지 검색]

apt search <검색어>

apt search n <검색어> : 중간에 있어도 검색함

 

[패키지 정보]

apt show <검색어>

 

[패키지 삭제]

패키지만 삭제(설정은 그대로) / apt remove <패키지명>

완전 삭제 / apt purge <패키지명>

버전 관리로 쓰이지 않는 패키지 자동 삭제 / apt autoremove <패키지명>

*apt y install ... : 무조건 ‘yes’하라는 설정

 

*dependency error 해결(종속성 문제) -ppt 그림 참고

다운 못받는 파일의 필요한 버전 확인 / apt list all-versions [다운받을 것]

문제 있는 버전 다운그레이드 / apt install curl [문제있는 것]=[필요한 버전]

---------------------------------------------

#네트워크

[이론]

TCP/IP : IP 주소

Wired Network : 유선 네트워크

Wireless Network : 무선 네트워크

localhost : 자기자신 주소 ( I hacked 127.0.0.1 자기자신을 해킹한다는 재밌는 일화)

=> 자기 자신 주소는 IPv4 표현식으로 127.0.0.1 이다.

 

[설정] - NetworkManager(네트워크 설정관리)

*eth0라는 말, ifcfg-, ifup, ifdown 편집하는 내용이 나오면 거르기

NetworkManager를 사용 할 것.

 

[nmcli]

root 권한으로 할 것

현재 상태 확인 / nmcli g

네트워크 끊고 연결 / nmcli n on(or off) // 네트워크 안될 때 nmcli n 으로 조회한번 해볼 것

네트워크 장치 조회 / nmcli d

특정 네트워크 속성보기 / nmcli c s <커넥션이름>

// 소문자 : 설정된 값(offline도 보임), 대문자 : 할당된 값(online일 때만 보임)

nmcli 옵션들 : g, n, r, c, d

 

커넥션 연결 끊기 / nmcli con down <커넥션이름>

커넥션 연결 하기 / nmcli con up <커넥션이름>

커넥션 이름 변경 / nmcli con modify <기존이름> connection.id <새이름>

*connection과 관련된 명령어는 nmcli 앞에 con이 붙는다.

 

*IP, Gateway값 메모할 것.

Gateway주소 추가 / nmcli c mod <커넥션이름> ipv4.method manual ipv4.addr <기존ip> ipv4.gateway <Gateway주소> +ipv4.dns <Gateway주소>

IP 추가 / nmcli c mod ens33 +ipv4.addr <IP주소>

IP 삭제 / +대신 -사용

변경 반영하기 / nmcli c down <커넥션이름> && nmcli c up <커넥션이름>

설정 추가 / +

설정 삭제 / -

 

설정이 꼬여서 초기화 하고플 때

nmcli c del <커넥션이름>

nmcli c add con-name <커넥션이름> ifname <디바이스네임> type ethernet ip4 <IP주소>

nmcli c mod ens33 +ipv4.dns 8.8.8.8

nmcli c s ens33 | egrep ‘(ipv4.addr|ipv4.gateway|ipv4.dns)’

 

device 자체가 올라오지 않을 때 1 / nmcli dev connect <커넥션이름>

device 자체가 올라오지 않을 때 2 / nmcli g 해서 STATEasleep인지 확인.

 

[Consistent Network Device Naming]

원래 EL6이전에 자주 쓰이던 방식인 eth0, eth1, eth0:0, eth0:1 ...처럼 사용했지만 지금은 새로운 네이밍 방법이 생겼다. 이유는 메인보드 슬롯에 이더넷 카드를 두 개를 장착한 후 각각 IP를 할당했는데, 하나를 고치기 위해서 넘버를 보는데 이더넷 카드 회사가 둘다 같다면 둘다 번호가 같아서 뜯기 전에는 모른다. 이를 방지하기 위해 enp5s0, eno1과 같은 새로운 네이밍이 나왔다.

ex. enp5s0 -> en / p5 / s0 -> 이더넷 / PCI 5/ 0번 슬롯

 

[network tool] - ss(socket statistics)

netstat -> ss // ss를 사용하자