
fdisk mkfs mke2fs mkfs.xfs mount unmount eject blkid fsck e2fsck xfs_repair df dudd partprobe stat mkswap swapon swapoff free xfs_quota edquota repquota quota sequota pwd cd mkdirrmdir tree ls cp rm mv touch file locate find cat head tail more less grep wc sort cut split tr sed awk
하드 디스크의 용량이 부족할 경우 디스크를 추가로 장착해 용량을 늘릴 수 있다. 장착된 하드 디스크는 인식 여부만 확인후 파티션 작업, 파일 시스템 생성, 디렉터리 생성, 마운트 작업거치게 된다.
# 디스크 추가 작업
# 디스크 인식 여부 확인
$ fdist -l
# 파티션 작업
$ fdisk /dev/sdb
# 시스템 재부팅
$ partprobe
# or
$ reboot
# 파일 시스템 생성
$ mkfs.xfs /dev/sdb1
# 디렉터리 생생
$ mkdir /backup
# 마운트 작업
$ mount -t xfs /dev/sdb1 /backup
# 마운트 및 용량 확인
$ mount
$ df -h
# /etc/fstab 파일 등록
$ vi /etc/fstab
/dev/sdb /backup xfs defaults 1 1r
fdisk 명령어는 디스크 파티션을 확인하고 추가/삭제 하는 명령이다. 설정 후에는 반드시 재부팅 해야한다.
# fdisk 실행 시 주요 명령
p : 현재 디스크 정보 출력
d : 파티션 삭제
n : 파티션 추가
t : 속성 변경 82(Swap),83(Linux),8e(Linux LVM), fd(Raid)
w : 변경된 파티션의 정보를 저장하고 종료한다.
q : 변경된 파티션의 정보를 저장하지 않고 종료한다.
# fdisk [option][장치파일명]
# 장착된 디스크들의 파티션 테이블을 출력한다.
$ fdisk -l
# /dev/sdb 디스크의 파티션을 설정한다.
$ fdisk /dev/sdb
# /dev/sda9 디스크의 파티션의 크기를 출력한다.
$ fdisk -s /dev/sdb
mkfs 명령어는 새로운 파일 시스템을 만드는 명령으로 root 만 사용 가능하다. 파일 시스템의 유형을 지정하지 않으면 ext2로 생성된다.
# mkfs[-t fs_type] [option]
# xfs으로 파일 시스템을 만든다.
$ mkfs -t xfs /dev/sdc1
# ext4으로 파일 시스템을 만든다.
$ mkfs -t ext4 /dev/sdb1
# ext2으로 파일 시스템을 만든다.
$ mkfs -t ext2 /dev/hdb1
mke2fs 명령어는 파일 시스템을 만드는 명령으로 최근 리눅스 배포판에서 mkfs 명령 실행시 실제 사용되는 명령이다.
default 는 ext2 이다.
# mke2fs [option] 명령어
# 파일 시스템을 ex3로 생성한다.
$ mke2fs -j /dev/sdb1
# 파일 시스템을 ex4로 생성한다.
$ mke2fs -t ext4 /dev/sdb1
# RAID 장치인 /dev/md0을 ext3 파일 시스템으로 생성하고 블록 사이즈를 4096바이트로 한다. 추가로 stripe당 블록 사이즈를 32 바이트로 설정한다.
$ mke2fs -j b 4096 -R stride=32 /dev/md0
# ext3로 파일시스템을 만들고 I-node 크기를 1MB로 지정한다.
$ mke2fs -j -T largefile /dev/hda7
mkfs.xfs 명령어는 XFS 파일 시스템을 만드는 명령이다.
# mkfs.xfs [option] 장치명
# /dev/sdb1 장치의 파일 시스템을 xfs로 생성한다.
$ mkfs.xfs /dev/sdb1
mount 명령어는 보조기억 장치나 파일 시스템 등 다른 디스크를 루트경로의 하위 디렉터리로 연결하여 사용 가능하게 해주는 명령이다.
# 마운트된 목록 중에 파일시스템이 xfs인 경우만 출력한다.
$ mount -t xfs
# 파일 시스템이 ext4인 /dev/sdb1을 /mnt 디렉터리에 읽기전용으로 마운트한다
$ mount -t ext4 -o ro /dev/sdb1 /mnt
# 파일 시스템이 xfs인 /dev/sdc1을 /backup 디렉터리에 마운트한다.
$ mount -t xfs /dev/sdc1 /backup
# /home 영역을 다시 마운트한다.
$ mount -o remount /home
# CentOS.iso 라는 CD 이미지 파일을 읽기전용 및 루프백 장치로 /media 디렉터리에 마운트한다.
$ mount -t iso9660 -o ro,loop /root/CentOS.iso /midea
# 삼바로 공유된 192.168.4.70의 데이터 data 디렉터리를 /mnt 에 마운트한다.
$ mount -t cifs -o username=administrator,password='1234' //192.168.4.70/data /mnt
# /raidata 라는 파티션의 파일의 내용을 보더라도 access time 을 갱신하지 않는다.
$ mont -o noatime /raiddata
# LABEL이 /home 으로 설정된 파티션을 마운트한다. /etc/tstab에 관련 내용이 등록되어있어야한다.
$ mount LABEL=/home
# /dev/sda1 장치를 사용자 커터 설정 옵션을 부여하면서 /home2로 마운트한다.
$ mount -o uquota /dev/sdb1 /home2
unmount 명령어는 파일 시스템을 해제시키는 명령이다.
# unmount [option] 디바이스명
# unmount [option] 마운트된_디렉터리 명
# /media에 마운트된 장치를 언마운트한다
$ umount /media
# /dev/sdb1 장치를 언마운트 한다.
$ umount /dev/sdb1
# 파일 시스템이 iso9660 으로 마운트된 것들을 모두 언마운트한다.
$ umount -a -t iso9660
eject 명령어는 이동식 보조기억장치의 미디어를 꺼낼 때 사용한다.
# eject [장치명 or 마운트된 디렉터리명]
# 장치를 언마운트 한후 디스크 트레이를 연다
$ eject
$ eject /dev/cdrom
$ eject /media
/etc/fstab 파일은 파일 시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시에 마운트할 파티션 정보가 기록되어있다.
파티션 정보를 변경했거나 디스크에 추가한 경우 이 파일에 등록해야 부팅시 자동으로 마운트 된다.
/etc/mtab 파일은 현재 시스템에 마운트된 파일 시스템 정보를 담고 있다.
blkid 명령어는 블록 장치의 속성 정보를 출력하는 명령으로 UUID, LABEL 등을 확인할 수 있다.
# blkid [option] [device]
# UUID 및 파일 시스템 정보를 출력한다.
$ blkid /dev/sda1
fsck 는 ext 계열의 리눅스 파일 시스템을 검사하고 수리하는 명령이다.
# fsck [option] 장치명
$ fsck /dev/sdb3
e2fsck 는 ext2, ext3, ext4 리눅스 파일 시스템을 검사하고 수리하는 명령이다.
# e2fsck [option] 장치명
$ e2fsck /dev/sdb3
xfs_repair 는 파일 시스템을 점검 및 복구할 때 사용하는 명령어이다.
# xfs_repair [option] 장치명
# 파일 시스템을 점검 및 복구한다.
$ xfs_repair /dev/sda3
# 파일 시스템을 점검만 하고 복구는 진행하지 않는다.
$ xfs_repair -n /dev/sda3
# 파일 시스템 관련 로그를 비운다.
$ xfs_repair -L /dev/sda3
df 명령어는 현재 마운트된 디스크의 크기, 사용량, 남아있는 용량 등에 대한 정보를 출력한다.
# 마운트된 파일 시스템의 아이노드 사용량 관련 정보를 출력한다.
$ df -i
du 명령어는 특정 파일이나 디렉터리가 디스크에서 차지하고 있는 크기를 출력한다.
# 현재 디렉터리 안에 있는 모든 파일 및 디렉터리에 대한 크기를 단위로 출력한다.
$ du -h
# 현재 디렉터리의 총 사용량만 단위를 붙여서 출력한다.
$ du -sh
# 각 디렉터리나 파일별로 총 용량을 출력한다.
$ du -sh *
# /etc 디렉터리의 총 사용량을 출력한다.
$ du -sh /etc
# posein 사용자의 총 사용량을 출력한다.
$ du -sh ~posein
dd 명령어는 디스크를 이미지형태로 백업하거나 형식을 바꾸는 명령으로 텍스트 파일의 대소문자변환과 부팅 디스크를 만들때 쓰인다.
스왑파일을 만들거나 디바이스 초기화에도 사용한다.
# dd if=입력파일 [conv=conversion type] of=출력파일 [bs=][count=][skip]
- 텍스트 파일의 문자들을 대/소문자로 전환할 수 있다.
- 부팅 디스크 또는 설치 디스크를 만들때 사용한다.
- 디스크나 파티션 단위로 백업할 때 사용한다.
- 스왑 파일을 만들 때 사용한다.
- 디스크를 초기화시킬 때 사용한다.
주요항목
- if= 입력 파일을 지정한다.
- of= 출력 파일을 지정한다.
- conv= 변환하는 데이터 유형을 지정한다.
- bs= 출력되는 블록 사이즈를 지정한다.
- count= 변환되는 블록의 수를 지정한다.
- skip= 입력 파일이 시작되는 블록 번호를 지정한다.
# 현재 디랙터리에 있는 a.txt 파일의 모든 글자를 대문자로 변환하여 b.txt 파일을 생성한다.
# if 와 of의 파일명이 같아서는 안된다.
$ dd if=a.txt conv=ucase of=b.txt
# 현재 디랙터리에 있는 c.txt 파일의 모든 글자를 소문자로 변환하여 d.txt 파일을 생성한다.
$ dd if=c.txt conv=lcase of=d.txt
# 디스크 백업하고 블록사이즈는 1MB로 한다.
$ dd if=/dev/sda of=/dev/sdb bs=1M
# 내용을 그대로 옮긴다. 파티션의 내용 및 LABEL도 그대로 옮겨진다. 복사하는 대상은 복사되는 대상보다 크거나 같아야한다.
$ dd if=/dev/sda of=/dev/sdb
# 특정 디스크의 내용을 백업해 나눠 저장한다.
$ dd if=/dev/sda of=/media/disk1.img bs=1M count=620
$ dd if=/dev/sda of=/media/disk2.img bs=1M count=620 skip 621
$ dd if=/dev/sda of=/media/disk3.img bs=1M count=620 skip 1241
$ dd if=/dev/sda of=/media/disk4.img bs=1M count=620 skip 1861
# /dev/sda7을 초기화 시킨다.
$ dd if=/dev/zero of=/dev/sda7
partprobe 명령어는 변경된 파티션 정보를 반영시킬 때 사용하는 명령이다. 이 명령을 실행하면 파티션 관련 명령어를 실행한 후 바로 적용된다.
# partprobe [options]
# 파티션 정보를 갱신하고 간략하게 관련 정보를 화면에 출력한다.
$ partprobe -s
stat 명령어는파일 또는 파일 시스템 관련 정보를 출력한다.
# stat [options] 파일명
$ stat -f /etc/passwd
# /etc/passwd의 소유자, 소유 그룹, SELinux 관련 정보, 마지막 변경 시간 등을 한 줄에 하나씩 순서대로 출력한다.
$ stat -printf="%U\n%G\n%z\n" /etc/passwd
스왑은 하드 디스크의 일부를 마치 메모리처럼 사용하게 해주는 기술이다. 스왑 영역이 부족한 경우 리눅스 설치 이후에도 디스크의 남은 공간이나 파티션을 이용해 추가 설정 할 수 있다.
mkswap 명령어는 스왑 파티션이나 스왑 파일을 생성하는 명령어입이다.
# mkswap [option] file [size]
# mkswap [option] partition
# 10240k 크기의 swap file을 생성한다.
$ mkswap /swap-file 10240
# 배드블록 여부를 검사한 후 스왑파티션으로 생성한다.
$ mkswap -c /dev/sdb2
swapon 명령어는 스왑 파티션이나 스압 파일을 활성화 시키는 명령으로 스왑의 상태 확인도 가능하다.
# swap file을 활성화 한다.
$ swapon /swap-file
# partiion을 활성화 한다.
$ swapon /dev/sdb2
# /etc/fstab 파일에 설정된 스왑 영역을 전부 활성화 시킨다.
$ swapon -a
# 현재 스왑 상태를 출력한다.
$ swapon -s
swapoff 명령어는 활성화된 스왑 파티션이나 스왑 파일을 중지시킨다.
$ swapoff /swap-file
$ swapoff -a
free 명령어는 현재 사용 중인 메모리의 상태를 출력하는 명령이다. 기본적으로 /proc/meminfo 파일에서 가져온다.
스왑 영역 을 생성은 다음과 같은 과정을 거친다.
# dd 명령을 이용해 원하는 파일의 크기만큼 스왑 파일/파티션을 생성한다.
$ dd if=/dev/zero of=/swap-file bs=1k count=1024000
# 스왑 파일/파티션 생성
$ mkswap -c /swap-file
# 스왑 파일/파티션 활성화
$ swapon /swap-file
# 시스템 부팅 시마다 사용할 경우에는 /etc/fstab 파일에 등록
사용자의 디스크 사용량을 제한하는 것을 디스크쿼터 라고 한다. 제한 값 설정은 소프트와 하드로 구분하는데 소프트는 사용자에게 공지되는 제한 용량, 하드는 실제 사용자가 최대로 사용할 수 있는 값이다.
xfs_quota 명령어는 XFS 파일 시스템의 쿼터를 관리해주는 명령어이다.
# joon 사용자의 소프트 용량 제한 100MB, 하드용량 제한은 110MB로 설정한다.
$ xfs_quota -x -c 'limit bsoft=100m bhard=110m joon' /home
# 파일 개수 제한을 소프트 제한은 1000개, 하드 제한은 1100개로 설정한다.
$ xfs_quota -x -c 'limit isoft=1000 ihard=1100 joon' /home
# terran 그룹에 속한 전체 사용자들의 디스크 용량 및 파일 개수를 제한한다.
$ xfs_quota -x -c 'limit -g bsoft=10g bhard=11g isoft=10000 ihard=11000 terran' /home
# /home 영역에 대한 전체 용량 정보를 단위로 붙여서 출력한다.
$ xfs_quota -x -c 'report -bi -h' /home
edquota 명령어는 사용자나 그룹에 쿼터 설정할때 사용하는 명령어로 실행시키면 vi 편집기가 실행된다.
항목
- Filesystem : Quota 가 설정된 파티션
- Blocks : 현재 사용 중인 용량(KB)
- soft : 소프트용량
- hard : 하드용량
- inodes : 현재 사용중인 파일고 디렉터리 수
- soft : 소프트 Inode 제한
- hard : 하드 Inode 제한
# posein 사용자에 대한 쿼터를 설정할 때 사용하는 옵션이다.
$ edquota posein
# Vi 편집기를 이용해 Soft limit 을 초과한 후 부터 적용되는 시간 제한을 설정한다.
$ edquota -t
# yuloje 라는 사용자의 Quota 설정을 Posein 의 설정과 동일하게 만든다.
$ edquota -p posein yuloje
repquota 명령어는 파일 시스템에 설정된 쿼터 정보를 출력해주는 명령이다.
# /home에 설정된 그룹 쿼터 정보를 출력한다.
$ repquota -g /home
# 설정된 쿼터 정보를 전부 출력한다.
$ repquota -a
quota 명령어는 사용자나 그룹 단위로 쿼터 설정 정보를 출력해주는 명령이다.
# posein 사용자의 쿼터 설정 정보를 확인한다.
$ quota posein
sequota 명령어는 쿼터를 설정하는 직접 설정하는 명령어이다.
# 사용자의 용량제한을 soft 10mb hard 11mb 로 설정하고 Inode에 대한 제한은 설정하지 않는다.
$ setquota -u yuloje 10000 11000 0 0 /home
# 블록의 유예기간을 24시간 I-node에 대한 제한을 8시간으로 설정한다.
$ setquota -t 86400 28800 /home
사용자에 대한 쿼터 설정은 다음과 같은 과정을 거친다.
# /home 기준
# /etc/fstab에서 /home의 4번째 필드에 사용자쿼터 설정 옵션인 uquota를 추가로 기입한다
$ vi /etc/fstab
UUID= /home xfs defaults,uquota 0 0
# home 영역을 다시 마운팅한다
$ umount /home; mount -a
# 적용 확인
$ mount | grep /home
# 사용자에 대한 쿼터 설정
$ xfs_quota -x -c 'limit bsoft=100m bhard=110m alin' /home
# 쿼터 설정 확인
$ requota /home
그룹에 대한 쿼터 설정은 다음과 같은 과정을 거친다.
# /home 기준
# /etc/fstab에서 /home의 4번째 필드에 사용자쿼터 설정 옵션인 uquota를 추가로 기입한다
$ vi /etc/fstab
UUID= /home xfs defaults,uquota 0 0
# home 영역을 다시 마운팅한다
$ umount /home; mount -a
# 적용 확인
$ mount | grep /home
# 사용자에 대한 쿼터 설정
$ xfs_quota -x -c 'limit -g bsoft=10g bhard=11g isoft=10000 ihard=11000 terran' /home
# 쿼터 설정 확인
$ requota -g /home
pwd 는 현재 위치한 작업 디렉터리의 경로를 출력해주는 명령이다.
cd 는 디랙터리를 이동하는 명령으로 작업 중인 디렉터리를 변경할 때 사용한다. cd 라고만 입력하면 사용자의 홈 디렉터리로 이동한다.
mkdir 은 디렉터리를 생성하는 명령이다.
# 상위 디렉터리가 없다면 같이 생성하고 최하위 디렉터리를 생성한다.
mkdir -p www/pds/photo
rmdir 은 디렉터리를 삭제하는 명령이다. 빈 디렉터리어야한다.
# 최하위 디렉터리 삭제후 상위 디렉터리도 비면 상위디렉터리도 같이 삭제한다.
$ rmdir -p www/psd/photo
tree 명령어는 특정 디렉터리의 목록 정보를 트리 구조 형태로 출력한다.
# 특정 디렉터리 안에 존재하는 파일의 크기를 단위와 함께 트리 형태로 출력한다.
$ tree -h /etc
ls 명령은 디렉터리 안의 내용을 출력한다.
# 숨겨진 파일 및 디렉터리도 포함해 출력한다.
$ ls -a
# 현재 디렉터리의 내용르 숨겨진 파일을 포함해 모두 추력해주고 관련 정보 및 파일의 형태도 표시해준다.
$ ls -alF
# 특정 디렉터리의 파일속성, 권한, 소유자ㅡㄹ 보여준다.
$ ls -ld /home
# 아이노드 번호도 함께 출력한다.
$ ls -i
# 최하위 디렉터리까지 제귀적으로 전부 출력한다.
$ ls -R /etc
cp 명령어는 파일이나 디렉터리를 복사하는 명령어이다.
# 특정 파일을 현재 디렉터리에 복사한다.
$ cp /etc/passwd .
# 특정 파일을 현재 디렉터리에 특정 파이명으로 복사한다.
$ cp /etc/passwd passwd.txt
# 특정 파일 /etc를 tmp 디렉터리로 복사하는데 하위에 있는 모든 파일과 디렉터리를 포함한다.
$ cp -r /etc tmp
# a와 b 텍스트 파일을 /tmp로 복사한다.
$ cp a.txt b.txt /tmp
# a와 b 텍스트 파일, Data 디렉터리를 data2로 복사한다.
$ cp -r a.txt b.txt data/ data2/
# backup directory 에 있는 모든 파일을 /home/posein으로 속성, 링크정보, 소유자, 소유그룹을 그대로 유지하며 복사한다.
$ cp -a /bakup/* /home/posein/
rm 명령어는 파일을 삭제한다.
# 현재 디렉터리의 모든 파일을 확인하며 지운다
$ rm -i *
# 지정 파일들을 지운다.
$ rm doc1.txt doc2.txt doc3.txt
# 특정 디렉터리와 그 안의 모든 파일과 디렉터리를 강제로 지운다.
$ rm -rf data/
mv 명령어는 파일이나 디렉터리의 이름을 변경하거나 이동시킨다.
# readme 파일을 data 디렉터리로 옮긴다.
$ mv readme.txt /home/posein/data/
# Data 디렉터리의 이름을 backup 으로 변경한다.
$ mv /home/posein/data /home/posein/backup
# aaa 파일의 이름을 bbb로 변경한다.
$ mv aaa.txt bbb.txt
# a.txt, b.txt 파일과 Data 디렉터리를 /tmp 디렉터리로 옮긴다.
$ mv a.txt b.txt data/ /tmp
# data 디렉터리 안의 파일 및 디렉터리만 backup 디렉터리로 이동한다.
$ mv data/* backup/
touch 명령어는 파일의 최종 접근 시간, 수정 시간 등 타임스템프를 변경하거나 파일의 크기가 0인 빈 파일을 생성하는 명령어이다.
# 현재 디렉터리에 a 파일이 존재하면 수정시간을 바꾸고 없으면 동명의 빈 파일을 생성한다.
$ touch a.txt
# Access time 을 현재 시간으로 바꾼다.
$ touch -a lin.txt
# Access Time을 특정 시간으로 바꾼다.
$ touch -a -t 201810142250 joon.txt
# 수정시간을 특정 시간으로 바꾼다.
$ touch -t 20121222105 /etc/passwd
# a의 Access time 및 Modify time으로 b의 시간을 변경한다.
$ touch -r a.txt b.txt
file 명령어는 파일의 종류를 출력해주는 명령으로 /user/share/magic 이라는 파일을 참조한다.
locate 명령어는 시스템 전체에서 찾고자 하는 패턴과 맞는 파일이나 디렉터리 경로를 함께 출력해준다.
파일이나 디렉터리 생성후 데이터베이스 정보를 갱신하지 않으면 찾지 못하게 되므로 updatedb 명령이나 cron 작업을 이용해 주기적으로 데이터베이스를 갱신해야한다.
# txt라는 문자열이 있는 파일이나 디렉터리를 찾아 출력한다.
$ locate txt
# txt라는 문자열이 있는 파일이나 디렉터리의 개수를 출력한다.
$ locate -c txt
find 명령어는 현재 디렉터리 부터 하위 디렉터리까지 조건에 맞는 파일 및 디렉터리를 찾아 경로를 출력해주는 명령이다. root에서 접근 권한을 제한한 파일이나 디렉터리에 관해서는 찾을 수 없다.
# c로 끝나는 파일이나 디렉터리를 찾는다
$ find -name '*.c'
# 특정 유저의 파일이나 디렉터리를 찾는다.
$ find user posein
# 퍼미션 값이 600 인 파일을 찾는다.
$ find -perm 600
# 심볼릭 링크인 파일을 찾는다.
$ find -type l
# 현재 디렉터리와 하위 디렉터리를 포하마여 모든 파일이나 디렉터리를 찾는다.
$ find .
# 현재 디렉터리에 있는 모든 하위 디렉터리를 찾는다.
$ find . -type d
# 현재 디렉터리에서 *.txt.로 끝나는 파일을 찾는다.
$ find . -type f -name "*.txt"
# 최상위 디렉터리에서부터 set-UID set-GID 중 하나 이상이 설정된 파일을 찾아 상세출력한다.
$ find / -type f -perm +6000 -ls
# 소유자나 소유 그룹이 없는 파일을 찾는다
$ find / -nouser -o -nogroup
# 현재 디렉터리에서 *.txt로 된 파일을 찾아 삭제한다.
$ find -name '*.txt' -type -f -exec rm {} \;
# 이틀 전에서 하루 이후에 수정된 파일을찾는다.
$ find / -ctime -2 -ctime +1 -ls
# 변경된지 7이 이상된 파일을 찾는다.
$ find / -mtime +7
# 특정 사이즈의 파일을 찾는다.
$ find -size +10000c -size -32000c
$ find -name test.txt -ok chmoe 755 {} \;
<chmod ... ./text.txt> ? y
# 정규표현식을 사용해 a또는b로 시작하는 파일이나 디렉터리를 찾는다.
$ find -name '[ab]*'
# 파일이 아닌것을 찾는다.
$ find ! -type f
cat 명령어는 표준 입력으로 받는 값을 표준 출력으로 이어주는 명령어이다. 리다이렉션 기호와 함께 사용해 파일을 생성하고나 여러 개의 텍스트 파일을 합치는 기능도 수행한다.
# 키보드로 부터 입력받은 내용을 a.txt라는 파일에 저장한다.
$ cat > a.txt
# a.txt 파일의 내용을 화면에 출력한다.
$ cat < a.txt
# a.txt의 내용을 b.txt 파일에 출력한다.
$ cat < a.txt > b.txt
# 두 파일의 내용을 출력한다.
$ cat a.txt b.txt
# 두 파일의 내용을 합해 c.txt 에 저장한다.
$ cat a.txt b.txt > c.txt
head 명령어는 텍스트 파일의 첫 부분을 보여주는 명령이다. 디폴트는 10줄이다.
tail 명령어는 텍스트 파일의 끝 부분을 보여주는 명령이다. 디폴트는 10줄이다.
more 명령어는 텍스트 파일의 내용이 긴 경우 Page 단위로 출력해주는 명령이다.
# 파일의 내용르 20줄 단위로 페이징해 출력한다.
$ more -20 /etc/passwd
# ls -l /etc 의 내용을 한 화면씩 출력한다.
$ ls -l /etc | moreㅋ
less 명령어는 버퍼 메모리를 사용해서 출력하는 방식이다.
# 파일의 내용을 20줄 단위로 페이징해 출력한다.
$ less /etc/passwd
# 줄 번호를 보여주면서 한 페이지씩 보여준다.
$ ls -N /etc
grep 명령어는 텍스트 파일에서 특정 패턴을 갖는 줄을 찾아서 출력해주는 명령어이다.
# 현재 디렉터리의 모든 파일에서 'linux' 라는 문자열이 들어가 있는 줄을 찾아 출력한다.
$ grep linux *
# 현재 디렉터리의 모든 파일에서 'linux' 라는 문자열이 들어가 있는 줄이 몇개 있는지 보여준다.
$ grep -c linux *
# 현재 디렉터리의 모든 파일에서 'linux' 라는 문자열이 들어가 있는 줄을 출력하는데 파일명은 출력하지 않는다.
$ grep -h linux *
# readme 파일에서 숫자가 존재하는 모든 줄을 보여준다.
$ grep "[0-9]" readme
# 특정파일에서 특정 문자열이 있는 줄을 출력한다.
$ grep -E 'posein|root' /etc/passwd
# 특정 파일에서 #로 시작하지 않는 줄만 출력한다.
$ grep -v ^# /etc/vsftpd/vsftpd.conf
wc 명령어는 텍스트 파일의 행, 수, 단어, 문자 수를 출력해주는 명령어이다.
sort 텍스트 파일의 내용을 행 단위로 정렬한다 순서는 공백, 특수 문자, 수사, 대문자, 소문자 순이다.
$ sort jalin.txt
$ sort -r -o jalin_rev.txt jalin.txt
$ sort -t: -n -k3 /etc/passwd
$ sort -t: -k2.2n -k5.3,5.4 /etc/passwd
cut 명령어는 데이터의 열을 추출할 때 사용한다.
# 각 행별로 첫 번째부터 열 번째 문자까지만 추출해서 출력한다.
$ cut -c 1-10 /etc/passwd
# 필드구분을 : 로 지정하고 첫번째 필드와 세번째 필드의 값을 추출해 출력한다.
$ cut -f 1,3 -d: /etc/passwd
split 명령어는 하나의 파일을 여러 개의 자은 파일로 분리하는 명령이다.
# 특정 파일을 30라인씩 잘라서 새로운 파일로 생성한다.
$ split -l 30 /etc/passwd
# 특정 파일을 40라인씩 잘라 새로운 파일로 생성한다. 파일 이름은 passwd로 시작한다.
$ split -40 /etc/passwd passwd
# 특정 파일으 1MB크기로 나눈다. 파일 이름은 모두 data로 시작한다.
$ split -b 1M /tmp/data data
# data 파일로 다시 복원한다.
$ cat data* > data
tr 명령어는 텍스트 파일 안에 있는 임의의 문자열을 원하는 문자로 바꾸거나 제거할 때사용하는 명령어이다.
# o 를 i 로 바꿔 출력한다.
$ tr o i < tr.txt
# o 가 중복된 경우 하나만 출력한다.
$ tr -s 'o' < tr.txt
# 소문자를 대문자로 전부 바꾼다.
$ tr '[a-z]' '[A-Z]' < tr.txt > tr2.txt
# o를 제거하고 출력한다.
$ tr -d 'o' < tr.txt
# carrige return을 제거하고 출력한다.
$ tr -d '\r' < windows.txt
# 여러 칸의 공백을 하나의 공백으로 변환해준단
$ tr -s '' < test.txt
sed 명령어는 스트림편집기로 셸 스크립트나 다른 명령의 출력을 여과하는 파이프라인을 사용한다. 즉 파일의 내용을 변경 없이 화면상에 출력만 필터링 한다.
# 특정 파일에서 각 행 다음문자열을 붙여서 출력한다.
$ sed 'a I am King' test.txt
# 특정 파일의 2행에 다음 문자열을 붙여서 출력한다.
$ sed '2a\ I am King' test.txt
# 특정라인을 지우고 출력한다. 라인을 입력하지않으면 어떤 내용도 출력되지않는다.
$ sed 'd' test.txt
# 2번째 줄을 삭제하고 출력한다.
$ sed '2d' test.txt
# 1번째 줄부터 2번째 줄까지 삭제해서 출력한다.
$ sed '1,2d' test.txt
# 각 행 앞에 지정한 문자열을 행으로 삽입해 출력한다.
$ sed 'i\ i am linuxMania' test.txt
# 특정 문자를 특정문자열로 치환한다.
$ sed 's/study/learning/' test.txt
# 모든 행을 2번씩 출력한다.
$ sed p test.txt
# 두 번째 행만 2번 출력한다.
$ sed '2p' test.txt
# linux 라는 문자열을 찾아 2번 출력한다.
$ sed '/linux/p' test.txt
# q는 명시한 줄까지 출력하는데, 기본값이 한 줄이다.
$ sed q test.txt
# 두 번째 행까지 출력한다.
$ sed '2p' test.txt
# 두 파일의 내용을 모두 출력한다.
$ sed r test.txt test1.txt
# test1의 각 행 뒤에 test.txt 파일의 내용을 출력한다,
$ sed 'r test.txt' test1.txt
# 미리 지정한 정규식
$ cat sedscr
s/learning/study/g
# -f 옵션을 이용해 정규표현식을 적용한다.
$ sed -f sedscr test1.txt
# 21번째 행부터 30번째 행까지 b.txt에 저장한다.
$ sed -n '21,30p' /etc/passwd > b.txt
# list.txt 파일에서 linux를 전부 window로 전환한다. 직접 파일을 수정한다.
$ sed -i 's/linux/windows' list.txt
awk 는 일종의 프로그래밍 언어로 패턴 검색과 조작에 주로 사용된다. grep 명령어로 넘어온 데이터들의 값을 처리하거나 sed와 함께 정규화된 양식을 처리하는 경우에 많이 사용된다.
# 특정 파일의 내용을 전부 출력한다.
$ awk '{print}' /etc/passwd
# 특정 파일에서 두 번째 필드와 첫 번째 필드를 출력하는데 중간에 공백을 추가한다.
$ awk '{print $2 " " $1}' list.txt
# 특정 패턴에 해당하는 행을 출력한다.
$ awk '/posein/ {print}' /etc/passwd
# 첫번째 필드룰 출력한다. 기본 필드의 구분은 공백이다.
$ awk '{print $1}' result.dat
# 특정 문자열을 출력한 후 첫 번째 필드를 출력한다.
$ awk 'BEGIN{print"--과목--"}{print $1}' result.dat
# 특정 문자열을 출력한 후 두 번째 필드를 출력한다.
$ awk 'BEGIN{print"--점수--"}{print $2}' result.dat
$ cat sedsrc
s/score$//
# sed 정규식을 통해 score 문자를 제거하고 awk 로 연산을 수행한다.
$ sed -f sedscr result.dat | awk 'BEGIN{sum=0; print "total score";}\{sum += $2} END {print "합계: " sum}'
# 미리 작성한 스크립트로 연산을 수행한다.
$ sed -f sedscr result.dat | awk -f sum.awk
# 필드를 ':' 로 구분하여 첫 번째 필드의 값을 출력한다.
$ awk -F: '{print $1}' /etc/passwd
# 필드를 TAB으로 구분하여 4번째 필드의 값을 출력한다.
$ awk -F'\t' '{print $4}' ex.txt