goorm 8일차

박경현·2022년 8월 10일
0

명령어 이해하다가 머리 터질뻔 했다..ㅋㅋ
\그만큼 유용하고 핵심적인 것들이라서 자주 사용하고 손으로 익혀놓자!
h,j,k,l (왼쪽 아래 위 오른쪽)방향키 한번 혁신적이네,,,

리눅스는 90년대 초반에 나왔다! -> 이때 키보드는 방향키가 없었다 -> 그래서 리눅스명령어는 문자 키로 조종하는게 많다.

파일 읽기


(일반 파일인데 실행권한이 있다 => 그러면 바이너리 파일!!)
(ls -lF 로 확인해보면 알수있다!! )

파일 확인 -> cat, more, less

텍스트 파일에 대하여 파일내용 확인 명령어 -> cat, more, less 다 명령 수정 불 가능!!

cat 명령어 - 텍스트 파일 전체 내용 출력

	cat [옵션] 텍스트 파일
		-n:줄번호 출력 -> 앞에 1부터 줄마다 번호를 붙여서 알아보기 쉽게 해줌
		-A: 제어문자 출력 ->  실제 출력되지 않고 특정 기능을 갖는 문자!
				 \n이런거! -> line feed (줄바꿈)+ carriage return(해당 라인 홈위치로 이동), 엔터키 입력
				\n은 터미널에서는 $라고 특수하게 표기함!
				^I  는 \t를 표현한다

more 명령어 - 텍스트 파일 내용을 페이지 단위로 출력

	more <텍스트 파일> -> space가 한장씩, Enter가 한 줄씩 아래로 내려감!
		q는 종료, /검색어 - 해당 검색어로 검색
	파일 처음부터 끝방향으로만 가는게 가능!! -> 이전 으로 갈 수가 없다!!

less 명령어 - 텍스트 파일내용을 페이지 단위로 출력하고 이전/이후 가는게 자유로움

	spacebar - 페이지 단위이동
	j키, 아래 방향키 - 다음 라인으로 이동
	k키, 위 방향키 - 이전 라인으로 이동
	ctrl + b키 - 예전 페이지로 이동

head 명령: 파일 첫 부분에 일정 크기 내용 출력

	head <텍스트 파일> - 10줄 쌕 나옴
	-<라인수> 

tail 명령: 파일 마지막 부분 일정 개수의 내용 출력

	tail <텍스트 파일> - 10줄 씩 나옴
	-<라인수> 
	-f: 파일 내용 출력을 종료하지 않고 주기적으로 파일 내용 출력 
		-> log 파일 내용(서비스를 제공하는 서비스 상태를 저장, 내용을 추가할때 끝으로 추가되기 때문에) 확인시 유용 
        

텍스트 파일 생성 - touch, ln, ln-s

(바이너리 파일은 직접 생성하기 빡셈)

touch 명령

	새로 생성시 0 byte 크기의 텍스트 파일 생성
	기존 파일의 최종 수정 시간 변경, 파일 내용 변경은 없음

	touch<텍스트 파일>

ln 명령

	하드 링크(hard link)파일과 심볼릭 링크(symbolic link 또는 soft link)파일 생성
	ln<원본파일명><하드링크 파일명>

하드링크 파일 => ln

		원본 파일에 대한 복사본
		원본과 동일한 내용을 갖는 파일
		원본 파일과 inode 번호가 동일—>> 이게 세상 중요!!
		하드 링크 파일이 생성되면 inode block의 하드 링크수가 증가
		원본 파일에 변화가 생기면 하드링크 파일도 변화! 
		원본 파일 삭제 되도 하드링크 파일 그대로 존재
		원본 파일에 대한 복사본 성격 여러개 생성 가능
		하드링크파일을 변화 시키지 않음!! -> 변화는 가능함

		하드링크 파일은 파일 생성할때 1로 표현 되어있는데 이건 하드링크가 없다는 뜻!!
	

심볼릭 링크 => ln -s

		원본 파일에 대한 링크 정보만 저장한 파일 ->> 이게 세상 중요!!
		원본 파일과 inode번호가 다르다.
		원본 파일 내용 변화와 관계 없다.
		원본 파일이 삭제 되면 심볼릭 링크파일은 원본 파일에 대한 링크만 가지고 있으므로 원본 파일을 찾을 수 없다.
		파일 종류 문자로 l 을 사용
		windows O/S의 바로가기와 유사한 기능으로 사용한다.
		파일의 사이즈가 작다!

		ln -s <원본파일명><심볼릭 링크 파일명>
		third/ls -lF => ./my-ls -lF 라고 심볼릭 링크로 바로가기를 해서 실행할 수 있다!
		원본파일이 mv로 이동해버리면 오류가 뜬다 -> 찾을 수가 없어서!

-> 텍스트 파일은 문서편집기를 사용하고 바이너리 파일은 컴파일러를 사용하여 생성한다!

문서 편집기(텍스트편집기)

linux 텍스트 편집기

	행(라인) 단위 편집기 - 라인 단위로 문서 내용 입력과 편집 수행
		ed - 사용안함
		ex - 사용안함
		sed - 스트림 편집기

화면 단위 편집기 - 문서를 화면에 표시하고 커서 이동을 통해 문서 내용 입력 및 편집 수행

vi/vim(vi확장판 그냥 vi 쓰면 됨)

  • linux 기본편집기 다른 것들

    			nano - 배포판에 따라 설치 필요 - ^이게 ctrl임!!
    
    			emacs - GNU편집기, 설치 필요
    			TeX - 수식 편집기, 설치 필요
    
    		GUI편집기
    			GUI만 마우스 사용가능!!!!
    			gredit - linux GUI 기본 편집기 -> 메모장인듯
    			리눅스에서 터미널에 gedit이나 검색을 gedit하면 나옴!
    		

VI편집기

linux 기본 편집기 
실행 파일 크기가 작다
화면 단위 편집기능 제공
단축키를 이용하여 편집 및 에디터 기능 수행
명령 모드와 편집모드로 구분
단축키를 사용하여 편집함 으로서 편집속도 빠르다
처음에는 사용방법 익히는데 조금 걸림;;
		

vi 실행

	vi- vi실행, 편집할 파일은 별도로 지정하지 않음
	vi <파일명> - 지정한 파일을 vi로 읽어서 실행
			
	명령모드 : 문서 편집이나 파일 관련 명령 입력 모드,
			명령모드 진입은 esc로 가능-> : 적고 적으면 됨
				
	편집모드 : 실제 내용 입력 및 편집 모드

vi 종료
:q -> 현재 편집내용에 대한 저장이 필요한 경우 종료 되지 않음
:q! -> 강제 종료

명령 모드와 편집 모드 전환

	명령 모드에서 편집 모드 전환 -> 편집 모드에서 사용하는 단축키 입력

	편집모드에서 명령모드 전환 -> esc입력후 :(colon)  또는 /(slach)누르고 명령 하기
			

편집모드 단축키

방향키(이게 제일 빡셈,, asdw로 만들어주지 ㅋㅋㅋ)

		편집하고 esc로 바꾸면 이 방향키가 먹는다!!!!
		편집모드 상태에서 이동 -> 방향키를 이용하여 수행 , 키보드의 h,j,k,l키 사용
			h -> 왼쪽
			j -> 내려가기
			k -> 올라가기
			l -> 오른쪽

내용입력 (치다가 한칸 뒤로 가게 되는데 그때가 esc 눌러서 명령모드로 바뀐걸 나타냄!)

		i 키 - 현재 커서 위치
		a 키 - 현재커서 다음에 입력 -> 뒷 내용 안사라짐!
		o 키 - 현재커서 다음줄에 입력 -> 엔터가 되버림!
		I 키 - 현재 줄 Home위치에서 입력 -> 현재줄의 맨 처음으로 감!!
		A 키 - 현재 줄 end 위치에 입력 -> 현재줄의 맨 마지막으로 감!!
		O 키 - 현재 줄 이전 줄에 입력

내용수정

		r 키 - 현재 커서 위치 내용 수정, 한 번만 수정 한글자 수정! -> 자동으로 명령모드로 바뀜
		R 키 - 수정 상태 진입, ESC 키 입력전까지 수정 상태 유지

내용삭제

		x 키 - 한글자 삭제  <숫자> x 키 - 숫자만큼 글자 삭제 
		dd 키 -  줄 단위 삭제 <숫자> dd키 - 숫자 줄만큼 삭제
		D 키 - 지금 키부터 앞에 전부를 다 삭제

내용복사

		yy 키 - 줄 단위 복사 <숫자> yy - 숫자 만큼 복사
				
		v 키 - 범위 지정 
		y 키 - 범위 지정 내용 복사
		d 키 - 범위 지정한 부분 삭제 후 저장해놓음
		p 키 - 붙여 넣기

내용 이동

	dd(잘라내고 저장) 키를 이용하여 삭제 후 원하는 위치로 커서 이동 후 p키

검색 및 바꾸기

		/<검색 문자열> - 현재 커서 위치 이 후로 검색
				n 키 - 현재 위치에서 파일 끝 방향으로 다음 검색 결과 이동 -> 다 돌면 다시 처음으로 감
				N 키 - 현재 위치에서 파일 처음 방향으로 검색 결과 이동

		:s/<문자열1>/<문자열2> - 현재커서 위치에서 첫번째 찾은 문자열1을 문자열 2로 변경
		:%s/<문자열1>/<문자열2> - 파일 전체에서 문자열1을 문자열 2로변경

기타 편집 키

		u 키 - undo -> 되돌리기!!
		ctrl + r 키 - redo

명령 모드 단축키

편집 내용 저장

		:w - 처음 vi 실행시 입력한 파일에 현재 편집내용 저장
		:w<파일명> - 지정한 파일명에 현재 편집 내용 저장
		:wq - 처음 vi실행시 입력한 파일에 현재 편집 내용 저장 후 vi 종료
			

새로운 파일 로드

		:e <파일명> 파일명에 해당하는 파일 로드

외부 명령 실행

		:!<외부명령> - vi실행 상태에서 외부 명령 실행 결과 확인
		:sh: 표준 shell실행, 표준 shell에서 exit 입력하면 다시 vi로 전환
		:!bash: bash shell 실행, bash 에서 exit 입력하면 다시 vi로 전환
				

vi 환경 설정

	vi 실행 환경과 관련된 여러 내용을 환경 변수에 등록하여 vi 실행시 마다 환경 변수 내용을 기반으로 작동
	set 명령을 통한 환경 변수 확인 및 변경

	변수(variable) - 메모리 공간 의미, 원하는 값 저장 및 변경가능

	환경변수(environment variable) - 명령 또는 응용프로그램 동작을 원할하게
									수행하기 위해 미리 메모리에 저장되어있는 값

	:set all - 전체 환경 변수 내용 출력 
	:set<환경변수>=값 - 환경변수 내용 변경 -> :set tabstop=4 바로 조정됨!!!
			vi의 환경이 바뀐거다!!!!!! -> 그래서 main.html도 바뀐거임
			:set number 하면 라인 번호가 나온다!


현재 vi상태에서 set명령으로 환경변수를 변경한다해도 나왔다가 다시 들어가면 감쪽같이 사라짐!

-> 별도로 환경 변수 파일을 만들어서 관리할 수 있다!
->사용자의 홈 디렉토리에 저장해두면 vi실행시 해당 환경 변수 기반으로 동작하니까
(히든파일! -> ls -a로 볼수있다!)

둘 중 아무거나 써도 상관없다
.vimrc - vi 환경 설정 파일
.exrc - vi 환경 설정 파일**

:e ~/.vimrc -> 무조건 사용자 홈 디렉토리 밑에 만들어야한다!!!!!

  • 각각의 내용들

    set number = 라인 번호 표시
    set tabstop=4 = 탭 간격 4칸
    set ai = 들여쓰기 —> 앞에서 탭 하면 그 다음줄도 자연스럽게 탭이 됨
    set si = smart indent
    set hlsearch = 검색시 하이라이트
    set nocompatible = 방향키 이동 가능
    set ruler = 상태 표시줄에 커서 위치 표시
    set title = 제목 표시
    set mouse=a = 커서 이동을 마우스로 가능하도록 설정
    set bs=indent,eol,start = backspace사용가능
    set show match = 매칭되는 괄호

셀프 피드백

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글