딩코딩코딩 2023. 3. 9. 13:02

id = 사용자 id, group id

linux file time

ctime: create

mtime: modify (ls-)

atime: alter (touch)

 

cat > test2

hello   

^d (eod,end of document)

file test2 (file의 속성을 확인)

cat test2 (file을 봄)

cat / usr/bin/passwd(속성을 볼 수 있음)

mkdir -p (여러개 만들 수 있음)

cp test1 dir1 (dir1에 test1을 만듬)

&=엠퍼센트

rmdir dir4 (파일이 있으면 잘 안지워짐)

cd dir2

rm *

cd ..

rm -rf dir1 (이렇게 해야 지워짐) 

rm-rf a test* (test로 시작하는 모든 걸 지움)

> (greater than) 출력 redirection

cat 0< test1(파일 디스크랩터?) 

cat 1> test2  (중간에 0과 1은 생략 가능)

 

ls dir1 (지웠기 떄문에 에러가 날것임)

ls dir1 2> error(error에 넣겠다)

wc(word count)

wc -l (line)

wc -w(word)

wc -c(

cat -n (라인넘버 붙여줌)

grep bash | cat -n 출력의 결과를 cat -n 넣어줌

more /etc/passwd  (q 로 빠져나갈 수 있음)

ctrl F, Ctrl B (다음, 전)

**디렉토리 복사 cp -R dir1 dir2  ** (대문자 r 쓰기)

mv dir2 dir3 (mv는 r옵션이 없음)

**ls -li (아이노드 넘버가 보임)**

li = linked list(관련 상세 설명?)

 

filesytem info = Super block

inode list: file info

어디에 놓고 사용함?  Ram에 넣고 사용함.

Boot block = 부팅과 관련된 Master Boot Report(MBR) /

Fat, Fat32-4G(파일 하나의 최대크기) -> 윈도우에서 사용 admin에서 5기가면 안들어감

NTFS - 윈도우와 잘 호환이 안됨 So, EXT 2,3,4(확장파일) - Linux(윈도우 사용 권장)

 

ll -i (아이노드 넘버 볼수 있음)

하드링크 ln (linked의 줄임말)

ln -s (심볼릭 link)

hard link= 원본 과 똑같음

**hard link vs symbolic link(음바페, 손흥민)

 

cat > test1

hello 

cat >> test1

goodbye

cat test1

hello

goodbye

**있던 파일의 내용을 덧붙여서 쓰려면 >> 를 꼭사용하자

 

$PS1: first prompt

$PS2: > (두번째 프롬프트)

 

출력을 두번한다? Terminator(종단자) cat -n << endtext > myenv (endtext로 끝낸다)

yG : 행의 끝

:y$  / 파일의 끝

 

grep -c (라인 갯수 출력)

grep -n (행의 라인넘버)

 

 grep [OPTION...] PATTERN [FILE...]
        -E        : PATTERN을 확장 정규 표현식(Extended RegEx)으로 해석.
        -F        : PATTERN을 정규 표현식(RegEx)이 아닌 일반 문자열로 해석.
        -G        : PATTERN을 기본 정규 표현식(Basic RegEx)으로 해석.
        -P        : PATTERN을 Perl 정규 표현식(Perl RegEx)으로 해석.
        -e        : 매칭을 위한 PATTERN 전달.
        -f        : 파일에 기록된 내용을 PATTERN으로 사용.
        -i        : 대/소문자 무시.
        -v        : 매칭되는 PATTERN이 존재하지 않는 라인 선택.
        -w        : 단어(word) 단위로 매칭.
        -x        : 라인(line) 단위로 매칭.
        -z        : 라인을 newline(\n)이 아닌 NULL(\0)로 구분.
        -m        : 최대 검색 결과 갯수 제한.
        -b        : 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.
        -n        : 검색 결과 출력 라인 앞에 라인 번호 출력.
        -H        : 검색 결과 출력 라인 앞에 파일 이름 표시.
        -h        : 검색 결과 출력 시, 파일 이름 무시.
        -o        : 매치되는 문자열만 표시.
        -q        : 검색 결과 출력하지 않음.
        -a        : 바이너리 파일을 텍스트 파일처럼 처리.
        -I        : 바이너리 파일은 검사하지 않음.
        -d        : 디렉토리 처리 방식 지정. (read, recurse, skip)
        -D        : 장치 파일 처리 방식 지정. (read, skip)
        -r        : 하위 디렉토리 탐색.
        -R        : 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색.
        -L        : PATTERN이 존재하지 않는 파일 이름만 표시.
        -l        : 패턴이 존재하는 파일 이름만 표시.
        -c        : 파일 당 패턴이 일치하는 라인의 갯수 출력.

ssh = sequel shell (안에 sftp가 있음)

무조건 알아야 할 것

21: ftp(file transport, 파일을 보낼때)

22: ssh (가장 기본, 항상 열려있음) 22번포트 = well-known port라고 불림. sftp = ssh에 포함되어 있음

23: telnet(약간 불안함) (상용서비스 시 telnet 권장하지 않음)

25: smtp (simple mesaage transport, 내 pc에서 메일서버를 통해서 보낼때, 웹메일이 아니라, 스마트폰 메일 툴 같은 것)

80: http(웹)

110: pop3  (메일을 읽으면 내 pc로 다운로드 되어지는 것, 메일 읽으면 파일이 사라지는게 아님, 계속 유지됨)

143: IMAP (서버 차원에서는 좋지 않음, 내가 읽었는데 지워지면 안되니깐, 강제적으로 지워야만 지워짐)

*

 

#include <stdio.h>

void main() {

printf("Hello, World~!! \n");   new라인 만들어 주는 것

gcc -o hello (gcc는 컴파일러)

 

fetch (군대에 세탁기 옆에 탈수기)

decode

excute

save / store

| 파이프라인

 

:1,$s/:/=/    // 치환 

g 행의 여러개 모든걸 다같이 바꿀 떄

:%s\/home/\/export\/home/g   -> home을 export home으로 바꿔주고

:%s\/home/\/export\/home/g   -> home을 export home으로 바꿔주고

 

fetch(명령어를 가져오는 것) - c언어에서 저급언어로 바꾸면 ex) a++ -> add $+2, 1 / add $s1, $+1,$+1

decode(코드를 해석하는 것): ex) 100101101010 -> 8bit를 까보면 add라는 명령어로 알 수 있음

execute: 연산하는 단계

store: 결과를 저장하는 단계 

 

IR(Instruction Register): PC -> IR에 프로그램을 가져와야함 PC를 기준으로 명령어를 IR로 가져오는 것

PC(Program Count): 현재 실행중인 명령어의 주소를 나타냄

PC = PC + 1 (다음 명령어를 실행하라) f - d- e- s | f - d- e- s | f - d- e- s | f - d- e- s (파이프라인)

2클럭이 버려지고, 3개가 있어야 실행

Ram에 변수(1000을 담은 공간) 가 생기고 ----> (linked list)  □

직접주소지정(모든 번지를 다 저장못함)

간접주소지정) 2^16 까지  (상대주소지정방법)

32비트 전체를 주소로만 담는다  -> 거쳐서 지나감 -> 

pts/0 sudo 

 

사용자의 홈 디렉토리 cat ~/.exrc

 

 


 

r w x r w x r w x

user group other

u      g       o

    =a(ll)

r:read(읽기 권한) 디렉토리에서 (접근권한)

w: write (쓰기권한) 디렉토리(파일 생성 삭제)

x: excute (실행권한) 

r    w   x

4   2    1

test1

file은 권한이 없어서 644

umask 0022

777

022

----

755 -> directory

111

===

644 => file

bash.rc (나만 쓰는 환경설정)

***중요한 문제****

특수 접근 권한

4000: setuid : 파일을 실행하는 동안 잠시 소유자의 권한을 가짐

2000: setgid : 파일을 실행하는 동안 잠시 소유자 그룹의 권한을 가짐

1000: sticky bit : public directory, 수정, 삭제는 본인만, 읽기는 누구나. Web hard, ftp, anonymous ftp (누구든지 와서 사용할 수 있음) 

 

 

순서대로 1) pwd(4000: setuid)&nbsp; &nbsp; 2) write.ul(2000, setgid)&nbsp; &nbsp; &nbsp;3) tmp (sticky bit), 수정 삭제는 본인만.읽기는 누구나 (ll 말고 ld)

 find . 현재 디렉토리에서 보갰음 ㅇ

find / -type d > dir_result (파일 시작해서 맨 처음 해야 할 것)

 

vi환경에서

ggVGU: 전체 대문자 변겅

ggVGu: 전체 소문자 변경

 

이름 바꾸기

vi /etc/hostname   // hostname 이름 바꾸기  원래 virtualbox 였다가 >> ubuntu 로 변경함

cat /etc/hostname 

ubuntu

 

셸의종류

-본 쉘, 콘쉘, C쉘, 배쉬 쉘, 대쉬쉘

C쉘 - Bill joy

csh => .cshrc

ksh =>.kshrc

#exit

#exit

콘쉘 *시험

유닉스 S5R 4(System 5 Release 4)

C 쉘과 달리 본 쉘과의 호환성을 유지하고 히스토리, alias 기능 등 C셸의 특징도 모두 제공하면서 처리 속도 빠름

배쉬 셸 *시험

브레인 포그가 개발

본쉘과 호환성 유지하면서, C쉘, 콘 쉘의 편리한 기능도 포함

 

ISO (표준)

IEEE 802.11 => WIFI

IETF => 인터넷 엔지니어링 (대체적으로 TCP, UDP 를 표준화 함) IP 

POSIX

ANSI =>  C언어

W3C => HTML5

 

기본쉘 확인

본쉘, 배시쉘, 콘쉘의 기본 프롬프트: $

C쉘의 기본 프롬프트 : %

## /etc/passwd file의 구조

user1(username):x(password):1000(uid):1000(gid):user1,,,(comment,주석):home(home-directory):shell

:p :u :g :c :d :s

-k: /etc/skel 이외의 곳에서 환경 설정

-m: make (일부 시스템은 기본이라 안써도 됨)

groupadd

ls abc 2> /dev/null     ## 블랙홀 같은 존재 오류를 블랙홀처럼 빨아들여서 쓸떼없는 Error를 생성하지 않게 함

결과도 보고 error도 보고

[root@ubuntu /work]#ls . abc > ls.out 2> ls.err
[root@ubuntu /work]# cat ls.out
.:
./  ../  allnew/  error  ls.err  ls.out  passwd  result  temp/ test1
[root@ubuntu /work]#cat ls.err
ls: 'abc'에 접근할 수 없음: 그런 파일이나 디렉터리가 없습니다
[root@ubuntu /work]# ls . abc > ls.out 2>%1
[root@ubuntu /work]#cat ls.out
.:
%1  ./ ../  allnew/  error  ls.err  ls.out  passwd  result  temp/  test1

int i (전역변수)

쉘변수(지역변수와 유사함) vs 환경변수

 현재 쉘 <> 로그인쉘 & 서브 쉘

set <> env   (

지역변수 <> 전역변수

변수명=값 <> export 변수명

unset 변수명 <> export -n변수명 (쉘해제)

shell변수여서 SOME=TEST // 환경변수가 아니라서 아무것도 뜨지 않음
환경변수

쉘변수에서 env | grep SOME  하면 값이 안나옴

but export가 들어가면 환경변수 / corn shell(csh)에 들어갔을 떄 값이 나옴 export SOME=test

 

umask 022 

644?  

 

source ~/.basrh == .~/bashrc  같은의미임