09.06 시프
Linux Commands
- format
- ls
- man ls
- -a 숨겨진것도
- -s 사이즈
- -l 권한까지 상세히
- -al 숨겨진것까지 상세히
- ls directory_name
File & Directory
- 히든 파일들은 . 으로 시작한다.
- .bashrc .ssh
- cd ~ 홈 디렉토리로 이동
- cd / 루트 디렉토리로 이동
- pwd 현재 주소 절대경로로 출력
- userid@hostname:~$
- 쉘을 시작하면 home 디렉토리에서 시작
절대경로 상대경로
- 절대경로
- 루트 디렉토리로 시작
- /home/wookhee/sysprog/lecture3/sysorog
- 상대경로
- 현재 디렉토리 = working directory
- 현재 디렉토리 = .
- 상위 디렉토리들 = ..
- working directory = …./sysprog3 일때 sysprog으로 가려면 cd ../sysprog
권한
- read 4 write 2 execute 1
- rw = 6 rx = 5
유저 | 그룹 | other
- chmod 권한 설정
- 664 tmp.txt = 유저 rw 그룹 rw other read only
- chmod ug-w ./tmp.txt 유저와 그룹에게 w를 뺀다.
- chmod o+x ./tmp.txt other에게 실행권한을 준다.
mkdir
- mkdir [option] path
- mkdir -m 700 path = 권한 설정
- mkdir -p sysprog/ku/eng = tree 형태 폴더 만들기
- rmdir 로 폴더지우기(recursive 하게 지우는 방법 있으니 참고)
cp
- 카피
- cp [options] source(복사하고싶은파일) destination(복사할경로)
- 모든 파일을 복사하려면(recursive하게)
- cp -r * directory2
- cp -r directory1 directory2
mv
- 파일을 이동시킬때
- mv [options] source destination
- mv test.txt ../test.txt
- mv test.txt emp.txt = test.txt 이름을 emp.txt로 바꾼다.
- 내 파일이 아니면 move를 할 수 없다. (r,w 필요할 것으로 추정) 또한 이동되는 위치에 대한 권한도 필요
ln
- 링크파일을 만드는 명령어
- 심볼릭링크
- 단순히 원본파일을 가리키도록 링크만 시켜둔 것. 윈도우의 바로가기와 동일. 원본파일 삭제되면 링크파일은 깜박거리며 원본 파일이 없다는 것을 알려준다.
- 하드링크
- 원본파일과 다른 이름으로 존재하는 동일한 파일. 원본이 삭제되어도 링크파일은 남았다. 원본의 내용이 변경되면 링크파일 또한 자동 변경된다.
- ln hard_source hard_link
- ln -s /tmp /var/tmp
rm
- rm [options] file_list
- rm tmp.txt
- rm -r sys_prog 전부 다 지운다. 다 지울거냐고 물어볼텐데 이걸 무시하려면 -rf 옵션
- rm -rf * 전부 다 날라가
grep
- 텍스트 파일에서 특정 문자열 찾기
- -r 하위 디렉토리에서도 문자를 찾는다.
- grep –r function_name *.c = 모든 .c 파일들에서 function_name이 포함된것을 찾는다.
tail
- 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력한다.
- 리눅스에서 오류나 파일 로그를 실시간으로 확인할때 유용
- tail test.txt = 파일끝부터 디폴트 값인 10개 행 출력
cat
- 파일이름을 인자로 받아서 이를 쭉 이어서 화면에 출력
- 파일이 하나면 그냥 출력
- cat test.txt
- cat test1.txt test2.txt
- 이외에 뒤에 concat 시키는 방법들이 존재하니까 찾아보도록
ps
- 프로세스들과 그 상태들을 보여준다.
- -ef
- 커널 프로세스를 제외한 모든 프로세스를 출력 || 풀포맷으로 보여준다. UID,PID,PPID 등이 표시tail cat find ps kill
kill
- 프로세스 종료
- kill [option] pid
- kill -9 1234
- kill -SIGKILL 1234
find
- find [options] path expression
- find . -name “_log_”
- 현재 경로에서 log 가 들어가는 파일 모두 찾기
GCC
- c프로그램 - 어셈블리 프로그램 - 오브젝트 파일 - 실행 프로그램
- preprocessor - compiler - assembler - linker
- preprocessor
- define NUM 5
- Num에 5를 대입
- -E
- define NUM 5
- compiler
- C → assembly
- gcc –Og –S sumstore.c
- sumstore.s 를 생성
- Assembler
- assembly → object
- -c
- sumstore.o 를 생성
- linker
- gcc
- disassembler
- objdump –d a.out
- -o : output option
- gcc -o test test.c
- gcc test.c -o test
- -o 옵션이 없으면 output file 이름은 a.out이 된다.
- -D : macro option
- Example)$gcc–ohelloworld–DMAXLEN=255helloworld.c
- -DMAXLEN=255==#defineMAXLEN255
- -ㅣ
- 헤더파일 제공
- gcc –c helloworld.c -Iinclude
- -g 디버깅을 위한 툴을 추가해준다.
- gdb
make 추가 공부 하자
- makefile
- 스크립트 파일, 명령어들을 수월하게 사용할 수 있게 하는 파일
- gcc -o main.c func.c func2.c ….
→ makefile을 만들고..
→ make (target) 편리 - 매번 다 컴파일 하지 않고 바뀐 파일만 컴파일하는 것도 가능하게 함
- func.o 는 func.c 를 통해 만들고 main.o는 main.c를 통해 만들고… 그래서 변경점이 보이면 해당하는것만 다시 컴파일
- target: component
command
- 배쉬쉘 스크립트와 유사하다.
- Automatic variables 공부하자
'시스템프로그래밍' 카테고리의 다른 글
리눅스 파이썬 백그라운드 실행 및 로그 저장 (0) | 2023.01.14 |
---|---|
Thread, File IO, Standard IO, select, sleep, Timer, Alarm... (2) | 2022.12.27 |