이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다.
그렇지만, 물론 지적과 수정은 환영합니다.
리눅스 튜토리얼
Shell 이란? 사용자 명령을 받아 OS가 그것을 할 수 있도록 중계하는 것.
영어 명령어로서 작동됨.
Help
man(manual)를 사용시 메뉴얼을 불러옴.
ex) man echo : echo에 대한 메뉴얼을 불러준다. q를 누르면 다시 prompt로 돌아간다.
echo hello world -> hello world 출력
리눅스에서 옵션은 -? 로 사용
-ne 등으로 여러개도 가능하다.
File system
리눅스에서 모든 파일은 루트 디렉토리(/)아래에 존재한다.
ex) /hom/john/wow
pwd
print working directory. 현재 작업중인 경로 출력
cd
change directory. 작업할 경로 변경
그냥 cd 입력 혹은 cd ~ 입력시 홈 디렉토리로 이동
cd temp : 현 위치 아래의 temp로 이동
cd .. : 현 위치 위의 위치로 이동
cd . : 현 위치로
ls
list. 현재 위치의 파일 혹은 폴더 명들 출력
list -l : long list. 부가적 정보 함께 출력 (권한정보 아이디정보 크기 수정날짜 이름)
-t : 수정시간기준정렬
-S : 크기기준정렬
-h : 사람이 읽을만한 포맷으로 // kb gb 등 간략히 구분
-r : 거꾸로출력
*
아무거나의 의미
ex) ls *.pl : pl 확장자의 모든 파일 보여줌
mkdir
새 디렉토리 생성
rmdir
디렉토리 제거
cat / less : 파일의 전체 내용 출력
head / tail : 파일의 일부 출력 -n50 등으로 줄수 조절가능. default로 n10.
cp : 파일카피
mv: 파일이동 혹은 이름 재설정
rm: 파일 삭제
.
..
~
/
등의 기호에 익숙해져야 한다.
rm명령어는 위험하니까 함부로 사용하지말자.
rm -i : interective, 삭제할때마다 y n을 누르도록 한다.
rm으로 지운 파일은 permanent 하게 삭제된다.
permission 지정가능 (설정 안하면 default값으로)
소유자 / 그룹 / others 세가지 종류의 사용자에게 세가지 종류의 permission을 줄수있다.
r 쓰기권한 w 읽기권한 x 실행권한
권한이 없으면 -로 표기
순서도 user / group / others 순서로 표기되어있음 (ex -rw -rw -r--)
그앞은 파일의 특성 (ex 디렉토리 : d)
디렉토리 액세스 실행권한 줄 수있음 그렇다고 실행할수있는 것은 아니다.(해당 디렉토리 내부 확인 권한)
pemission은 ls -l로 확인가능
chmod: 특정 사용자의 permission을 변경할 수 있음.
[u]or[g]or[o]or[a] +(-) [permisson] 으로 각자의 권한 변경가능. (빼기는 권한없애기)
ps : 나중에 실습할때도 보게될 명령어 (process state), 실행중인 프로세스 확인
PID -> 프로세스의 id
bash -> 우리가 사용하는 shell
프로그램과 프로세스의 차이를 알아야한다.
프로세스 : 실행 중인 프로그램을 프로세스라 한다.
kill: 특정 프로세스에게 특정 signal을 보내는 것. 무조건 죽이는건 아님.
kill -9: 강제 종료
kill -l: signal목록 확인가능
cf. signal? 소프트웨어적 통지
wc
count 명령어 (input text의 라인수-l 워드수-w 캐릭터수-c 세어줌)
piping
program_a | program_b : a의 결과를 b의 input으로 보내준다.
ex) ls -l | wc : ls -l 의 라인수 워드수 캐릭터수를 세어준다.
program_a > file.txt (a의 아웃풋 file.txt로)
program_b < file.txt (file.txt에서 인풋 내용 가져옴)
하면 똑같
program_a > file.txt : 출력할 곳을 다시지정. 즉, 출력방향을 파일로 바꾸겠다. (기본: 화면에서 출력)
마치 로그파일처럼 출력되는 모든 사항이 파일에 저장. 이를 통해 데이터 분석가능
(output redirection)
program_a < input.txt : input.txt에서 입력을 받아온다. (기본: 키보드에서 받음)
ex) wc는 텍스트를 필요로 하는데, 이를 입력시 wc 입력하고 텍스트 입력후 ctrl+d를 입력하면
그것을 분석한다.
(input redirection)
grep
어떤 키워드를 포함하는 파일을 찾아준다.
grep "hello world" *.pl : hello world가 적힌 pl확장자의 파일을 찾아준다.
보통 마지막작업위치에 "from here"이라고 적어두고 다시 찾는 것으로 활용한다.
gcc
c 컴파일러
gcc hello.c : 실행 가능한 파일 a.out
gcc hello.c -o hello : 실행 가능한 파일 hello.out
gcc -.c -.c -.c : 한번에 여러개의 파일 컴파일 가능
-l 라이브러리이름 : 컴파일 과정에서 해당 라이브러리 import
cf. gcc는 디버깅 기능은 없다. (gdb가 디버깅)
make
예제코드 컴파일할때 사용. gcc는 직접 컴파일한다면, 이건 도와주는 느낌
여러개를 한번에 컴파일할때 주로 활용
해당 디렉토리 가능한 컴파일 모두 수행
vi editor
vi - : 새파일을 만들어 실행하거나, 있는 파일을 수정한다.
'vi :w' 저장
'vi :q' vi모드 종료
'💻 CS > 시스템프로그래밍' 카테고리의 다른 글
[시스템프로그래밍] UNIX I/O - 1 (2) | 2019.11.04 |
---|---|
[시스템프로그래밍] 중간고사 대비 (0) | 2019.10.22 |
[시스템프로그래밍] Processes in UNIX (1) | 2019.10.12 |
[시스템프로그래밍] Programs, Processes and Threads (0) | 2019.10.12 |
[시스템프로그래밍] Technology’s Impact on Programs (0) | 2019.10.12 |