시스템프로그래밍_리눅스/vi/gcc 명령어 정리

freakyfrog98·2022년 9월 8일
0

시스템프로그래밍

목록 보기
1/1

리눅스 프로그래밍

  • 쉘 = 유저나 다른 프로그램들이 os 와 interaction 하기 위해 활용하는 것

    • bash, zsh,csh

    • print = echo

    • 한 쉘에서 만든 변수는 그 쉘에서만 활용 가능 = shell variable

    • 모든 곳에서 공유되는 환경변수

    • 환경변수 들 모두 프린팅 = printenv

  • 환경변수 설정 +++++ 보충하자

    • source 를 해야지 쉘에 업데이트가 된다.
  • 유명한 환경변수들

  • 쉘 스크립트
  • 비교문자

  • 공부해야할 것들
    • if-then-else/case/while/for
  • vi
    • vi filename
    • 처음에는 normal mode
    • i키 눌러서 insert
    • esc를 눌러서 command mode

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

drw는 뭐야???? 찾아보기

  • 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
  • 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 공부하자

profile
반 걸음씩 이라도 가보자.

0개의 댓글