기본 명령어
date
hostname: 호스트 이름 확인
uname: 운영체제 확인
whoami: 사용자 정보 확인
whatis 명령어 : 명렁어에 대한 간단한 설명
2.2 파일 및 디렉토리
파일의 종류
일반 파일
디렉토리 파일: 디렉토리 파일의 내용은 디렉토리가 가지고있는 파일,디렉토리인가봄
특수 파일: 물리적인 장치에 대한 내부적인 표현(프린터 출력 -> 프린터 파일에 쓰기 연산 수행)
디렉토리 계층구조
리눅스 디렉토리는 루트로부터 시작, Tree형태의 계층구조를 이룬다.
디렉토리 관련 명령
pwd
cd
which 명령어: 명령어의 절대경로를 보여준다.
mkdir 디렉토리
mkdir -p 디렉토리: 필요한 경우 중간 디렉토리를 자동으로 만들어준다. mkdir ~p ~/dest/dir1 => dest디렉토리가 없어도 만들어줌
rmdir 디렉토리+: 빈 디렉토리만 삭제가능.
ls [-aslFR] 디렉토리 파일: 지정된 디렉토리의 내용을 리스트함. (지정하지 않으면 현재 디렉토리), 파일을 지정하면 해당 파일만 리스트함
경로명
절대경로: /home/chang/test.txt
상대경로: ./test.txt 요런거
파일 관련 명령어
cat 파일명 : 파일 내용 출력. 여러개도 되고, cat > test.txt 하면 키보드로 입력받아 파일에저장도됨
more, head, tail
wc 파일명: 파일에 저장된 줄(-l),단어(-w),문자(-c)의 개수 출력
cp 파일1 파일2 : 파일1의 복사본 파일2를 현재 디렉토리에 생성
cp 파일(들) 디렉토리: 파일의 복사본을 디렉토리 내에 생성
cp -r 디렉토리1 디렉토리2: 디렉토리1을 디렉토리2로 복사. 하위파일도 복사됨
mv 파일1 파일2 : 파일1의 이름을 파일2로 변경
mv 파일1 디렉토리: 파일을 디렉토리 내로 이동.
대화형 옵션은 -i임.
rm 파일(들): 파일 삭제
rm -r 디렉토리: 디렉토리 내의 모든 파일 및 하위 디렉토리들 모두 삭제
2.3 파일 속성
파일의 이름, 타입, 크기, 소유자, 사용권한, 수정시간
일반파일(-), 디렉토리파일(d) , 심볼릭링크(l)
사용 권한
읽기(r),쓰기(w),실행(x)권한
소유자(u)/그룹(g)/기타(o) 별로 사용권한이 다름.
rwxrw-r--
사용권한 관련 명령어
chmod [-R] 사용권한 파일: 사용권한 변경. -R옵션은 하위 파일도 함께 변경
숫자로 표시: chmod 664 test.txt
기호로 표시: chmod g+w, o+rw test.txt
umask 숫자: 기본 권한 설정. 권한을 주지 않을 값을 지정해야함
umask 22 ==> 기본권한이 644 또는 755가 됨. (실행불가능한 일반파일은 최대권한이 rw-rw-rw라서 666이고 여기서 022빼면 644가됨)
chown 사용자 파일
chown [-R] 사용자 디렉토리 : 소유자 변경
chgrp 그룹 파일
chgrp [-R] 사용자 디렉토리: 그룹 변경
파일의 소유자 또는 슈퍼 유저만 변경 가능함.
2.4 입출력 재지정 및 파이프
출력 재지정: 표준 출력을 모니터에 출력하는 대신 파일에 저장. >(꺾쇠) 사용.
명령어>파일
who > names.txt
cat > names.txt
ls / > list.txt
cat list1.txt list2.txt > list3.txt : 파일 병합도 가능
출력 추가: 명령어의 표준출력을 기존 파일 뒷부분에 추가.
cat >> list1.txt
입력 재지정: 명령어의 표준입력을 키보드 대신 파일에서 받음
명령어 < 파일
표준 에러 재지정
cat x y 1>hold1 2>hold2 : 표준출력은 hold1에, 표준에러는 hold2에 출력
파이프
명령어1 | 명령어2
명령어1의 표준출력을 명령어2의 표준입력으로 바로 받는다.
who | sort
who | wc -l
2.5 후면 처리 및 프로세스
전면 처리: 명령어 실행이 끝날 때까지 쉘이 기다려주고, 명령어가 전면에서 실행됨
전면처리 ^D: 입력 종료, ^C: 강제 종료, ^Z: 실행 중단.
후면 처리: 명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수 있음.
명령어 &
find . -name test.c -print &
jobs : 후면 실행 작업 목룍을 표시
fg %작업번호 : 해당 작업을 전면으로 실행
후면처리 입출력: 파일로 저장 혹은 메일로 전달
find . -name test.c -print > find.txt &
find . -name test.c -print | mail chang &
bg %작업번호 : 전면 작업의 후면 전환
프로세스
실행중인 프로그램을 프로세스라고 함. 각 프로세스는 PID를 가짐
ps : 프로세스 확인
pgrep [옵션] [패턴]: 특정 프로세스 리스트 확인
kill PID
kill %작업번호
파일 관련 유틸리티
grep
grep 패턴 파일 : 파일을 대상으로 패턴의 문자열 검색
옵션: -i(대소문자 무시), -n(줄번호 출력), -w(패턴이 하나의 단어로 된 것만 검색), -v(패턴을 포함하지 않는 줄 출력)
정규표현식
. : 임이의 한 문자
* : 0개 이상
?: 없거나 한 글자
[ ] : [ ] 안의 문자 중 하나[Pp]attern: Pattern 또는 pattern
^: 라인의 시작
$: 라인의 끝
[^]: 괄호 한에 있는 글자가 아닌 글자. [^a-m]att: att앞에 a부터m까지 나오지않는 라인 검색
정렬
sort [-옵션] 파일: 파일의 내용을 줄 단위로 정렬.
-r: 내림차순
정렬필드 지정: -k 필드번호 ==> 필드번호에 해당하는 필드를 기준으로 함. 첫번째 번호는 1임
-n: 숫자 값에 따라 비교정렬
-t: 지정한 문자를 필드구분자로 사용.(기본은 띄어쓰기)
-o 출력파일: 정렬된 내용을 지정된 파일에 저장
비교
cmp 파일1 파일2: 두 파일이 같은지 비교. 다르면 서로 달라지는 위치 출력
diff 파일1 파일2: 두파일을 줄 단위로 비교하여 차이를 출력
링크
ln [-s] 파일1 파일2
ln [-s] 파일(들) 디렉토리
심볼릭 링크: 원래 파일의 위치에 대한 정보가 들어있어서, 원본이 삭제되면 참조 불가
하드 링크: i-node가 같아 한 파일을 수정하면 나머지 파일도 수정됨. 원본 개념이 없어지고 같은파일의 이름이 두개가 됨
(하나를 지워도 나머지 하나로 사용가능)
링크는 둘 중 하나를 수정하면 두 파일이 같이 수정됨. 파일을 공동으로 관리해야 할 때 사용
파일 찾기
find 디렉토리 [-옵션]
find . -name "*.log" -mtime +30 -perm /7000
-exec 명령 {} \;
명령어 스케줄링
cron 시스템
crontab 파일에 명시된 대로 주기적으로 명령을 수행한다.
$ crontab 파일 : crontab 파일을 cron시스템에 등록
crontab파일은 7개의 필드로 구성.
분 시 일 월 요일 [사용자] 명령
ex) chang.cron
30 18 * * * rm /home/chang/tmp/*
$ crontab chang.cron: cron 작업 등록.
ex2) 30 1 * 2,4,6,8,10,12 3-5 명령: 2개월마다 수-금까지 새벽1시30분에 명령어 실행
at 명령어 : 미래 특정 시간에 명령어가 한 번만 실행되도록 함
at [-옵션] 시간
작업제어 명령 - nohup
백그라운드 작업을 실행시킨 단말기가 종료되거나 사용자 로그아웃되어도 작업이 완료될때까지 실행시키기.
$ nohup 백그라운드 명령
$nohup find / -name passwd &
실행결과는 nohup.out파일에 저장됨
디스크 및 아카이브
$df 파일시스템
$ du [-s] 파일명: 파일의 디스크 사용량을 보여줌. (-s는 전체 합계 표시)
$ du : 현재 디렉토리의 모든 파일의 사용량 정보 표시
아카이브
tar 명령어
tar -cvf 타르파일 파일(들) : 파일들을 타르파일로 묶음
tar -xvf 타르파일 : 타르파일을 풀어서 복원
tar -tvf 타르파일 : 타르파일 내용 확인
tar -rvf 타르파일 파일: 기존 타르파일에 파일추가
파일 압축:
gzip [옵션] 파일(들)
-d: 압축해제
-l : 압축파일 안의 파일정보 출력
-r: 하위디렉토리까지 압축
$gzip -d src.tar.gz
$ tar -xvf src.tar
2.6 쉘 소개
쉘의 역할: 명령어 해석기, 사용자 인터페이스
본 쉘 /bin/sh - 가장 먼저 만들어진 쉘. 유닉스에서 기본 쉘임 $
콘 쉘 /bin/ksh - 본쉘 확장
C쉘 /bin/csh - %
Bash /bin/bash - 본 쉘을 확장하여 개발. 대부분의 본쉘 스크립트는 bash에서 정상동작함
tcsh /bin/tcsh
로그인 쉘: 로그인 하면 자동으로 실행되는 쉘.
쉘 명령어 처리
입출력 재지정 > >> < <<
파이프 |
복합 명령어
명령어1; 명령어2;
명령어 그룹
(date; who; pwd;) > out2.txt
조건 명령어 열
명령어1 && 명령어2 : 명령어1 성공시 명령어2 실행
명령어1||명령어2: 명령어1 실패시 명령어2 실행
명령어 대치
`역따옴표` 로 에워싸면, 그 명령어의 실행 결과로 대치된 후에 실행됨
$ echo 현재 시간은 `date`
$ echo 현재 디렉토리 내의 파일 수: `ls | wc -w`
Shell Escape
따옴표를 이용하여 대치 기능을 제한.
$ echo 3 * 4 = 12
요렇게 쓰면 *을 모든 문자로 해석해서 파일들이 출력됨.
$ echo "3 * 4 = 12"
$ echo '3 * 4 = 12'
싱글 따옴표는 단호하게 shell escape
쌍따옴표는 좀 기웃거려도 해석해줌 "요기안에 `명령어대치`" 넣으면 명령어 대치는 실행됨
쉘 스크립트
vi 쉘스크립트.sh
#!/bin/bash
echo 현재시간: `date`
요런식으로 작성하고
chmod +x 쉘스크립트.sh 하여 실행모드권한 주고
$ 쉘스크립트.sh 하면 실행됨
set-uid
setuid 설정된 파일을 실행하면, 실행하는 동안 그 파일의 소유자 권한을 갖게 됨.
root소유의 파일이 setuid설정되어있고 내가 그 파일을 실행하면 root권한을 갖게됨;;
권한에서 +4000하면 setuid, +2000은 setgid, +1000은 stickybit임.
$chmod 4755 file
$chmod u+s file
'2022-2 > 시스템 프로그래밍' 카테고리의 다른 글
gdb 디버거 (3) | 2022.10.14 |
---|---|
make 시스템 (0) | 2022.10.11 |
3장 - C프로그래밍 환경 (0) | 2022.10.07 |
1장 - 유닉스 리눅스 소개 (0) | 2022.10.07 |
리눅스 여러가지 명령어들 (0) | 2022.09.18 |
댓글