리눅스

디렉토리 , sh , bash , zch , vi/vim , ls , touch , cat , mkdir , mv , rm ,chmod , chown , ln , df , du

정지홍 2024. 7. 21. 14:48

디렉토리

sudo

→ 하나의 명령어에 대해 일시적으로 루트 권한을 사용하는 것

→ superUser Do

 

su

→ 현재 계정을 로그아웃하지 않고 다른 계정으로 전환하는 것

→ switch user

 

cd

→change directory

 

/ ./ ..

→ 각각 루트 경로 , 현재 위치 , 상위경로를 의미

/
#최상단

/root
#슈퍼유저의 홈 디렉토리

/etc
#시스템 환경 설정 파일. 환경 설정 파일은 프로그램 시작을 언제 어떻게 할 것인지 제어하는 파일

/mnt
#다른 파일 시스템이 파일 시스템에 연결되거나 마운트 되는 위치

/sys
#커널의 하드웨어 통제 부분

/boot
#커널 이미지

/home 
#사용자 디렉터리

/proc
#내부 커널 데이터 조회

/dev
#특수 장치 파일

/sbin
#바이너리

/bin
#바이너리

/lib
#라이브러리

/usr/bin
/usr/sbin
/usr/lib
#더 많음

sh

→ 유닉스 쉘

→ 일반 유저는 $프롬프트 사용, 루트는 #을 사용

 

bash

→ 리눅스 표준 쉘

→ 일반 유저 $프롬프트 사용, 루트는 #을 사용

 

zsh

→ sh의 확장 버전

# 사용 가능한 쉘 알아보기
cat /etc/shells

/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/bin/dash
/bin/zsh
/usr/bin/zsh
/usr/bin/fish

vi/vim

→ visual editor / vi improved

→ vi는 커서를 화살표로 이동 불가. h,j,k,l을 이용하여 이동

→ 편집 단축키 사용시 대소 문자 주의

i
# 삽입 모드

x
# 현재 커서 위치에서 글자 1개 삭제

dw
# 커서가 위치한 곳 부터 삭제

dd
# 커서가 있는 줄 삭제
# 잘라내기

u
# 방금한 명령 취소

yy
# 현재 줄을 버퍼로 복사

p
# 현재 커서 아래에 붙여넣기  

G
# 파일 끝으로 이동


:w
# 저장

:w filename
# 편집시 지정한 이름으로 저장한다.
# 원본에서 write quit를 안한다면 바뀐 내용은 반영x

:q
# 저장 안하고 종료

:q!
# !가 붙으면 강제로 수행한다.
# 강제 종료

:wq
# 저장후 종료. !붙이면 강제 저장후 종료

:set number
# 라인 넘버 표시

:숫자
# 해당 라인으로 이동

ls

-> list 

ls -l
# long을 의미
# 파일 출력을 길게 함(=자세히 출력)

ls -a
# all을 의미
# 숨김 처리된 파일을 출력

ls -al
# all long

ls -h
# human을 의미
# 사용자가 보기 편하게 파일의 크기를 단위로 출력

ls -r
# reverse을 의미 
# 파일을 거꾸로 출력

ls -s
# size를 의미

ls -t
# 최근에 수정된 파일을 맨 위로 정렬시켜 출력

ls -A path
# path에 해당되는 디렉토리의 파일 출력(.과 ..을 제외한 모든 파일)

ls -b path
# path에 해당되는 디렉토리를 알파벳 순으로 출력

ls -L path
# 심폴릭 링크의 정보를 출력

ls -n
# 파일의 소유자와 소유자 그룹을 출력. uid , gid

ls -R
# 파일들의 하위 디렉토리 파일까지 출력

touch

→파일의 날짜와 시간을 수정하는 명령어

→0바이트 파일을 생성하기 위한 명령어

# atime
# access time
# 최종 접근 시간

# ctime
# change time
# 최종 상태 변경 시간

# mtime
# modify time
# 최종 수정 시간

# stat명령어로 ctime , mtime , atime 순서대로 확인 가능

touch filename
# filename에 해당되는 파일을 터치
# 별다른 옵션이 없으니 atime , ctime , mtime 모두 변경


touch -c filename
# filename라는 파일이 있을시에만.
#파일을 생성하지 않는다.

touch -a filename
# atime , ctime만 변경

touch -m filename
# mtime , ctime만 변경 

touch -d '20xx-xx-xx 00:00:00' filename
# 지정한 시간으로 atime , mtime만 수정
# ctime은 현재 시간으로

cat

→ 연결시키다. concatenate

cat filename
# 파일 내용 출력

cat -n
# 라인 넘버도 출력

cat -b
#비어 있지 않은 라인에만 번호 출력

cat -E
# 라인 마지막에 $을 출력

cat -s
# 두번 이상 연속된 빈 라인 출력 안함 

cat -T
# tab을 ^I로 변경해서 출력

cat -v
# 줄바꿈과 탭을 제회한 문자들을 표시

cat -A
# -vET와 같다. 모든 문자들 표시 




cat > filename
# 파일 생성
# 이미 존재시 덮어쓰기

cat >> filename
# 이어쓰기 

cat source > newFileName
# 파일 복사

cat sourceA sourceB > newFile
# 파일 합치기

cat sourceA - sourceB > newFile
# 파일 사이에 내용 추가 

cat filename | more
# 페이지 단위로 출력

cat filename | grep
# 필터링

cat *
# 모든 파일 내용 출력

cat *.txt
# 측정한 확장자를 가진 파일 내용 모두 출력

# 특정 내용을 갖는 파일 생성
echo "CONTENT" >> FILE
echo "CONTENT" >> FILE
echo "CONTENT" >> FILE
echo "CONTENT" >> FILE
echo "CONTENT" >> FILE

cat > FILE << EOF
CONTENT
CONTENT
CONTENT
CONTENT
CONTENT
EOF

cat >> FILE << EOF
CONTENT
CONTENT
CONTENT
CONTENT
CONTENT
EOF

cat >> FILE << asdf
CONTENT
CONTENT
CONTENT
CONTENT
CONTENT
asdf

echo "qwer
asdf
zxcv" | tee -a FILE

mkdir

→디렉토리 생성

 


mv

→파일 or 디렉터리를 이동

→파일명울 변경

mv source dest
# dest로 이름 변경 or 이동

mv -v file dest
# file이 dest로 이동하는 과정 표시

mv -b source dest
# source가 이동시 이미 존재하는 파일이 존재하여 지워지는 것을 대비해서 백업을 생성
# backup 

mv -f source dest
# 강제로 덮어쓰기
# force

mv -i source dest
# dest존재시 덮어쓸지 물어본다

mv -n source dest
# dest존재시 덮어쓰지 않는다

 


rm

→삭제 명령어

rm name
# 삭제

rm -i
# 삭제 여부를 물어

rm -f 
# 강제로 삭제

rm -v
# 삭제 결과 출력
 
rm -r
# 디렉토리 삭제 

rm -d
# 빈 디렉토리인 경우만 삭제

chmod

→권한 수정

→r,w,x | 4,2,1

→ user , group , other

chmod 권한 파일이름
#파일의 권한 변경

UGO이용

chmod u-w testfile
chmod g-r-w-x testfile

# rwxr-xr-x
chomd 755 DIR
# rw-r--r--
chmod 644 FILE

chown

→파일 소유권 변경

chown 변경_소유자.변경그룹 file
# -R옵션 사용시 디렉토리 안에 있는 모든 파일에게 적용
ex) chown student1 file
ex) chown .student1 file
ex) chown student1.student1 file 
 
 
 
 
 chown <권한을 줄 사용자 이름> <대상 파일>
# 개별 사용자에게 대상 파일의 소유권을 준다.

chgrp <권한을 줄 그룹> <대상 파일>
# 하나의 그룹에게 대상 파일의 소유권을 줌

df

→ disk free

→ 시스템 전체 마운트 된 디스크 사용량 확인

→ h옵션으로 M,G단위로 출력 가능


du

→ disk usage

→ 특정 디렉토리 기준으로 디스크 사용량을 확인

→ h옵션 가능

 


ln

→ link를 의미. 링크 파일 생성할때 사용

→ 하드링크: 원본의 복사본을 사용하니 원본이 삭제되어도 사용가능

→ 심볼릭 링크: 바로가기 기능과 유사하며 원본 삭제시 사용 불가능


ln source linkFile
# 하드링크
# 랑크가 잘 되었는지 확인하려면 stat을 사용하여 Links를 확인
# 하드 링크 할때마다 갯수 증가됨

ln -s source linkFile
# 심볼릭 링크
# stat을 사용하면 심볼릭 파일이라고 표시됨

hard link

 

Inode

→ 리눅스 파일 시스템에서 파일과 디렉터리를 식별하고 관리하는 데 사용되는 데이터 구조

→ 각 파일이나 디렉터리는 시스템 내의 고유한 Inode를 가짐

→ Inode에는 파일의 메타데이터 정보를 저장함

→ 파일의 권한, 소유자 , 크기 , 생성 시간 , 수정 시간 , 링크 수 등이 포함

 

하드링크는 같은 Inode 번호를 공유하는 두 개의 파일을 만드는 것.

즉, 실제 데이터를 한 번만 디스크에 저장되며 디스크 공간을 절약한다.

→ 모든 링크가 삭제가 되어야 데이터 블록이 디스크에서 해제 됨

→데이터를 공유하니 한 파일을 수정하면 다른 하드 링크 파일에도 반영 됨

 


symbolic link

간접적인 참조를 하는 파일

원본 파일의 경로를 저장하니 크기가 매우 작다.

'리눅스' 카테고리의 다른 글

firewalld , bash에서 >와 >>의 차이 , tr (translate) , sort  (2) 2024.07.30
/etc/hosts  (0) 2024.07.21
group/user  (0) 2024.07.18
http요청.. wget,curl  (0) 2024.07.18
압축 tar gzip gunzip zip unzip  (0) 2024.07.18