파일 관리
Bash 명령 실행
passwd
passwd
일반 사용자 비밀번호 변경
passwd kimminsu
root 사용자 계정 비밀번호 관리
passwd -d kimminsu
root 사용자가 일반 사용자 비밀번호 삭제
file
file /bin/ls
cat
cat option 파일
cat -A /etc/hosts
#-A 옵션은 -VET와 동일
cat /etc/hosts /etc/fstab
여러 파일 한 번에 보기
head
head option 파일
head /etc/profile
#앞 4행만 보기
head -n 4 /etc/profile
head -n-3 /etc/profile
마지막 3행을 제외하고 모든 내용 보기
head -n3 /etc/hosts /etc/fstab
여러 파일의 앞 3행 보기
tail
tail /etc/profile #기본값으로 마지막 10행 보기
tail -n +4 /etc/profile
4행부터 마지막까지 모든 내용 보기
head -n 15 /etc/profile | tail -n 5
tail -n +11 /etc/profile | head -n 5
/etc/profile 파일의 11-15행 추출하는 두 가지 방법
less
less /etc/profile
q=종료
상하 방향키로 한 줄씩 보기
좌우 키로 페이지 넘기기
pageup과 pagedown으로 페이지 이동
wc
wc -l 출력 라인 수
wc -c 출력 바이트 수
wc -m 출력 문자 수
wc -L 가장 긴 행의 길이 표시
wc -w 단어 수 표시
echo
echo -n 줄바꿈 추가 안 함
echo -e 백슬래시 이스케이프 해석 활성화
echo -E 백슬래시 이스케이프 해석 억제
bashrc 설정 파일 -- 지속적 저장
seq -s + 10 #-s 사용법 구분자
grep username /etc/passwd
#nologin이 표시되면 로그인 불가능
사용자 수동 생성
#계정 추가
vim /etc/passwd
leesumin:x:1003:1003::/home/leesumin:/bin/bash
#그룹 추가
vim /etc/group
leesumin:x:1003:
#비밀번호 추가
vim /etc/shadow
#마지막 줄에 추가 평문은 ubuntu
$6$GfEDKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::
#홈 디렉토리 준비
cp -r /etc/skel/ /home/leesumin
#이수민 홈 디렉토리 소유권 변경
chown leesumin:leesumin /home/leesumin
ll -d /home/leesumin
#테스트
ssh leesumin@localhost
/usr 시스템 설치 소프트웨어, 공유 라이브러리
/usr/bin 사용자 명령어
/usr/sbin 시스템 관리 명령어
/usr/local 로컬 사용자 정의 소프트웨어
/etc 시스템 설정 파일
/var 시스템 가변 데이터베이스, 캐시 디렉토리, 로그
/home 홈 디렉토리 (개인 공간) 일반 사용자가 개인 데이터와 설정 파일을 저장하는 위치, 각 사용자는 자신의 공간이 있음, /home/leesumin
/root 관리자 root의 홈 디렉토리
/tmp 임시 파일에 사용되는 전역 쓰기 가능 공간
/dev 장치 파일, 시스템이 하드웨어에 접근하기 위한
mkdir
mkdir dir00
mkdir dir01 dir02
mkdir -p dir00/dir01/dir02/dir03/dir04
두 개의 레이어를 건너뛰어 존재하지 않는 디렉토리 생성 시 -p 사용
cp
cp /etc/hosts .
현재 위치로 복사
cp /etc/hosts ./hosts-1
현재 위치로 복사하고 hosts-1로 이름 변경
cp /etc/passwd /etc/host.conf .
여러 파일을 현재 위치로 복사
cp -r /etc/yum .
디렉토리 복사 시 -r 사용, etc 아래 yum 디렉토리를 현재 위치로 복사
cp -r로 디렉토리를 복사할 때 대상 위치에 동일한 이름의 디렉토리가 있으면 소스 디렉토리를 동일한 디렉토리 아래에 배치하지 않고 덮어씁니다.
mv
mv hosts-1 /lab
단일 파일 이동
mv passwd hosts /home/leesumin/lab
여러 파일 이동, 대상 위치는 디렉토리만 가능
mv host.conf host.conf-new
이름 변경
mv lab /home/root
디렉토리 이동
rm
rm hosts
파일 삭제
cp /etc/pki/ca-trust/extracted/java/cacerts .
rm cacerts
쓰기 보호가 있는 파일 강제 삭제
rm -f cacerts
파일 강제 삭제, 확인하지 않음
rm -r /home/root/lab
재귀적 삭제
rm -rf
강제 재귀적 삭제
소프트 링크와 하드 링크
소프트 링크는 Windows의 바로가기와 유사합니다. 공간을 차지하는 큰 소스 파일을 소프트 링크로 원본 위치에 생성한 후, 소스 파일을 다른 위치로 이동하여 디스크 공간을 절약할 수 있습니다.
소프트웨어 패키지 소스 코드 컴파일 설치 시, 소프트웨어 서비스를 /usr/bin 디렉토리에 소프트 링크하여 전역에서 서비스를 시작할 수 있습니다.
ln -s 원본 위치 연결 이름
rm mytmp
소프트 링크를 삭제할 때 연결 이름 뒤에 / 구분자를 붙일 수 없습니다
하드 링크는 일반 파일이며 소스 파일과 동일한 inode 번호를 가집니다. 여러 파일 이름을 통해 동일한 데이터 블록에 접근할 수 있으며, 어떤 파일이 변경되면 나머지도 함께 변경됩니다.
ln hosts-1 hosts-2
ln은 기본적으로 하드 링크를 생성합니다
리눅스 입출력 리디렉션
파일로 출력 리디렉션
독립 출력
find /etc -name 'shadow'
etc 디렉토리에서 파일명이 shadow인 모든 파일 찾기
find /etc -name 'shadow' 1>shadow.list
cat shadow.list
1>shadow.list는 >shadow.list로 생략 가능
1과 > 사이에 공백이 없어야 합니다
찾은 파일명을 shadow.list에 덮어쓰기
find /etc -name 'shadow' >> shadow.list
찾은 파일명을 shadow.list에 추가
find /etc -name 'shadow' 2>shadow.err
여기서는 root 사용자를 사용했기 때문에 권한 부족 문제가 발생하지 않습니다. cat shadow.err를 사용해도 빈 것으로 표시되며, 일반 사용자로 전환하면 오류 정보를 볼 수 있습니다
find /etc -name 'shadow' 2>/dev/null
장치 파일 /dev/null은 항상 비어 있습니다
오류 정보를 버립니다
여기서 오류가 보이지 않는 것은 오류 정보가 비어있는 곳으로 리디렉션되었지만, root 사용자가 입력한 명령이기 때문에 권한 부족 오류 정보가 없기 때문입니다.
정보 출력 (표준 출력)
- 위치: 터미널에 직접 표시 (표준 출력, 파일 설명자
1) - 내용:
find명령이 찾은 일치 파일 경로 (예:/etc/shadow)
오류 정보 (표준 오류)
- 위치: 리디렉션하여 버림 (
2>/dev/null은 모든 오류 버림) - 내용: 권한 부족, 디렉토리 없음 등 오류 (예:
find: /etc/ssh: Permission denied)
find /etc -name 'shadow' > shadow.all 2>&1
오류 정보와 정확한 정보를 동일한 파일에 덮어쓰기
find /etc -name 'shadow' >> shadow.all 2>&1
오류 정보와 정확한 정보를 동일한 파일에 추가
프로그램으로 출력 리디렉션
파이프
파이프(|)를 사용하여 이전 명령의 출력을 다음 명령의 표준 입력으로 전달합니다
ip a | grep 'ens33$' | awk '{print $2}'
hostname -I로 IP도 가져올 수 있습니다
ens33 네트워크 카드 IP 주소 가져오기
파이프 뒤의 명령은 표준 입력을 받을 수 있어야 파이프와 함께 사용할 수 있습니다. 하지만 ls는 파이프로 전달된 표준 입력을 받지 않습니다.
echo /etc/passwd | ls -l
ls는 받지 않으므로 ls -l만 실행됩니다
echo /etc/passwd | xargs ls -l
tee
> shadow.list
cat shadow.list
비어있는 것을 shadow.list에 덮어쓰기 파일 내용 비우기
find /etc -name 'shadow' 2>/dev/null | tee shadow.list
cat shadow.list
tee 명령으로 파일에 덮어쓰기 저장
find /etc -name 'shadow' 2>/dev/null | tee -a shadow.list
cat shadow.list
tee 명령으로 파일에 추가 저장
프로그램에 표준 입력 리디렉션
cat /etc/hosts
cat < /etc/hosts
cat << EOF
> hello
> world
>EOF
셸이 EOF를 읽으면 표준 입력 완료