OS위에 올라가는 client program이다.
TCP/IP 이용해 Destination Address(서버에 해당하는 주소) + port번호로 서버 프로세스에 접근할 수 있다.
1. ssh
프로토콜을 이용해 원격 클라이언트에서 로그인할 수 있게 하는데, ssh
가 22번 포트를 사용하기 때문에 port번호는 22이다.
2. ftp(21)
이용해 원격 클라이언트로부터 파일을 보내거나 받는다.
3. smtp(25)
이용해 메일을 보낼 수 있다.
4. http(80)
이용해 파일(혹은 프로그램)을 웹 서비스 형태로 전송해 준다.
1) ssh 이용해 로그인하려면, 서버 컴퓨터에 ssh 프로그램이 실행 중이어야 하고, 내 컴퓨터(클라이언트)에 ssh를 수행하기 위한 클라이언트 프로그램(putty)이 있어야 한다.
2) 로그인 : 클라이언트 프로그램 실행시키기 -> 서버의 이름과 port번호 지정 후 연결하기 -> 사용자 아이디와 패스워드 입력하기. IP address는 원래 숫자지만, 주소를 써도 된다. 어디로 접속할 예정인지 알려주는 것!
3) 로그아웃은 웬만해서는 해주고 끄자! $logout
혹은 exit
, ctrl + d
를 해주면 된다.
패스워드는 /etc/passwd
에 암호화된 형태로 저장되는데, 최근에는 /etc/shadow
에 존재한다.
$passwd
Enter the current login password : //현재 패스워드 입력
New passwd: //새로운 패스워드 입력
Re-enter new passwd: //새로운 패스워드 재입력
$_
1) 파일명
대소문자를 구분한다.
.
으로 시작하는 파일명은 시스템파일에 많기 때문에 사용하지 않는다. 보통 hidden file명 앞에 .이 붙는다.
2) 경로명
절대경로는 루트 디렉토리로부터의 파일위치를 말한다. 루트 디렉토리(/)부터 시작된다.
상대경로는 현재 디렉토리로부터의 파일위치를 말하는데, 현재 디렉토리는 (.
) 생략이 가능하다. 부모레벨path는 ..
이다. 루트의 다른 쪽에 있으면 우선 루트 디렉토리로 이동해준 후 넘어간다.
로그인 순간 현재위치가 자신의 home directory이다.
현재 디렉토리(작업 디렉토리) 확인
온라인 도움말 종류
command 이름은 아는데 사용법을 모를 때
-k
는 키워드 검색이다.
[ ]
: option ; - 특정기능 추가 ...
: 반복 (반복 시)q
키를 누르면 된다. 표준 입력(키보드) 또는 파일로부터 입력 받아 이를 표준 출력(화면)에 표시
>
리다이렉션을 통해 파일 생성에 사용할 수 있다.
-n
: 출력에 줄 번호 표시 옵션
한줄 쓰면 그다음줄에 출력해주는 것을 알 수 있다.
작업 완료 이전에 프로세스를 강제 종료시킨다.
입력을 끝낸다. 정상종료!
ctrl + c 하나 ctrl + d 하나 >
사용 시 파일에 저장할 수 있다!
디렉토리 안에 무슨 파일이 있는지 알고 싶을 때
-a
: 숨겨진 파일 나열 (hidden file)
-d
: 디렉토리 자체의 상세 정보
-l
: 허가정보, 소유권, 최종변경일자를 표함하는 긴 목록 제공
-R
: 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 제공한다. 디렉토리 안에 디렉토리가 있으면 그 파일들까지 알려준다는 뜻!
디렉토리의 색깔을 보라색이다!
ls /home
: /home 아래 디렉토리 알고 싶을 때 (ls directory_name 쓴 경우이다)
파일의 이름 변경 및 이동
이미 존재하는 파일(디렉토리)이름
-i
: 새로운 파일 이름이 이미 존재하는 경우를 위한 확인 프롬프트 생성한다. 같이 쓰자!!
mv A : 상대위치경로로 인식한다. 현재 디렉토리 안의 A 파일이군!!
mv /home/springcs_836/A : 절대경로로 표현이 가능하다.
mv /home/springcs23_836/A /home/springcs23_800/ : A를 800디렉토리로 이동시킨다
mv /home/springcs23_836/A /home/springcs23_800/B : 800디렉토리안의 B로 이름변경해 이동한다. 즉, 이동과 이름 변경 둘 다 실행할 수 있다.
디렉토리 만들기 ( 현재 작업환경에)
cat
은 일반파일 생성할 수 있다! 디렉토리 생성은 mkdir을 이용해줘야한다!
다른 디렉토리로 이동
디렉토리를 입력하지 않은 경우에는 사용자의 홈 디렉토리로 이동한다.
파일 복사
-i
: 이미 존재하는 경우를 위한 확인이다
-r
: old_directory에 있는 모든 파일과 서브디렉토리를 재귀적으로 new_directory에 복사한다.
디렉토리 전체를 복사하고 싶으면 -r
꼭 써주기! 비어있으며 상관없지만..
cp test.txt test2.txt
ls 결과 : text.txt test2.txt -> 말그대로 복사하는 것!
디렉토리 제거 - 디렉토리가 제거되기 전, 그 디렉토리 내에 있는 모든 파일은 제거되어야 한다.
파일의 삭제
-f
: 어떤 에러 메세지나 지시 사항도 나타나지 않는다 - 원래는 지울거냐고 묻는데 안묻고 지워준다
-r
: 서브디렉토리를 포함한 모든 내용을 재귀적으로 삭제한다
-i
: 파일 삭제 전 사용자에게 확인 요구 - 파일 삭제 시에는 적어주는게 좋다!
$ls -l heart
-rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart
필드 값 | 의미 |
---|---|
-rw-r--r-- | 접근 권한(mode) |
james | 파일 소유자의 사용자 id |
netwk | 파일의 그룹ID |
106 | 파일의 크기, 단위는 바이트 |
5월 16일 14:25 | 파일이마지막으로 변경된 시간 |
heart | 파일 이름 |
필드의 첫 번째 문자는 다음과 같이 부호화된 파일의 유형을 나타내고 있다!
-
: 일반 파일
d
: 디렉토리 파일
rw- | r-- | r-x |
---|---|---|
user | group | others(소유자, 그룹 아닌 그 외) |
r(읽기 권한) | w(쓰기 권한) | x(실행 권한) | |
---|---|---|---|
일반 파일(-) | 파일 내용 보기 | 파일 내용 변경 | 파일의 실행 |
디렉토리 파일(d) | ㅣls로 디렉토리 내용 보기 | 디렉토리 아래에 파일 추가/삭제 | cd로 디렉토리에 들어감 |
꼭 구분해서 알아둘 것!
기본 접속 chmod 시 homedirectory 웬만해서는 이용하지 말 것!
access permission 변경
-R
: 디렉토리내에 있는 파일 모드를 재귀적으로 변경
대상 + 허가권
대상 - 허가권
대상 = 허가권 ; 이렇게 셋팅할거다 의 의미
대상 : u(user) g(group) o(others) a(all)
허가권 : r(read) w(write) x(execute)
! 허가권을 조합해서 사용할 수 있다. u = rwx 이런식으로!
! all은 생략할 수 있다! 생략하면 all
user | group | other | |
---|---|---|---|
설정 | rwx | r-x | --- |
2진수 | 111 | 101 | 000 |
10진수 | 7 | 5 | 0 |
2진수를 10진수로 바꿔주면 된다!
텍스트 파일의 내용을 한 화면에 출력한다.
내용이 길 경우 한 화면씩 끊어서 보여준다는 점에서 cat과 다르다. cat은 1페이지 이상이면 맨 마지막 페이지만 보여준다. more은 한 화면씩 끊어서 보여준다. %뒤의 숫자는 파일의 어디까지 보여줬다고 나타내는 것이다.
Pipe(|)를 이용해서 다른 프로그램들과 동시에 사용되기도 한다.
시스템의 날짜, 시간 표시 빛 변경(변경은 관리자만이 할 수 있다)
변경은 not permitted인 것을 알 수 있다.
달력을 출력한다
파일 내 단어 수 새기 (word count)
-l
: 라인 수
-w
: 단어 수
-c
: 문자 수
현재 시스템을 사용중인 사용자들에 대한 정보를 출력한다.
c 컴파일러
파일 이름은 반드시 .c
로 끝나야 한다. 여기서 FILE은 c언어로 작성한 소스파일이다.
컴파일 결과 실행 파일 이름이 a.out이 된다. (자동적으로) 지정안하고 계속 실행파일을 만들면, 계속 a.out으로 나오기 때문에 덮어쓰게 된다. 그러니 이름은 바꿔주는것이 좋다.
-o filename
으로 옵션을 주면 실행파일 이름을 filename으로 바꿀 수 있다.
gcc를 통해 컴파일 후 실행을 할 수 있다.
./a.out
: 현재 디렉토리에 있는 a.out을 실행한다는 명령어이다.
이미 hello.c 라는 .c로 끝나는 파일을 만든 후 각 명령어 실행해보기
gcc hello.c
를 통해 a.out이라는 실행파일을 만든 후, gcc -o newhello hello.c
로 한번 더 실행파일을 만들면 a.out이 newhello로 변경되는 것이 아니라 아예 새 실행파일이 또 만들어진다는 의미
초록색은 실행권한을 가진 파일이라는 뜻!
텍스트 에디터이다. 명령 모드와 텍스트 입력 모드가 존재한다.
$vi // 파일 이름 없이 vi에디터 실행
$vi test // test라는 이름의 파일을 편집(혹은 생성)하기 위해 vi 실행
[i]
: 텍스트 입력모드로 전환(커서 앞에 insert)
[a]
: 텍스트 입력모드로 전환(커서 뒤에 append)
[x]
: 한글자 삭제(커서 뒤의 한글자 지움 : delete키와 동일하다)
[X]
: 한글자 삭제(커서 앞의 한글자 지움 : backspace키와 동일하다)
[d][d]
: 한줄 삭제
[:]
: 저장 모드로 전환
파일 저장 및 종료 하고싶을때는 일단은 esc
눌러 명령모드로 가기
[esc]
: 명령 모드로 전환
키 | 의미 |
---|---|
:w <filename> | filename으로 저장하고 수행을 계속한다 |
:w | 현재의 이름으로 저장하고 수행을 계속한다 |
:q | 편집한 내용이 없을 경우 수행을 종료한다 |
:wq | 현재의 이름으로 저장하고 수행을 종료한다 |
:q! | 편집한 내용을 저장하지 않고 수행을 종료한다 |
:sh | 일시적으로 쉘 프롬프트 상태로 전환(복귀 : ctrl + D) |
느낌표는 어느 키에든 붙을 수 있고, 느낌표를 붙이면 무조건 수행해야 한다! 강제적으로 한다는 뜻이다
:sh
: 잠깐 shell prompt로 이동하는 것! 윈도우 창 여러개 띄우는 것과 비슷하다고 생각하면 된다
파일이름이 없으면 저장이 안된다.
:w
만 하면 저장만 되고 계속 편집할 수 있다:sh
눌러서 shell prompt로 돌아온경우