하드웨어와 사용자간을 연결해주는 운영체제
기호 | 설명 |
---|---|
~ | tilde, 물결, 출렁이, home - 홈디렉터리로 이동 |
` | ` |
` | back quote, back tick - 명령어 결과물 저장 |
' | single quote, " : double quote - 문자열을 출력할때 사용 |
` | |
&& | and 연산. 앞 명령어가 참일때만 뒤 명령어 실행 |
/ | 절대위치 기준 경로 (root가 시작점) |
./ | 현재위치 기준 경로 (현재 디렉토리가 시작점, 생략가능) |
../ | 현재 위치의 상위 기준 (root/home 이라면 ../는 root임) |
~/ | Home 위치 기준 |
명령어 | 설명 |
---|---|
ls | 현재 위치의 파일 목록 조회 |
cd | 디렉터리로 이동 |
touch | 이름의 0바이트 파일 생성, 파일의 날짜와 시간을 수정 |
mkdir | 이름의 디렉터리 생성 |
cp | 파일을 으로 복사 |
mv | 파일을 으로 이동 |
rm | 파일 삭제 |
cat | 파일의 내용을 화면에 출력 |
redirection | 명령어의 결과물을 에 저장 |
alias = | 명령어를 <alias_name> 으로 정의하여 쉽게 사용할 수 있도록 설정 |
ls (List segments) : 현재 위치의 파일 목록 조회**
cd (Change directory) :디렉터리 이동**
touch : 0바이트 파일 생성, 파일의 날짜와 시간을 수정
touch filename : filename의 파일을 생성
touch -c filename : filename의 시간을 현재시간으로 갱신
touch -t 202110291608 filename : filename의 시간을 날짜 정보(YYYYMMDDhhmm)로 갱신
(20211029160 => 2021.10.29.16:08)
touch -r oldfile newfile : newfile의 날짜 정보를 oldfile의 날짜 정보와 동일하게 변경
mkdir (Make dirctory) : 디렉터리 생성
<파일의 퍼미션>
8진수 | 2진수 | 권한 | 의미 |
---|---|---|---|
0 | 000 | --- | 아무 권한 없음 |
1 | 001 | --x | 실행 권한만 있음 |
2 | 010 | -w- | 쓰기 권한만 있음 |
3 | 011 | -wx | 쓰기,실행 권한 있음 |
4 | 100 | r-- | 읽기 권한만 있음 |
5 | 101 | r-x | 읽기,실행 권한 있음 |
6 | 110 | rw- | 읽기,쓰기 권한 있음 |
7 | 111 | rwx | 모든 권한 있음 |
예를 들어 '777'의 경우 이진수로 111111111이고 rwxrwxrwx라는 의미를 가지므로 파일 소유자, 소유 그룹, 일반 사용자에게 읽기, 쓰기, 실행의 모든 권한을 주는 설정이다.
명령어 정의
윈도우에서 메모장과 같은 UNIX계열의 범용 에디터
커서의 위치 중요
실행방법
$ vi 파일명
입력모드
i 커서 앞
,I - 줄 맨앞
a 뒤
,A -줄 맨뒤
,
o- 다음줄
,O - 윗줄
cc - 삭제 후 작성
,ctrl + J - 줄바꿈 삭제
r-문자 바로 바꾸기
,R - 확인 후 덮어쓰기
$-줄 맨뒤
,^-줄 맨앞
[[-행 맨앞
,]]-행 맨뒤
$vi ~/.vimrc
:vs 파일명 // 세로로 분리
:sp 파일명 // 가로로 분리
:new file 명
- vim tutorials
$vimtutor -g ko //한글판
C, C++, JAVA ...
예제 별찍기
#include <stdio.h>
2 void main()
3 {
4 int i = 0, j = 0, k = 0;
5
6 for ( i = 0; i < 5; i+=2 )
7 {
8 for ( k = 0; k < i; k+ =2)
9 {
10 printf(" ");
11 }
12 for (j = 0; j < 5-i; j ++)
13 printf("*");
14 printf("\n");
15 }
16 }
$ vi a.c
$ gcc b.c
$ echo $PATH
$ PATH=$PATH:.
$ a.out
아래는 Shell 관련 명령어
명령어 | 설명 |
---|---|
ls | 현재 디렉토리에 있는 파일과 폴더를 나열합니다. |
cd | 현재 작업 중인 디렉토리를 변경합니다. |
pwd | 현재 작업 중인 디렉토리의 경로를 출력합니다. |
mkdir | 새로운 디렉토리를 생성합니다. |
rm | 파일이나 디렉토리를 삭제합니다. |
cp | 파일이나 디렉토리를 복사합니다. |
mv | 파일이나 디렉토리를 이동하거나 이름을 변경합니다. |
cat | 파일의 내용을 출력합니다. |
grep | 지정한 문자열을 포함하는 행을 검색합니다. |
top | 시스템의 현재 상태와 프로세스를 모니터링합니다. |
ps | 현재 실행 중인 프로세스 목록을 출력합니다. |
kill | 실행 중인 프로세스를 종료합니다. |
chmod | 파일이나 디렉토리의 권한을 변경합니다. |
chown | 파일이나 디렉토리의 소유자를 변경합니다. |
ping | 네트워크 상태를 확인합니다. |
ssh | 원격 호스트에 접속합니다. |
scp | 로컬 시스템과 원격 시스템 간에 파일을 복사합니다. |
$ env
$ set
현재경로에 실행파일이 존재하더라도 PATH변수에 경로가 등록되어 있지 않다면 에러 발생
./
을 붙인 후에 실행해야 명령어 인식
$PATH=$PATH:
$echo $PATH
Symbol | Meaning |
---|---|
d | directory |
- | file |
l | softlink |
c | character device |
b | block device |
s | socket |
p | named pipe |
아래 코드는 링크되지 않은 코드예시
#include <stdio.h>
void f(int * x)
{
printf(" x = %d byte \n", sizeof(x));
}
int main(void)
{
int a[100] = {0, };
printf(" a = %d byte \n", sizeof(a));
f(a);
return 0;
}
결과 a = 40 byte x = 8 byte
A. /dev/null
B. 1>/dev/null
C. 2>/dev/null
A와 B은 같은 의미 그럼 B와 C의 차이는?
1 의 의미는 STDOUT(standard output)
STDOUT은 표준출력으로, 정상적인 메시지를 출력하고
2 의 의미는 STRERR(standard error)
STDERR은 표준에러로, 에러메시지를 출력하는것이다
다시 말해
B는 표준출력을 /dev/null로 redirection하고 (정상적인 메시지를 null로)
C는 표준에러를 /dev/null로 redirection 한다 (에러메시지를 null로)
이파일에 쓰는 모든것은 영원히 사라진다는것으로 아무것도 아닌(null) 장차파일이라고 볼수 있다(?)
어떠한 작업의 출력되는 내용을 보고 싶지 않을때, 이곳으로 그 출력을 보내버리면,
아무것도 보여지지 않게 되는것이다. 이럴때 아주 유용하게 쓰이게 된다
`find [옵션] [경로] [표현식]`
명령어 모음
조건 | 설명 |
---|---|
-name | 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음 |
-type | 지정된 파일 타입에 해당하는 파일 검색 |
-user | 해당 유저에게 속한 파일 검색 |
-empty | 빈 디렉토리 혹은 크기가 0인 파일 검색 |
-delete | 검색된 파일 혹은 디렉토리 삭제 |
-exec | 검색된 파일에 대해 지정된 명령 실행 |
-path | 지정된 문자열 패턴에 해당하는 경로에서 검색 |
-print | 검색 결과를 출력. 검색 항목은 newline으로 구분됨 (기본 값) |
-print0 | 검색 결과를 출력. 검색 항목은 null로 구분됨 |
-size | 파일 크기를 사용하여 파일 검색 |
-mindepth | 검색을 시작할 하위 디렉토리 최 |
1. 파일명으로 찾기 (-name)
#현재 디렉토리에서 test가 포함되는 파일 찾기
find . -name "*test*"
#현재 디렉토리에서 .txt 확장자 모두 찾기
find . -name "*.txt"
#현재 디렉토리에서 .txt 확장자 파일 검색 후 모두 삭제
find . -name "*.txt" -delete
#현재 디렉토리에서 test로 시작되는 파일 찾기
find . -name "test*"
#현재 디렉토리에서 test로 끝나는 파일 찾기
find . -name "*test"
2. 타입으로 찾기 (-type)
# 현재 디렉토리에서 모든 디렉토리 찾기
find . -type d
# 현재 디렉토리에서 test가 들어가는 디렉토리 찾기
find . -name "*test*" -type d
# 현재 디렉토리에서 모든 파일 찾기
find . -type f
3. 파일 크기로 찾기 (-empty, -size)
# 현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
find . -empty
# 현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제
find . -name "*test*" -empty -delete
# 현재 디렉토리에서 1024byte인 파일 검색
find . -size 1024c
# 현재 디렉토리에서 1024byte보다 큰 파일 검색
find . -size +1024c
# 현재 디렉토리에서 1024byte보다 작은 파일 검색
find . -size -1024c
# 현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색
find . -size +1k -size -10k
4. 검색된 파일에서 추가 명령 실행하기 (-exec)
# 현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -name "*test*" -exec ls -l {} \;
# 현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기
find . -type f -exec grep "test" {} \;
# 현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제
find . -name "*.txt" -exec rm {} \;
텍스트로 된 파일의 행 단위 정렬을 할때 사용되는 명령어
사용법
sort [옵션] [파일이름]
명령어 모음
옵션 | 내용 |
---|---|
-b | 처음 공백을 무시하는 옵션입니다. |
-d | 공백과 알파벳 문자 순으로 정렬하는 옵션입니다. |
-f | 대/소문자를 구분하지 않는 옵션입니다. |
-r | 내용을 비교하여 내림차순으로 정렬하는 옵션입니다. |
-c | 정렬이 이미 되어 있는 경우 정렬하지 않는 옵션입니다. |
-k | 지정한 열을 기준으로 정렬하는 옵션입니다. |
-o | 결과를 파일로 출력하는 옵션입니다. |
-u | 중복된 행을 하나의 행으로 합쳐서 출력하는 옵션입니다. |
tr 명령은 반복되는 문자 제거, 대문자 소문자로 변환, 기본 문자 바꾸기 및 제거와 같은 작업을 수행
사용법
tr OPTION... SET1 [SET2]
명령어 모음
옵션 | 내용 |
---|---|
-d | 지정한 문자셋의 문자를 삭제하는 옵션입니다. |
-s | 중복된 문자를 제거하는 옵션입니다. |
-c | 지정한 문자셋에 없는 문자만을 변환하는 옵션입니다. |
-t | 문자 변환 대상 문자셋을 지정하는 옵션입니다. |
-u | 소문자를 대문자로 변환하는 옵션입니다. |
-l | 대문자를 소문자로 변환하는 옵션입니다. |
여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령
명령어 모음
옵션 | 내용 |
---|---|
-c | 새로운 아카이브 파일 생성 |
-x | 아카이브 파일에서 파일 추출 |
-t | 아카이브 파일 내용 목록 표시 |
-r | 아카이브 파일에 파일 추가 |
-u | 아카이브 파일에 새로운 파일 추가 또는 업데이트 |
-f | 아카이브 파일 이름 지정 |
-v | 아카이브 작업 중 처리한 파일 목록 표시 |
-z | gzip으로 압축된 아카이브 파일 생성 및 추출 |
-j | bzip2로 압축된 아카이브 파일 생성 및 추출 |
-k | 파일 추출 시, 해당 파일이 이미 존재하는 경우 덮어쓰지 않음 |
-O | 추출한 파일을 표준 출력으로 출력 |
-C | 아카이브 파일을 추출할 위치 지정 |
--exclude | 아카이브 작업 시 특정 파일 또는 디렉토리를 제외 |
--remove-files | 아카이브에 추가한 파일을 삭제 |
--same-owner | 아카이브에서 파일 추출 시, 파일 소유자를 원본과 동일하게 유지 |
간단 활용예시
활용예시 | 내용 |
---|---|
tar cvf T.tar * | 현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기 |
tar cvf T.tar [PATH] | 대상 디렉토리를 포함한 모든 파일과 디렉토리를 tar로 묶기 |
tar cvf T.tar [FILE_1] [FILE_2] | 파일을 지정하여 tar 아카이브로 묶기 |
tar xvf T.tar | tar 아카이브를 현재 디렉토리에 풀기 |
tar xvf T.tar -C [PATH] | tar 아카이브를 지정된 디렉토리에 풀기 |
tar tvf T.tar | tar 아카이브의 내용 확인하기 |
tar zcvf T.tar.gz * | 현재 디렉토리를 tar로 묶고 gzip으로 압축하기 |
tar zxvf T.tar.gz | gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기 |
tar jcvf T.tar.bz2 * | 현재 디렉토리를 tar로 묶고 bzip2로 압축하기 |
tar jxvf T.tar.bz2 | bzip2로 압축된 tar 아카이브를 현재 디렉토리에 풀기 |
tar cvfw T.tar * | tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기 |
파일전송 프로토콜
사용법
$ftp [url] or [ip]
명령어 모음
카테고리 | 명령어 | 설명 |
---|---|---|
일반 명령어 | help 또는 ? | 명령어 보기. |
ls | 파일 및 디렉토리 목록 보기. shell에서 ls와 같다. | |
dir | 파일 및 디렉토리의 접근 권한과 목록을 자세히 출력. | |
유닉스쉘에서 ls -al과 같은 효과. | ||
pwd | 현재 디렉토리 위치 확인. | |
cd | Remote System에서 디렉토리 이동. | |
lcd | Local System의 디렉토리 변경. | |
파일 수신시 보관하려는 디렉토리를 변경할 때 사용. | ||
close | ftp> 프롬프트에서 원격지 시스템의 연결을 끝낸다. | |
ftp 프로그램은 종료하지 않는다. | ||
disconnect | 원격지 시스템의 접속 종료. ftp 프로그램은 종료하지 않는다. | |
quit 또는 bye | 원격지 시스템의 접속을 종료하고 쉘상태로 복귀한다. | |
환경 설정 명령어 | bin 또는 binary | binary 파일을 전송하기 위한 세팅. |
ascii | text 파일을 전송하기 위한 세팅. | |
prompt | mput 또는 mget 명령시 대화형식 처리를 무시. | |
hash | 파일의 전송상황 표시. #로 표시. | |
파일 전송 명령어 | get | 하나의 파일을 Remote System에서 Local System으로 가져 온다. |
mget | 여러 개의 Local System으로 가져 온다. | |
put | 하나의 파일을 Local System에서 Remote System으로 올린다. | |
mput | 여러 개의 파일을 Remote System으로 올린다. | |
기타 명령 | ! | 쉘로 잠시 나가 쉘명령을 수행. |
append | Local 시스템에서 원격시스템으로 파일의 전송시 이어받기. | |
bell | 명령어 수행 후 벨소리 On/Off. | |
case | 파일 전송시 대,소문자 구분을 변환. | |
cdup | 상위 디렉토리로 이동. |