Linux command with putty

감귤맛젤리·2023년 6월 6일
0

putty

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를 해주면 된다.

password 변경

패스워드는 /etc/passwd에 암호화된 형태로 저장되는데, 최근에는 /etc/shadow에 존재한다.

$passwd
Enter the current login password :    //현재 패스워드 입력
New passwd:    //새로운 패스워드 입력
Re-enter new passwd:    //새로운 패스워드 재입력
$_

파일명 & 경로명

1) 파일명
대소문자를 구분한다.
.으로 시작하는 파일명은 시스템파일에 많기 때문에 사용하지 않는다. 보통 hidden file명 앞에 .이 붙는다.
2) 경로명
절대경로는 루트 디렉토리로부터의 파일위치를 말한다. 루트 디렉토리(/)부터 시작된다.
상대경로는 현재 디렉토리로부터의 파일위치를 말하는데, 현재 디렉토리는 (.) 생략이 가능하다. 부모레벨path는 ..이다. 루트의 다른 쪽에 있으면 우선 루트 디렉토리로 이동해준 후 넘어간다.
로그인 순간 현재위치가 자신의 home directory이다.

명령어들

pwd

현재 디렉토리(작업 디렉토리) 확인

Manual Page : man & man [-k]

man ; man command_name

온라인 도움말 종류

man [-k] ; man -k keyowrd_of_command

command 이름은 아는데 사용법을 모를 때

-k는 키워드 검색이다.

  • 숫자 : (1) command (shell command) (2) system call (3) library function
  • [ ] : option ; - 특정기능 추가
  • FILE : 파일이름이 위치하는 곳
  • ... : 반복 (반복 시)
  • 종료 : q키를 누르면 된다.

cat ; cat [-n] FILE

표준 입력(키보드) 또는 파일로부터 입력 받아 이를 표준 출력(화면)에 표시
> 리다이렉션을 통해 파일 생성에 사용할 수 있다.

-n : 출력에 줄 번호 표시 옵션

한줄 쓰면 그다음줄에 출력해주는 것을 알 수 있다.

ctrl + c

작업 완료 이전에 프로세스를 강제 종료시킨다.

ctrl + d

입력을 끝낸다. 정상종료!

ctrl + c 하나 ctrl + d 하나 > 사용 시 파일에 저장할 수 있다!

ls ; ls [-adlR][FILE | directory]

디렉토리 안에 무슨 파일이 있는지 알고 싶을 때

-a : 숨겨진 파일 나열 (hidden file)
-d : 디렉토리 자체의 상세 정보
-l : 허가정보, 소유권, 최종변경일자를 표함하는 긴 목록 제공
-R : 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 제공한다. 디렉토리 안에 디렉토리가 있으면 그 파일들까지 알려준다는 뜻!
디렉토리의 색깔을 보라색이다!
ls /home : /home 아래 디렉토리 알고 싶을 때 (ls directory_name 쓴 경우이다)

mv

파일의 이름 변경 및 이동

mv [-i] old_File new File ; old_File을 new File로 이름 변경

mv [-i] FILE directory ; FILE을 directory로 이동

mv [-i] old_dir new_dir ; old_dir을 new_dir로 이름 변경

이미 존재하는 파일(디렉토리)이름
-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로 이름변경해 이동한다. 즉, 이동과 이름 변경 둘 다 실행할 수 있다.

mkdir ; mkdir directory_name

디렉토리 만들기 ( 현재 작업환경에)

! cat

cat은 일반파일 생성할 수 있다! 디렉토리 생성은 mkdir을 이용해줘야한다!

cd ; cd directory_name

다른 디렉토리로 이동

디렉토리를 입력하지 않은 경우에는 사용자의 홈 디렉토리로 이동한다.

cp

파일 복사

cp [-i] old_File new_File

cp [-r] old_directory new_directory

-i : 이미 존재하는 경우를 위한 확인이다
-r : old_directory에 있는 모든 파일과 서브디렉토리를 재귀적으로 new_directory에 복사한다.

디렉토리 전체를 복사하고 싶으면 -r 꼭 써주기! 비어있으며 상관없지만..

cp test.txt test2.txt
ls 결과 : text.txt test2.txt -> 말그대로 복사하는 것!

rmdir ; rmdir directory_name

디렉토리 제거 - 디렉토리가 제거되기 전, 그 디렉토리 내에 있는 모든 파일은 제거되어야 한다.

rm -r : 디렉토리와 그 내용을 모두 재귀적으로 제거한다.

rm ; rm [-fir] FILE

파일의 삭제

-f : 어떤 에러 메세지나 지시 사항도 나타나지 않는다 - 원래는 지울거냐고 묻는데 안묻고 지워준다
-r : 서브디렉토리를 포함한 모든 내용을 재귀적으로 삭제한다
-i : 파일 삭제 전 사용자에게 확인 요구 - 파일 삭제 시에는 적어주는게 좋다!

File의 attribute(meta data)

$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 : 디렉토리 파일

File의 access permission (접근권한)

rw-r--r-x
usergroupothers(소유자, 그룹 아닌 그 외)

디렉토리와 파일의 접근 권한 차이

r(읽기 권한)w(쓰기 권한)x(실행 권한)
일반 파일(-)파일 내용 보기파일 내용 변경파일의 실행
디렉토리 파일(d)ㅣls로 디렉토리 내용 보기디렉토리 아래에 파일 추가/삭제cd로 디렉토리에 들어감

꼭 구분해서 알아둘 것!
기본 접속 chmod 시 homedirectory 웬만해서는 이용하지 말 것!

chmod ; chmod [-R] mode File

access permission 변경

-R : 디렉토리내에 있는 파일 모드를 재귀적으로 변경

mode:

대상 + 허가권
대상 - 허가권
대상 = 허가권 ; 이렇게 셋팅할거다 의 의미
대상 : u(user) g(group) o(others) a(all)
허가권 : r(read) w(write) x(execute)
! 허가권을 조합해서 사용할 수 있다. u = rwx 이런식으로! 
! all은 생략할 수 있다! 생략하면 all

숫자를 이용한 파일의 허가권 설정

usergroupother
설정rwxr-x---
2진수111101000
10진수750

2진수를 10진수로 바꿔주면 된다!

more ; more FILE

텍스트 파일의 내용을 한 화면에 출력한다.

내용이 길 경우 한 화면씩 끊어서 보여준다는 점에서 cat과 다르다. cat은 1페이지 이상이면 맨 마지막 페이지만 보여준다. more은 한 화면씩 끊어서 보여준다. %뒤의 숫자는 파일의 어디까지 보여줬다고 나타내는 것이다.
Pipe(|)를 이용해서 다른 프로그램들과 동시에 사용되기도 한다.

date

시스템의 날짜, 시간 표시 빛 변경(변경은 관리자만이 할 수 있다)


변경은 not permitted인 것을 알 수 있다.

cal

달력을 출력한다

wc ; wc [-lwc] File

파일 내 단어 수 새기 (word count)

-l : 라인 수
-w : 단어 수
-c : 문자 수

w ; w[options][user name]

현재 시스템을 사용중인 사용자들에 대한 정보를 출력한다.

gcc ; gcc [option] FILE

c 컴파일러

파일 이름은 반드시 .c로 끝나야 한다. 여기서 FILE은 c언어로 작성한 소스파일이다.
컴파일 결과 실행 파일 이름이 a.out이 된다. (자동적으로) 지정안하고 계속 실행파일을 만들면, 계속 a.out으로 나오기 때문에 덮어쓰게 된다. 그러니 이름은 바꿔주는것이 좋다.
-o filename으로 옵션을 주면 실행파일 이름을 filename으로 바꿀 수 있다.
gcc를 통해 컴파일 후 실행을 할 수 있다.
./a.out : 현재 디렉토리에 있는 a.out을 실행한다는 명령어이다.

컴파일 결과 a.out 실행파일 만들어진 것 확인


이미 hello.c 라는 .c로 끝나는 파일을 만든 후 각 명령어 실행해보기
gcc hello.c를 통해 a.out이라는 실행파일을 만든 후, gcc -o newhello hello.c로 한번 더 실행파일을 만들면 a.out이 newhello로 변경되는 것이 아니라 아예 새 실행파일이 또 만들어진다는 의미
초록색은 실행권한을 가진 파일이라는 뜻!

vi editor

vi

텍스트 에디터이다. 명령 모드와 텍스트 입력 모드가 존재한다.

$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로 돌아온경우

파일 이름이 없어서 저장이 안되는 경우

0개의 댓글

관련 채용 정보