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 (누구든지 와서 사용할 수 있음)
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
쉘변수(지역변수와 유사함) vs 환경변수
현재 쉘 <> 로그인쉘 & 서브 쉘
set <> env (
지역변수 <> 전역변수
변수명=값 <> export 변수명
unset 변수명 <> export -n변수명 (쉘해제)
쉘변수에서 env | grep SOME 하면 값이 안나옴
but export가 들어가면 환경변수 / corn shell(csh)에 들어갔을 떄 값이 나옴 export SOME=test
umask 022
644?
source ~/.basrh == .~/bashrc 같은의미임