

pwd -> /root/1. /etc/sysconfig 복사해서 /root/dirtest/에 넣으세요.
mkdir /root/dirtest
cp -r /etc/sysconfig /root/dirtest/
-r 옵션으로 디렉토리 전체 복사/root/dirtest/sysconfig/라는 구조가 만들어짐2. /root/dirtest/sysconfig/network-scripts/를 이동시켜 /root/dirtest1/에 넣으세요.
mkdir /root/dirtest1
mv /root/dirtest/sysconfig/network-scripts /root/dirtest1/
mv는 디렉토리 이동/root/dirtest1/network-scripts가 됨3. /root/dirtest1/network-scripts 디렉토리에 파일 이름이 testfile을 만드시오.
touch /root/dirtest1/network-scripts/testfile
touch는 빈 파일 생성testfile이 해당 디렉토리 안에 생김4. /root/dirtest1/network-scripts/testfile을 복사해서 /root/testfile1을 만드시오.
cp /root/dirtest1/network-scripts/testfile /root/testfile1
5. /root/testfile1 파일을 /tmp/testfile로 이름을 바꾸시오.
mv /root/testfile1 /tmp/testfile
mv는 이동 또는 이름 변경
여기선 경로와 이름을 바꾸는 작업
6. /root/b/bb/bbb/bbbb를 명령어 한줄로 만드시오.
mkdir -p /root/b/bb/bbb/bbbb
-p 옵션으로 중간 디렉토리도 자동 생성7. /root/dirtest/의 시간 정보를 현재 시작으로 바꾸시오.
touch /root/dirtest
touch는 시간 정보(Access time, Modify time)를 현재 시간으로 갱신8. rmdir 명령어로 /root/b/디렉토리를 삭제하시오.
rmdir -p /root/b/bb/bbb/bbbb
-p 옵션으로 하위에서 상위까지 빈 디렉토리만 순차 삭제pwd -> /root/nano file1 1 2 3
nano file2 a b c
1. file1에 대한 하드링크(hfile) & 소프트링크(sfile1) 생성
ln file1 hfile # 하드링크
ln -s file1 sfile1 # 심볼릭 링크 (상대경로)
hfile은 file1과 같은 inode → 동일한 실제 파일sfile1은 file1이라는 이름을 문자열로 참조2. 파일 이름 변경
mv file1 file3 # file1 → file3
mv file2 file1 # file2 → file1 (이름 재사용)

3. hfile, sfile1 내용 확인
cat hfile # 출력: 1 2 3
cat sfile1 # 출력: a b c
hfile은 inode 공유 → 여전히 원래의 file1 내용 (1 2 3)sfile1은 문자열 링크 → 새로 이름 붙인 file1 (a b c)을 참조4. 현재 file1에 대해 절대경로로 심볼릭 링크 생성 → sfile2
ln -s /root/file1 sfile2
/root/file1 참조5. file3을 /tmp/file1로 이동하면서 이름 변경
mv file3 /tmp/file1
file3은 /tmp/file1이 됨hfile)는 inode 공유이므로 여전히 1 2 3 유지6. sfile1과 sfile2를 /tmp로 이동
mv sfile1 sfile2 /tmp/
7. /tmp/sfile1, /tmp/sfile2 내용 확인
cat /tmp/sfile1 # 출력: 1 2 3
cat /tmp/sfile2 # 출력: a b c
sfile1은 상대경로 → 현재 dir 기준 file1 → /root/file1 → 내용 OKsfile2는 절대경로 /root/file1 가리킴 → 문제 없음디렉토리 및 파일 생성
mkdir /tmp/p
cd /tmp/p
touch f1 f2 f3 f4
/tmp/p 디렉토리 내에 f1 ~ f4까지 빈 파일 생성1. 모든 파일에 rwx 권한을 전체 사용자에게 부여 (심볼릭 모드)
chmod a=rwx f1 f2 f3 f4
a → all (user, group, others)=는 기존 권한을 초기화 후 지정rwxrwxrwx (777)2. f1 에서 소유자는 쓰기 권한을 빼고, 소유그룹은 실행권한을 빼고,
기타 사용자는 모든 권한 뺄 것 (심볼릭모드)
chmod u-w,g-x,o-rwx f1
w 제거 → r-xx 제거 → rw----3. f2 소유자와 소유그룹을 r-x로 셋팅할 것(심볼릭 모드)
chmod ug=rx f2
u=rx → 소유자: 읽기 + 실행g=rx → 그룹: 읽기 + 실행4. f3 소유자는 읽기,쓰기,실행. 소유그룹은 읽기,실행.
기타사용자는 읽기. 권한을 줄 것(8진수 모드)
chmod 754 f3
5. /tmp/p의 모든 파일의 소유자와 소유그룹을 vagrant로 변경할 것
chown -R vagrant:vagrant /tmp/p
-R은 재귀적 적용 → 디렉토리 내부 파일에도 적용vagrant:vagrant는 소유자와 그룹 모두 지정6. f4 소유자 읽기. 소유그룹 쓰기. 기타사용자 실행. 권한 뺄 것
chmod u-r,g-w,o-x f4
f4가 rwxrwxrwx라면 → 제거 후 권한: -w-r-xr--7. 파일이 생성될때 기타사용자에 대해서만 쓰기, 실행 권한이 빠지도록 기본권한을 설정하시오.(명령어로)
umask 003
666) - umask(003) → rw-rw-r--777) - umask(003) → rwxrwxr-xothers(기타 사용자)는 w와 x 권한 없음
1. /etc/로 이동 후 ~(틸드) 사용해 홈 디렉토리로 이동
cd /etc/
cd # 또는
cd ~ # 또는
cd $HOME # (같은 효과)
~는 현재 사용자의 홈 디렉토리를 의미 (/root 또는 /home/사용자명)2. - 문자로 이전 디렉토리로 복귀
cd /etc/sysconfig/network-scripts/
cd ~ # 홈으로 이동
cd - # 바로 직전 디렉토리로 다시 이동
cd -는 마지막 위치로 돌아가는 기능/etc/sysconfig/network-scripts)3. 홈 dir에서 /etc/sysconfig/network-scripts dir 내용을 확인 (~- 사용)
cd ~/
ls ~-/ # or ls ~-/network-scripts
~-는 이전 디렉토리 경로를 의미함~는 홈, ~-는 cd 전에 있었던 디렉토리4. superman-season 디렉토리와 파일 생성 + 이동 (메타문자 실전)
mkdir /media/superman-season{1,2,3}
touch superman-season{1,2,3}-drama{01..10}.avi
mv *n1* /media/s*1
mv *n2* /media/s*2
mv *n3* /media/s*3
n1 파일명 중에 n1이 포함된 것 = season1s*1 디렉토리 중에 s...1로 끝나는 것 = season1사용자 전환
su - vagrant
- 옵션은 로그인 셸을 포함하여 완전히 전환됨vagrant 사용자 기준으로 바뀜1. ls -lR /의 표준 출력 & 에러 출력 분리 저장
ls -lR / 1> ~/r01 2> ~/r02
1>: 표준 출력(stdout) → ~/r012>: 에러 출력(stderr) → ~/r02보통 루트 전체 탐색은 권한 없는 디렉토리 에러가 많이 나옴2. 모든 출력(표준 + 에러)을 한 파일로 저장
ls -lR / &> ~/r03
또는
ls -lR / > ~/r03 2>&1
&>: stdout + stderr를 한 파일로 리디렉션 (bash 전용)> 파일 2>&1: 표준 출력 → 파일, 그리고 에러도 같은 곳(1)으로 보냄~/r03에 전체 결과가 담김root 사용자로 전환
exit
vagrant 세션 종료 후 이전 사용자(root)로 복귀3. ps -ef를 한 화면씩 출력
ps -ef | less
또는
ps -ef | more
ps -ef: 모든 프로세스 목록 출력less는 탐색, 검색 가능 (/로 검색, q로 종료)more는 순차적으로만 보기 가능 (Space → 다음 페이지)4. yum list의 마지막 5줄 출력
yum list | tail -5
tail -5: 출력의 마지막 5줄만 보여줌
yum list는 설치/가능한 패키지 목록을 쭉 출력함
→ 긴 출력의 일부 확인에 유용
grep [옵션] '패턴' 파일


1. root 포함 줄 검색
grep 'root' /etc/passwd
2. nologin으로 끝나는 줄 검색
grep 'nologin$' /etc/passwd
3. n으로 시작해서 y로 끝나는 6글자 단어 포함된 줄 (정확한 단어 검색)
grep -w 'n....y' /etc/passwd
.은 아무 문자 한 개 / 총 6글자: n + 4글자 + y4. 줄의 시작이 n인 줄
grep '^n' /etc/passwd
5. home이 포함된 줄 위로 5줄 출력
grep -B 5 'home' /etc/passwd
6. n으로 시작하고 y로 끝나는 모든 패턴
grep 'n.*y' /etc/passwd
.*: 아무 문자 0개 이상7. bash가 포함되지 않은 줄 출력
grep -v 'bash' /etc/passwd
8. 전화번호 패턴 검색 정규식
grep '010-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]' 파일명
9. /var/log/messages 복사
cp /var/log/messages ~/
10. 03월 26일 08:00 ~ 20:59 시간대 검색
egrep '^Mar 26 (0[89]|1[0-9]|20)' ~/messages
또는
grep -e '^Mar 26 0[89]' -e '^Mar 26 1[0-9]' -e '^Mar 26 20' ~/messages
^Mar 26 0[89] → 08, 09^Mar 26 1[0-9] → 10~19^Mar 26 20 → 20시 시간대00~07, 21~29는 제외됨데이터 파일 생성
nano data 후 hong 28 011-222-2222 seoul park 34 017-333-3333 kyunggi. im 23 019-444-4444 chungnam son 49 016-555-5555 us gil 19 018-666-6666 korea. jang 21 011-7777-7777 japan lee 16 016-8888-8888 china sa 45 017-9999-9999 canada. hwang 32 015-555-5555 kwangju
1. 전화번호 중간이 4자리인 줄과 라인번호 출력
grep -n '01[0-9]-....-....' data
-n : 라인 번호 출력
'01[0-9]-....-....' : 010~019 앞자리 + 4자리 중간 + 4자리 끝
2. seoul이 포함된 라인 개수 출력
grep 'seoul' data | wc -l
grep으로 seoul 포함 라인 필터 → wc -l로 개수 출력3. h로 시작해서 u로 끝나는 패턴 검색
grep 'h.*u' data
h.*u → h로 시작하고 u로 끝나는 중간 문자열4. s 또는 l로 시작하는 줄 검색
grep '^[sl]' data
^ : 줄의 시작[sl] : s 또는 l로 시작하는 줄5. 줄 끝에 마침표 .가 있는 줄 검색
grep '\.$' data
\. : 마침표를 문자로 인식$ : 줄의 끝6. 전화번호 앞자리가 010~015인 패턴 검색
grep '01[0-5]-' data
01[0-5] : 010~015- : 번호 형식 유지7. 지역이 china 또는 canada인 줄 검색
grep -e 'china' -e 'canada' data
또는
egrep '(china$|canada$)' data
egrep은 | (OR 연산자)를 인식$는 줄 끝 고정8. n과 2가 모두 포함된 줄
grep 'n' data | grep '2'
grep으로 n이 포함된 줄 추출grep으로 그 중 2도 포함된 줄만 필터링9. n이나 2가 포함되지 않은 줄 출력
grep -v 'n' data | grep -v '2'
grep -v 'n' → n 없는 줄2도 없는 줄 필터링기본 환경 설정
mkdir /down
touch /down/test{1,2}
cp /down/test1 /tmp/test3
cp /down/test2 /tmp/test4/
mkdir /down/test
mv /down/test /tmp
1. /tmp 디렉토리 내에서 test*로 시작하는 파일을 찾아 삭제
find /tmp -name "test*" -exec rm -r {} \;
"test*" : 파일명 앞에 test가 포함된 모든 항목-exec ... \; : 찾은 항목에 대해 rm -r 명령 실행{}는 find가 찾은 파일을 넣는 자리-r은 디렉토리 삭제도 포함되므로 파일/디렉토리 모두 제거 가능2. /etc/ 아래에서 group 파일을 찾아 /root/로 복사
find /etc/ -name 'group' -exec cp -r {} /root/ \;
-name 'group' : 정확히 group 이름을 가진 파일만 검색cp -r : 일반적으로 group은 파일이므로 -r 생략 해도, 안해도 문제 없음3. /root/group 파일을 대화형으로 삭제
find /root/ -name 'group' -ok rm -r {} \;
-ok는 -exec와 같지만 작업 전에 [y/n]으로 확인4. / 루트 디렉토리 전체에서 소유자가 vagrant인 파일을 찾고 상세 출력
find / -user vagrant -ls
-user vagrant : 소유자가 vagrant인 파일-ls : ls -l처럼 권한/크기/소유자/경로 등 상세 정보 출력5. /tmp 안에서 소유자가 vagrant인 파일을 삭제
find /tmp -user vagrant -exec rm -r {} \;
/tmp 내에서만 vagrant 소유자 파일 삭제