이 글은 필자가 학교 수업(반효경 교수님의 '시스템 SW 및 실습')을 듣고 정리한 글(중간고사 전까지의 범위)입니다.
1. 명령어 정리
(ctrl+F로 검색하여 찾아볼 수 있다./ []안에 들어가 있는 부분은 조건을 다는 부분으로 원하는 조건이 있으면 추가하는 방식으로 진행된다.)
-파일 관리 부분(파일/디렉토리 생성, 저장, 삭제, 복사, 이동,수정, 압축 등등)
명령어 | 명령어 이용 | 예시 |
cd | 다른 디렉토리 이동(밑 파일 경로 내용 확인) | $ cd /home/test/temp |
pwd | 작업 디렉토리 확인 | $ pwd |
ls [-adIR] [FILE|Directory] |
디렉토리 내용 보기 -a: 숨겨진 파일 나열 -d는 디렉토리 자체의 정보 -l 허가정보, 소유권 등 긴 목록 제공 -R 해당 파일, 폴더의 내용과 서브 내용을 재귀적으로 삭제 |
$ ls //디렉토리 안 폴더 내용 보기 $ ls -l $ ls -a -l |
mkdir directory |
디렉토리 만들기 |
$ mkdir temp //temp라는 디렉토리 생성 |
mv [-i] old_FILE new_FILE mv [-i] FILE/direc Directory mv [-i] old_dir new_dir |
파일 이름 변경 및 이동 old_file을 new_file로 이름 변경 file/directory를 directory로 이동 old_dir를 new_dir로 이름 변경 -i 파일이름 존재하는 경우 확인을 위한 확인 프롬프트 생성 |
$ mv old.txt new.txt $ mv tmp temp $ mv -i new.txt temp
|
cp [-i] old_file new_file cp [-ir] old_directory new_directory |
파일 복사 -i 이미 존재하는 경우 확인 -r directory경우 모든 내용을 재귀적으로 복사 |
$ cp -i text.txt a.txt $ cp -i -r temp temp2 |
rmdir directory rm [-fir] FILE |
디렉토리 제거 파일 삭제 -f 강제 종료 -r 재귀적으로 삭제 -i 사용자에게 확인 요구 |
$ rmdir temp $ rm * //해당 디렉토리내 모든 파일 삭제 |
cat [-n] FILE |
파일을 입력받아 파일 생성 -n은 줄번호 포함하여 파일 내용 보기 |
$ cat > test //표준입력을 test에 받기 $ cat -n test // 줄번호를 포함하여 test내용 받기 |
vi |
텍스트 에디터(4번 내용 참고) |
$ vi test //test라는 파일의 에디터로 간다. $vi |
more / less FILE |
텍스트 파일의 내용을 한 화면씩 끊어서 출력한다. more은 pipe("|")를 이용해 다른 프로그램들과 동시에 사용되기도 한다. |
$ more test.txt $ less test.txt |
sort [-trbfn] FILE |
파일은 아스키코드 값에 따라 정렬(이때, 소문자, 대소문자, 공백 순으로 정렬한다.) -t: 항목분리자 명시 -r: 내림차순으로 정렬 -b: 줄 앞에 있는 공백을 무시 -f: 대소문자 무시 -n: 숫자 순으로 정렬 |
$ sort -r test1 $ sort test2 |
uniq FILE |
연속된 중복 행 제거하여 하나로 정리해준다. |
$ uniq test.txt |
grep [options] pattern FILE |
파일 내의 pattern을 찾아준다. pattern은 Regular Expression을 이용하여 표현한다. |
$ grep what temp.txt |
find 탐색위치 탐색조건 명령 {}\; |
탐색 위치에 탐색조건(type, name,시간, 최근 수정 등의 조건)을 가진 파일을 찾아, 명령을 내린다. -type: d(디렉토리), f(파일) -name -atime(최근에 살펴본 파일, 일 기준) -mtime(최근에 수정한 파일, 일 기준) |
$ find . -type d -exec{}\; //현재디렉토리(.)내 type가 디렉토리인 파일을 찾아 실행하라. $ find . -name pocket test1 -exec {}\; $ find . -atime 7 test2 -exec {}\; //7일 전에 살펴본 파일 찾아서 실행 $ find . -mtime 24 test4 -exec{}\; //24일 전에 수정한 파일 찾기 |
wc [-lwc] FILE |
파일 내 단어수 세기 -l 라인수 -w 단어수 -c문자 수 |
$ wc -lwc heart |
cmp FILE1 FILE2 |
두 파일을 비교해서 처음으로 다른 첫번째 바이트 수와 라인 수를 출력 |
$ cmp lady1 lady2 //예시 결과: lady1 lady2 differ: char 19, line1 |
compress FILENAME |
확장자 .Z로 파일 압축 |
$ compress keynote //ls시 keynote.Z가 존재함을 알 수 있다. |
gzip |
확장자.gz로 파일 압축 표준 compress보다 압축률이 좋다. |
$ gzip foo.txt |
tar [options] NAME(묶는 결과 파일 이름) file1 file2 file3 ... |
여러 파일을 묶어서 하나로 만드는 기능, 압축은 하지 않는다. options에 cvf시 묶고, xvf는 풀어준다. |
$ tar cvf files.tar foo.txt bar.txt $ tar xvf files.tar |
split [-lbC] [FILE [prefix]] |
하나의 파일을 일정한 기준으로 여러개의 파일들로 나눈다. 파일의 이름이 주어지지 않으면 표준입력(키보드)에서 입력을 받는다. 결과 파일 이름은 [prefix]aa, [prefix]ab...으로 되며, prefix를 넣지 않으면 xaa, xab, xac.... 방식으로 저장된다. -l: 결과 파일 하나의 라인수 -b: 결과파일 하나의 byte수 -C: 라인 단위로 저장하면서 결과 파일의 최대 byte수 |
$ split -l 10 .bashrc bash //.bashrc가 파일 이름,bash가 prefix가 되어 저장시에 bashaa bashab .....방식으로 저장된다. |
- 사용자, 프로세시 관련
명령어 | 명령어 이용 | 예시 |
passwd | 패스워드 설정 및 변경 | $ passwd |
logout | 사용자 로그아웃 | $ logout |
id username | 해당 username(사용자)의 정보를 출력 | $ id user3 |
finger [-ls] username |
사용자의 정보 출력 username없으면 현재 로그인한 모든 사용자들의 정보 출력 -l: long form -s: short form |
$ finger -l user10 |
chfn |
사용자(현재 이용하는 나)의 finger수정(change finger) |
$ chfn |
w | 현재 시스템 사용중인 사용자들에 대한 정보 출력(who) |
$ w $ w user2 //사용중인 user2만의 정보 출력 |
logname | 현재 사용자의 login name을 출력 | $ logname |
su username | 사용자변경(switch user) |
$ su //유저이름을 넣지 않으면 root로 인식한다. $ su user3 |
write/talk username |
write: 다른 사용자에게 메시지 보내기 talk: 다른 사용자와 1대1 대화 |
$ write user18 $ talk user30 |
wall FILE | 모든 사용자에게 파일 전송 |
$ wall hi.txt |
mesg | 다른 사용자로부터 메세지 수신 기능 여부 설정 |
$ mesg y //허가함 $ mesg n //허가하지 않음. |
ps [options] |
현재 동작중인 프로세스들 출력 -x는 자신이 사용하는 모든 프로세스 출력 -aux는 시스템에서 동작하는 모든 프로그램 출력 |
$ ps $ ps -x $ ps -aux |
jobs |
current shell 아래 수행중인 process를 모두 보여준다. |
$ jobs |
top [options] |
CPU 사용량이 top인 프로세스들 출력 -c: command list 전체를 보여준다. -i: idle상태와 zombie 프로세스는 무시 |
$ top |
kill processid |
해당 프로세스id를 가진 프로세스를 강제종료한다. |
$ kill 334 |
nohup FILE & |
로그아웃 이후에도 계속 프로세스가 수행되도록 한다. command 뒤에 &를 붙이면 background로 process 수행 |
$ nohup ./a.out & |
nice FILE |
프로세스를 매우 낮은 우선순위로 실행 |
$ nice ./a.out |
fg job_id |
job_id의 프로세스를 foreground로 전환 |
$ fg 445 $ fg //그냥 fg만 쓰면 최근에 멈춘 process를 foreground로 전환한다. |
bg job_id |
job_id의 프로세스를 background로 실행 |
$ bg 445 |
-프로그램 실행시
명령어 | 명령어 설명 | 예시 |
gcc [-o filename] FILE |
c 컴파일러로, FILE이 c언어여야 한다.(.c로 끝나야 한다.) 컴파일시 FILE.out으로 저장되며, 따로 이름을 지정해주고 싶으면 -o filename을 통해 filename.out으로 해준다. |
$ gcc -o test temp.c |
ar rcs libname.a a.o b.o c.o |
static library 파일로 만들시, 이 명령어를 바탕으로 설명할 때, a.o, b.o, c.o가 libname.a에 들어가 라이브러리를 만들게 된다. |
$ ar rcs statlib.a test1.o test2.o test3.o |
gcc [-o filename] FILE1 FILE2 |
shared library파일로 만들 때, FILE1은 c파일, FILE2는 .a(static library)형식으로 하여 filename으로 컴파일 된다. |
$ gcc -o result test1.c statlib.a |
-기타 그외..
명령어 | 명령어 설명 | 예시 |
mancommand_name man -kcommand_name |
온라인 도움말 정보 -k는 키워드 검색 |
$ man cp $ man -k copy |
chmod [-R]mode FILE |
Access permission 변경(3번 내용 참고) -R는 재귀적으로 권한 설정(설정 디렉토리 안에 있는 파일들 다 권한 설정해버림) |
$ chmod g+w data.txt $ chmod -R uo=rx temp $ chmod 750 heart |
mail [-v] [-ssubject]address |
이메일 보내기 -v 메세지 전송여부 확인 -s subject에 제목 지정 address: 이메일 주소 , 동일 서버 상 로그인 이름 |
$ mail -v -s hi abc@gmail.com |
date/cat |
시스템의 날짜, 시간 표시 및 변경 (변경은 슈퍼유저만이 할 수 있다.) |
$ date $ cal |
echo $argumentname |
argument의 값을 띄워준다. |
$ name = hi $ echo $name //결과: hi |
2. 파일명 및 경로명 설정
절대경로와 상대경로로 나뉘어 설정된다. 절대경로는 root부터 시작하는 경로를 말한다. 상대경로는 현재 사용자가 위치해있는 경로를 바탕으로 한 경로를 나타내며, .는 현재 디렉토리, ..는 부모 디렉토리를 말한다.
3. Access Permission 읽기 및 mode 정의
기본적으로 정의할 때, user(u), group(g), others(o) 총 세 그룹(다 합쳐서 all이라고도 함)을 위한 허가권을 주며, 허가권은 r(read), w(write), x(execute)로 3개로 나누어서 접근권을 준다. 그룹에 관한 허가권을 순서대로 나타내며, 예를 들면
rw-r--r-x 를 보면 3개씩 허가권을 끊어서 보면 user에게 rw-로 r,w권한을 주지만 x는 주지 않고, group는 r--로 r권한을 주지만, w,x권한은 주지 않는다. others는 r-x로 r,x권한을 주고, w권한을 주지 않는다.
이에 적용하여 mode를 작성할 때 주고자하는 대상에 허가권을 각각 주는 방식으로, 대상+(주고)/-(빼고)/=(일방적으로 정의) 허가권인 방식으로 예를 들면 go-r이면 g(group), o(others)에게 r권한을 빼는 것을 볼 수 있다. 대상이 없이 +x이렇게 나오는 경우는 모두(user, group, others)에게 권한 x를 주는 경우로 해석할 수 있다.
mode설정은 설정과 더불어 숫자로 나타낼 수 있다. 이도 한숫자씩 각각의 그룹에게 적용하면 된다. 예를 들어 701이면 user에게 7, group에게 0, others에게 1로 이진수로 나타내면 111,000,001로 해석하면 rwx-----x 이 형태로 Access Permission에 적용할 수 있다.
4. vi editor
텍스트 에디터로써, 명령모드와 텍스트 입력 모드가 존재한다. 명령모드는 키보드를 마음대로 제어할 수 없고, 텍스트 입력모드는 키보드로 파일 수정시 자유롭게 움직이며 작성할 수 있다. 명령 > 텍스트모드는 i로, 텍스트모드 > 명령모드는 ESC로 작동된다.
명령모드는 커서이동을 k(위),j(아래),l(오른쪽),h(왼쪽)으로 하면서 삽입하게 되며, 파일을 저장하거나 종료하고 싶을 때 :w로 저장, :q로 수행 종료, :wq로 저장하고 수행 종료할 수 있다. :q!를 사용하면 강제적으로 종료하게 된다.
5. foreground, background
foreground: 현재 터미널에서 수행하여 표준입출력(키보드)이 가능하다.
background: 터미널 이면에서 수행한다.
5. 추가 키보드 명령
Ctrl +C: 프로세스의 종료 (cat수정할 때나 foreground process시에 사용된다.)
Ctrl + D: 입력 끝냄(cat에 주로 쓰이며 저장의 의미도 내포함.)
Ctrl+Z: foreground process의 일시중지
'Undergraduate lectures' 카테고리의 다른 글
[소프트웨어] 소프트웨어공학 정리 (0) | 2020.12.18 |
---|---|
[데이터베이스] 빅데이터응용 정리 (0) | 2020.12.18 |
[Database] 전체 기본 개념 정리 (0) | 2020.07.18 |
[운영체제] 중간/기말고사 틀린 문제 정리 (0) | 2020.07.04 |
[컴퓨터구조] ARM 명령어 정리 (0) | 2019.10.24 |