Dev

단축키 - Linux, Vim

foxlee 2020. 11. 1. 19:58

cd 홈 디렉토리로 이동
cd - 이전 작업 디렉토리로 이동
cd ~username 해당 유저의 홈 디렉토리로 변경

* tip
파일 이름에 띄어쓰기(공백. 스페이스) 대신 언더스코어(_) 나 하이픈(-) 사용하자 왜? 띄어쓰기는 커맨드에서 입력시 번거로움

df -h
disk space for file system

ls 옵션
ls ~ /user 에서 ~는 홈 디렉토리를 뜻하며 홈 디렉토리와 user 내의 목록을 같이 볼 수 있음
ls -a . 으로 시작하는 파일들도 볼 수 있음(숨김파일등)
ls -l 파일. 디렉토리명 뿐만 아니라 속성까지 확인 가능
ls -lt t를 더해서 수정시간에 따른 정렬 가능
ls -lt -r 정렬 역순 (= --rerverse)
ls -l -d d를 더해서 선택한 디렉토리 내부가 아니라 그 디렉토리 자체에 대한 정보 출력(--directory)
ls -s 파일 크기순 정렬

ls 자세히 보기 정보
-rw-r--r-- 1 root root 24564 2020-11-01 11:30 dkel.png
-rw-r--r-- 파일 접근 권한
1 하드 링크 수
root 파일 소유자의 사용자 이름
root 파일을 소유한 그룹의 이름
24564 파일크기(바이트)

file
file dkel.png
dkel.png 파일에 관한 정보를 출력함



cp -i -r -u -v file1 file2
-i --interactive 덮어쓴다면 메시지 보여줌
-r --recursive 폴더 안의 내용까지 복사
-u --update 없을때나 최신버전 옮김
-v --verbose 완료 메세지 보여줌

cp file1 file2 dir1 dir1이 존재할때 파일1,2를 dir1로 복사
cp dir1/* dir2 dir2 이 존재할때 dir1 내 모든 파일을 복사

mv
cp와 유사하며 -i -u-v 옵션 사용 가능

mkdir
mkdir dir1 dir2 한번에 다수 명령 인자 허용

rm -i -r -v -f 사용 가능 --force 는 존재하지 않는 파일 삭제 확인 메세지 무시. 이 경우 interactive 옵션 무시하게 됨
rm 시 * 와일드 카드를 쓰기 전에 ls *.html 등으류 테스트 먼저 하기

ln 링크 만들기
등의 명령어들이 gui 환경에서 보다 관리가 용이함. 특히 복잡한 작업들 예로 어떤 디렉토리 내 모든 html파일을 옮기기
cp -u *.html /all_html_files
위와 같은 와일드 카드는 아래와 같음
* 모든 문자 == g* g로 시작하는 모든 파일, b*.txt b로 시작하는 txt 파일
? 모든 하나의 문자 data??? data 뒤에 세글자
[characters] characters 문자셋에 포함된 문자
== [abc]* a,b,c 로 시작하는 모든 파일
== zzz.[0-9][0-9] . 뒤에 숫자가 2개있는 파일
[!characters] characters 문자셋에 포함되지 않은 문자
[[:class:]] 지정된 문자 클래스에 포함된 문자

[:alnum:] 모든 알파벳과 숫자 문자
[:alpha:] 모든 알파벳 문자
[:digit:] 모든 숫자
[:lower:] 모든 소문자
[:upper:] 모든 대문자




cat 파일 연결
cat은 파일을 읽어서 표준 출력으로 내용을 복사함
바로 파일을 표시하거나 여러 파일을 합칠때 사용
예) movie.mpeg.001 movie.mpeg.002 movie.mpeg.003.... 있을때 순서대로 합치기
cat movie.mpeg.00* > movie.mpeg
와일드카드는 항상 정렬된 순서로 확장함
cat > lazy_dog.txt 하고 입력을 하고 ctrl+D 누르면 입력된 데이터가 lazy_dog.txt 에 출력(저장)됨


sort 텍스트 라인 정렬
ls /bin /usr/bin | sort | less
두 디렉토리에서 목록을 하나러 만들어 정렬한 것을 봄

uniq 중복줄 알리거나 생략
ls /bin /usr/bin | sort | uniq | less
uniq 뒤에 -d 를 넣으면 삭제된 내용 볼수 있음

wc 각 파일의 개행. 단어 수. 바이트 출력
wc ls-outout.txt
7902 64566 503634 ls-output.txt
ls /bin /usr/bin | sort | uniq | wc -l
2728
-l 옵션을 통해 개행 수만 볼수 있음

grep 패턴과 일치하는 라인 출력
ls /bin /usr/bin | sort | uniq | grep zip
-i 옵션 대소문자 구분 안함
-v 패턴과 일치 하지 않는 라인 출력

head 파일 첫부분 출력 -n 5 첫 5줄
tail 파일 마지막 부분 출력
tee 표준 입력 읽고 표준 출력 및 파일에 쓰기

표준 출력 재지정
ls -l /usr/bin > ls-output.txt
ls -l /usr/bin >> ls-output.txt 이어쓰기

ls -l /bin/usr > ls-output.txt 현재 없는 디렉토리라서 에러가 뜬다. 에러가 뜨기 전에 ls-output.txt(원래 내용 있음)를 처음부터 다시 쓰는데 에러가 발생하여 파일 내용만 지워짐

표준 에러 재지정
ls -l /bin/usr 2> ls-output.txt
ls -l /bin/usr > ls-output.txt 2>&1
2는 표준에러 1은 표준 출력으로. 디렉토리가 존재하지 않아서 에러가 발생할때 표준출력으로 재지정해줌. 순서도 중요하다. 표준 출력 지정 후 표준 에러 지정해야함

최근에는 표준 출력과 표준 에러를 단일 표기법으로 재지정 가능함
ls -l /bin/usr &> ls-output.txt

출력을 원치 않는 경우
ls -l /bin/usr 2> /dev/null

chmod
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx
chmod 600 foo.txt
-rw------
chmod 777 foo.txt
-rwxrwxrwx



 

cmd cursor

  • Ctrl+A or Home: Go to the beginning of the line.
  • Ctrl+E or End: Go to the end of the line.



vim(vi 의 확장판)
명령어 모드
커서의 이동
L 오른쪽
H 왼쪽
J 한줄 아래
K 한줄 위
0 현재 줄 처음으로
$ 현재 줄 마지막으로
W 다음 단어
B 이전 단어
ctrl F 페이지 아래로 page down key
ctrl B 페이지 위로 - page up key
G 파일의 마지막줄
30G 번재줄
a 는 그 문장의 마지막에서 입력모드로 변경됨
o 현재줄 아래에 빈줄 추가
O 현재줄 위에 빈줄 추가
x 현재 문자 삭제 3x 현재 문자 포함 다음 2개 문자

dd 현재줄 삭제
5dd 현재 줄부터 총 5줄
dw 현재 위치부터 다음 단어 앞까지
d$ 현재 위치부터 현재줄 끝까지
d0 현재 위치부터 현재 줄 맨 앞까지
dG 현재부터 끝까지
d20G 현재부터 20번재줄까지

위에 d(잘라내기) 대신 y 를 쓰면 복사할수 있고
원하는 위치에 p 로 붙여넣기

검색
f - 줄에서 검색 fa를 누르면 a문자를 찾아 이동 세미콜론을 입력하명 반복 검색 가능
/Line 파일내에서 검색하고 n을 누르면 다음 단어로 이동

검색하면서 치환
:%s/Line/line/g
: 명령
% 작업 수행 범위로 전체이고. 부분은 1,5 1번 줄부터 5번 줄 2,$ 2번줄부터 끝까지
s 작업의미로 검색하며 치환
Line 을 line 으로 변경
g 전체를 의미
gc 로 하면 확인 메시지 표시
확인 메시지 종류
y 치환 실행
n 이번 치환 건너뛰기
a 전체 치환 실행
q 치환 중단
l 이번 치환 후 정료 last
ctrl E ctrl Y 스크롤 이동하여 치환 내용 확인

다중 파일 편집
vi foo.txt ls-output.txt
:n 다음 파일로 전환
:N 그 전 파일로 돌아가
:buffers 수정중인 파일들의 목록
:buffers 2 목록의 2번으로 이동

현재 파일의 전체 내용을 다른 파일에 저장
vi ls-output.txt
:r foo.txt (:r = read)
ls-output 파일에 foo 파일이 이어쓰기된다

저장후 닫기. ZZ 는 :wq 와 :q 의 결합
:w foo1.txt 다른 이름 저장