백괴대학:본관/리눅스 강의/3/3강

백괴사전, 내용 없는 백과사전
이동: 둘러보기, 찾기
CEMENT98:어서 오세요. 환영합니다.
혹자:아놔. 문제가 갑자기 튀어나오면 어째요?
CEMENT98:거 봐요, 시험 본다고 했지요? 하여간 교수 말 안 믿다가... ㅋㅋ 그럼 3강 시작하지요.

차례

[편집] 텍스트 다루기

[편집] cat, more, tail

혹자: cat? 고양이?
CEMENT98:냐아. 아니지요. cat을 입력하면 텍스트 내용을 보는 것이지요.
$cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
(중략)
liveplayer:x:1000:1000:liveplay,,,:/home/liveplayer:/bin/bash
gameuser:x:1001:1001:,,,:/home/gameuser:/bin/bash
두번째구멍:이게 뭡디까?
CEMENT98:뭐긴요. /etc/passwd의 내용을 볼 수 있습니다. 여기에 -n을 붙이면...
$ cat -n /etc/passwd
      1	root:x:0:0:root:/root:/bin/bash
      2	daemon:x:1:1:daemon:/usr/sbin:/bin/sh
      3	bin:x:2:2:bin:/bin:/bin/sh
      4	sys:x:3:3:sys:/dev:/bin/sh
(중략)
    32	liveplayer:x:1000:1000:liveplay,,,:/home/liveplayer:/bin/bash
    33	gameuser:x:1001:1001:,,,:/home/gameuser:/bin/bash
: 와우 줄 수가 보인다! 그럼 n은 number인가요?
CEMENT98:뭐 그런 셈이죠. 아하하.
CEMENT98:그런데, 내용이 길어지면 어떻게 될까요?
$cat /var/log/dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.38-11-generic (buildd@allspice) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #48-Ubuntu SMP Fri Jul 29 19:02:55 UTC 2011 (Ubuntu 2.6.38-11.48-generic 2.6.38.8)
[    0.000000] Command line: root=/dev/sda3 ro
(그리고 뭔가 끝도 없이 나온다. 아니, 끝은 있구나.)
두번째구멍: 뭐가 이렇게 많아!!
CEMENT98: 이거 첫 부분 볼 수 있는 사람?
두번째구멍: 당연히 못 보죠! 아, gedit 열면 되겠구나.
CEMENT98: 이봐 지금 GUI상이 아니라 CUI상으로 하는 것 묻는 것이거든요? 이 때는... more라는 명령어가 있다고요!
CEMENT98: more는 말 그대로 엔터를 치면 '더' 볼 수 있다는 뜻이지요.
혹자: 아하..(엔터를 광클한다) 이거 언제까지 광클해야 하는데요!!!
CEMENT98: 저번에 man은 뭘로 빠져나간댔죠?
: q. 어. 진짜 q 누르니까 빠져나오네요. -_-;
CEMENT98: 비슷한 명령어로 less가 있습니다. less는 아예 man처럼 새로운 프로그램이 실행됩니다. 위 아래 조작 등이 가능하지요.
두번째구멍: 와우. 정말이네. 그런데 끝부분만 조금 보고 싶으면 ... 은 그냥 cat 쓰면 되나?
CEMENT98: 아하하. tail이 있습니다. 말 그대로 꼬리만 자르고 나오죠. -n으로 출력할 줄 수를 지정할 수 있습니다.
$ tail -n 3 /var/log/dmesg
[   19.396217] type=1400 audit(1315617327.653:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=844 comm="apparmor_parser"
[   19.401799] type=1400 audit(1315617327.663:11): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=854 comm="apparmor_parser"
[   19.478591] forcedeth 0000:00:07.0: irq 43 for MSI/MSI-X
$_
두번째구멍: 깔끔해서 좋네요.
CEMENT98:그럼요. 다른 것은 몰라도, cat은 꼭 기억하시기 바랍니다!

[편집] grep

CEMENT98:이번에는 정말로 정말로 중요한 명령어인 grep을 배워보도록 하겠습니다.
CEMENT98:그 전에 파일 하나 만들어보시겠어요? 아직 redirection이니 vi니 뭐니 하나도 안 배웠으니까, gedit이나 kwrite 같은 것 열어보세요.
CEMENT98:그리고 아래 내용을 컨트롤 씨 브이로 복사 붙여넣기합니다. 파일명은 linux로, 홈 디렉터리(/home/계정명)에 저장하세요!
멍청이  리눅스를 배우다
뭐가 뭔지 하나도 모르고 리눅스를 배우다
멍청하게도 시키는대로 다 따라한다 카더라
아무튼 강의를 따라가며 grep이라는 명령어를 배우다
그래서 이 문장을 그대로 컨트롤 씨 브이 신공으로 입력하다
뭐, 아님 말고. 알 게 뭐야
혹자:왜 내가 멍청이임여 -_-
CEMENT98:ㅋ. 아무튼 이거 이상하게 고쳐 쓰다 작동하지 않아도 책임 안 집니다.
$grep 리눅스 linux
멍청이  리눅스를 배우다
뭐가 뭔지 하나도 모르고 리눅스를 배우다
$_
두번째구멍:그러니까 linux라는 문서에서 리눅스라는 단어가 들어간 줄을 찾는 것이죠?
CEMENT98:빙고. 그렇다면 '리눅스'라는 단어는 몇 번째 줄에 있을까요?
혹자:설마 이것도 아까처럼 -n을 지른다거나...
1:멍청이  리눅스를 배우다
2:뭐가 뭔지 하나도 모르고 리눅스를 배우다
두번째구멍:어 되네...
CEMENT98:맞추셨습니다. 꽤나 응용력이 있는 학생이군요. 칭찬하겠습니다.


CEMENT98: grep에 대한 것은 여기까지 하시요. :)

[편집] 와일드 카드

혹자:와일드 카드? 오스카 와일드가 가지고 있는 카드인가요?
두번째구멍:으음, 아니면 영화인가?
CEMENT98:(-_-;;;설마 그런 것이겠냐...) 아래를 참고하세요.
  • ^: 라인의 시작
  • $: 라인의 끝
  • .: (grep에서) 한 글자 (ex. a..b = axyb, a39b 등등)
  • ?: (일반적으로) 한 글자 (ex. a..b = axyb, a39b 등등)
  • *: 모든 글자(ex. a* = a, abc, ax57 등등)
  • +: 모든 글자(ex. a+ = abc, ax57 등등, 위와 같으나 이 상황에서 a는 제외)
CEMENT98:특히 *는 많이 쓰니까 별표 쫙! 라인의 시작과 라인의 끝은 vi 파트에서도 할 것이니 기억해두면 좋지요!
:헐키. 교수님. 이렇게 줄줄이 써놓기만 해도 돼요?
CEMENT98:이건 그냥 정리만 해 두는 게 나을 것 같아서요. -.-
CEMENT98:그럼 이번에 배운 것은 아래에 정리되어 있으니까
CEMENT98:참고하세요~*
:참고하세요~, 참고하세요~!, 참고하세요~~, 참고하세요~^^, 참고하세요~ㅡㅡ, 참고하세요~ㅗ 등등
CEMENT98:ㅋㅋ 헐키 너님 천재임. 자 그럼 이 표만 보고 쉬었다가 다시 진행합시다.
명령어 의미 파라미터(옵션)
cat 파일 내용을 본다.
  • -n:줄 수 출력
more 파일의 맨 위부터 내용을 보이며 Enter를 치면 그 아래 내용도 조금씩 보여준다. q로 빠져나온다. -
less 파일의 맨 위부터 내용을 보이긴 하나 위/아래 등 조절이 가능하여 더 편리하다. q로 빠져나온다. -
tail  파일의 맨 아래로부터 n줄까지의 내용을 보여준다.
  • -n:보여줄 줄 수 지정.
grep  파일에서 원하는 텍스트가 있는 줄을 찾는다.
  • -n:행 번호 출력
  • -i:대소문자 구분 무시
  • -r:하위 디렉터리까지 찾기(같은 파일명)
  • -w:단어 단위로 찾기
  • -v:해당 내용이 '없는' 부분만 찾기

[편집] find

:그런데 교수님, 원하는 파일은 어떻게 찾나요?
CEMENT98:강의안을 충실히 보고 온 학생이군요. 그래서 find 명령어에 대해 설명하려고 합니다.
두번째구멍:find 파일명 하니까 걍 되는데요.
CEMENT98: find -name 파일명 해야 먹히는 것이 보통인데, 오픈수세는 find 파일명 이렇게 이름을 찾는군요.
CEMENT98:아무튼 보통은 다음과 같이 -name을 쳐 주어야 합니다.
$find -name girlfriend
혹자:아 또 여친... 없는 사람 서러우니까 그만두세요.
CEMENT98: 뭐, 이름만 여친인데요. -name이잖아요?
CEMENT98:혹은 파일 타입도 결정할 수 있지요.
$find -type d
CEMENT98:d는 Directory(디렉터리), f는 File(파일), l은 symbolic Link(심볼릭 링크)입니다.
두번째구멍:심볼릭 링크?
CEMENT98:아차, 아차. 심볼릭 링크는 일종의 바로가기라고 생각하시면 됩니다. ln -s 링크시킬파일 링크파일명로 만들 수 있지요.
CEMENT98:그리고 아직 안 배웠고, 다음에 알아볼 것이지만 권한을 알아보는 옵션은 -perm이랍니다. permission의 약자죠.
두번째구멍:어디서 퍼온것도 아니고 펌.. 아니 펆~이라니.
CEMENT98:뭐..뭐...뭔가요 휑 -_-;;; 그리고 -print는 내용물 출력입니다만, 생략해도 별다른 문제는 되지 않습니다.
CEMENT98:그리고 그 다음에는... exec를 알아볼까요? 알고 있던 명령어 있죠? 뭐 있었죠?
혹자:find.. 아니 아니 ls, cd, mv, rm ...
두번째구멍:오늘 배운 cat! grep!
CEMENT98:물론 rm같은 것도 있지만 위험하니 문제가 되지 않는 ls를 한 번 써 볼까요?
$find -type f -exec ls {}\;
두번째구멍:이거 끝에 {} \; 붙여야 해요?
CEMENT98:네. 필요합니다. 없으면 실행 안 돼요!
두번째구멍:으아니 왜 이리 뭐가 많음!!!
CEMENT98:후후. 중지시키려면 ctrl+c를 쓰세요. 명령어 창에서는 복사가 아니라, 그냥 강제 종료를 의미하거든요.
:뭐야. 학생 컴퓨터 혹사시키는 나쁜 교수 같으니라고!
CEMENT98:어? 그 정도면 혹사도 아닐 텐데요? 아무튼, ls라는 명령어를 건 것입니다. 이런 명령어 내리지 않은 것을 다행으로 아세요. 뭐, 권한은 없겠지만.
$find / -exec rm -rf {} \;
혹자:rm -rf라면? 으악!!!
CEMENT98:그렇습니다. rm -rf와 같은 명령어지요. 후후.
CEMENT98:그렇다면 아래는 find의 옵션을 정리한 표니 잘 알아두세요. 아까는 잠깐잠깐 필요한 이야기만 해서, 그것과 조금 다를 수 있습니다.
옵션 설명
find -name girlfriend 이름이 girlfriend인 것 찾기
find -type 타입 지정한 파일 형식 찾기

(b=블록 특수 파일, c=문자 특수 파일, d=디렉터리, f=일반 파일, l=심볼릭 링크)

find -perm 권한 특정 권한이 있는/없는 파일 찾기(다음 강의에서 권한을 다룰 것입니다.)
find -atime +7 7일 이내 접근한 파일 찾기 (+가 아니라 그냥 날짜로 찾을 수 있음)
find -ctime +7 7일 이내 파일의 상태가 변경된 파일 찾기 (+가 아니라 그냥 날짜로 찾을 수 있음)
find -mtime +7 7일 이내 수정된 파일 찾기 (+가 아니라 그냥 날짜로 찾을 수 있음)
find -exec 명령어 {} \; 명령어 실행( {} \;는 필수로 붙여주어야 함)
CEMENT98:어차피 man find 하면 다 나오지만, 알 게 뭐야. 이외에도 '잔뜩' 있으니 구경하시거나 말거나.

[편집] 링크

CEMENT98:여러분 윈도 바로가기 알죠?
:네... 바탕화면에 바로가기 만들기라거나...
CEMENT98: 아 그건... 있다 이야기하죠. 링크에는 소프트 링크, 즉 심볼릭 링크와 하드 링크가 있습니다. 아까 말한 게 심볼릭 링크죠.
두번째구멍:소프트웨어와 하드웨어도 아니고...
CEMENT98:대충 그런 셈이었겠습니다. ㅋ 소프트 링크.. 흔히 심볼릭 링크라고 하는 것은 바로가기입니다.
$ln -s 대한게임국.txt 대한민국.txt
CEMENT98: 그럼 대한민국.txt를 실행시키면 대한게임국.txt를 실행하게 되는 셈이죠.
:아하. 넘겨주기!
CEMENT98: 네. 백괴사전에 비유하자면 넘겨주기 문서인 셈입니다. :) 원본이 삭제되면 그 링크는 못 쓰죠. 그 점도 비슷하네요.
CEMENT98: 그렇다면 하드 링크는 무엇일까요? 이건 바로가기가 아니라, 아예 내용을 복제합니다.
$ln cement98.txt windowscement98.txt
: cp요???
CEMENT98: 아뇨. 그와는 다른 의미로, 아예 내용이 동기화된다고 생각하면 됩니다.
CEMENT98: 그러니까 windowscement98.txt을 반달하면 cement98.txt도 반달이 되고, windowscement98.txt에 내용을 추가하면 cement98.txt의 내용도 추가됩니다.
혹자: 와우.ㅋ
CEMENT98: 그리고 이것은 심볼릭 링크와 달리 둘 중 하나가 날아가도 내용이 보존됩니다. 중요한 내용은 하드 링크를 걸어두는 것이 좋겠죠.
CEMENT98: 참고로 서로 다른 파티션에는 하드 링크가 걸리지 않습니다. 즉 윈도로 치면 c:\abcd와 d:\abcd간 하드 링크가 되지 않는다는 것이지요. 이유는 아이노드 중복...
: 아이노드요???
CEMENT98: 이크 -_-;;; 범위를 벗어나버렸네요. 뭐, 그래도 이유는 짚고 넘어가볼까요. 예를 들어 너님 학번이 12345입니다. 그러면 하드링크된 학생 학번도 12345가 됩니다.
CEMENT98: 그런데, 저 학교에는 12345라는 학번을 가진 다른 학생이 있을 수 있단 말입니다. 결국 학번 중복으로 복제 fail이고, 이를 막기 위해 하드링크 생성 불가... 뭐 이런 개념이죠. ;;

[편집] 압축

두번째구멍:tar? 뭘 타요?
CEMENT98:말장난도 적당히 해야 잼있음요 -_-
CEMENT98:원래 압축에는 gzip, bzip이라는 명령어가 있습니다.
CEMENT98:하지만 뭐, 우리는 조금 더 실용적으로 나가자는 차원에서 그 부분은 생략하고, 혹시 x.tar.bz이라는 확장자 들어봤나요?
:아 그거! 리눅스용 파일은 죄다 tar.gz로 줌 -_-;
CEMENT98:그것은 tar이라는 묶음 파일에서 gz, 즉 gzip 압축까지 했다는 의미입니다! 리눅스에서는 흔히들 이렇게 쓰지요.
:어. tar는 걍 묶음이었음? 켁.
CEMENT98: 네. 그리고 gzip대신 압축률을 더 높이기 위해 속도가 다소 떨어지더라도 bzip2를 쓰는 경우가 있는데요, 이 때는 z 대신 j를 써주시면 됩니다.
CEMENT98:그래서 물론 zip으로 압축도 가능하긴 합니다만, 보통 리눅스에서는 tar.gz을 애용합니다.
CEMENT98:그렇다면 이것만 외우세요. v는 자세한 내용 보기니 빼먹어도 됩니다.
$tar -cvzf test test2
test/
test/tess
test/test
test/tes3
test/tttttt
test/tesb
$tar -xvzf test test2
test/
test/tess
test/test
test/tes3
test/tttttt
test/tesb
CEMENT98:tar -cvzf는 압축하는 것, tar -xvzf는 압축을 푸는 것, 그렇다면 c와 x의 의미는 대충 감이 잡히죠?
혹자:c는 묶는 것, x는 파일 추출요.
CEMENT98:똑똑한 학생이로군요. 정답입니다.
CEMENT98:저 옵션의 의미는 이 밑에 있습니다.
옵션 의미
c(create) 새 저장 파일을 만듦
x(extract) 묶음에서 파일 추출
v(verbose) 처리중인 파일이 무엇인지 보여줌
z(gzip/ungzip) gzip으로 압축/압축 해제한다.
j(bzip2/unbzip2) bzip으로 압축/압축 해제한다.
f(file) 저장 파일 지정
CEMENT98:자 그럼 다음으로 후루루 후딱 넘어가도록 하지요. ㅋ

[편집] REDIRECTION, PIPE

[편집] redirection

CEMENT98:우리 ls 명령어를 쳤을 때, 이것이 화면에 나타났지요?
$ls
autumn_css   chrome.svg   test       그림 .svg  비디오  제목없음.xcf
autumn_html  chrome2.svg  test2      다운로드   사진
bin          public_html  공개       문서       서식
chrome.png   suse.jpg     그림 .png  바탕화면   음악
CEMENT98:너님들 ls 어떻게 입력하셨지요?
두번째구멍:키보드로 치지 뭘로 쳐요. -_-;
CEMENT98:그리고 Enter를 쳤다는 것도 빠지면 안 되겠죠. 그렇다면 이 그림이나 음악 바탕화면 autumn 어쩌고 등등은 어디로 나온 것이죠?
:당연히 터미널이죠.;;
CEMENT98:그렇습니다. 키보드로 터미널에 직접 입력한 후 Enter를 입력하였으며, 그 결과물이 터미널로 출력되었지요.
CEMENT98:그렇다면 이것을 재미나게 변형해보겠습니다. 아까 grep에 쓰던 그 문서 있죠? 재탕합니다.
:아. 젭라 rm으로 지워버렸는데
CEMENT98:그럼 다시 위에서 gedit이나 kwrite로 컨트롤씨브이 하세요.
$cat < linux
멍청이  리눅스를 배우다
뭐가 뭔지 하나도 모르고 리눅스를 배우다
멍청하게도 시키는대로 다 따라한다 카더라
아무튼 강의를 따라가며 grep이라는 명령어를 배우다
그래서 이 문장을 그대로 컨트롤 씨 브이 신공으로 입력하다
뭐, 아님 말고. 알 게 뭐야
CEMENT98:cat linux와의 차이를 설명해보실 분?
:똑같아 보이는데... linux라는 파일로부터 결과물을 입력받았다는 정도인가? -_-;
CEMENT98:그렇습니다. 별 차이 모르겠다 하더라도 원리적인 면에서 기억해두면 좋겠지요.
CEMENT98:그렇다면 이번에는 표준 출력을 바꿔보겠습니다!
$ls > a
$_
두번째구멍:아무 일도 없어요.
CEMENT98:그렇다면 cat a 해보실래요?
$cat a
autumn_css   chrome.svg   test       그림 .svg  비디오  제목없음.xcf
autumn_html  chrome2.svg  test2      다운로드   사진
bin          public_html  공개       문서       서식
chrome.png   suse.jpg     그림 .png  바탕화면   음악
$_
:오잉? 이거 신기한뎈?
CEMENT98:바로 그것입니다! ls의 결과물이 a로 쏙~ 들어가버렸지요.
CEMENT98:사실은 표준 출력이 바뀐 것입니다. 본래 터미널로 찍혀야 할 것이 a라는 파일로 찍혀버린 것이죠.
CEMENT98:셸마다 차이가 있지만, 이 입출력 변경은 대체로 다음과 같은 의미를 지니고 있습니다. 주로 bash를 쓰니 대부분 아래가 맞을 겁니다.
  • <: 너님 내 입력 가져가셈요
  • <<:너님 입력인데 기존 내용 다음에 추가요
  • >: 너님 내 출력 다 가져가셈요
  • >>: 너님 출력인데 기존 내용 다음에 추가요
  • 1>:에러 아닌 것(표준 출력) 가져가셈요
  • 2>:에러난 것(표준 에러 출력) 가져가셈요
CEMENT98:그렇다면, find /etc -name resolv.conf 2>/dev/null은 무엇일까요?
두번째구멍:오류가 나면 /dev/null에 쓴다는 건데?
CEMENT98:맞습니다. 여기에서 /dev/null은 블랙홀과 같은 역할을 하지요. 이렇게 하면 permission denied와 같은 귀찮은 메시지를 안 볼 수 있습니다.
:으앗. 좋다. ㅋ
CEMENT98:그리고 표준 입력과 표준 출력을 강조하기 위해 "-"를 이용하는 경우가 있습니다. 예를 들어 cat - > a.txt 처럼요~
: 그래서 -는 어디에 쓰이는데요?
CEMENT98: 은근히 쓰입니다. 예를 들어볼까요? vim을 입력하면 그냥 vim이 실행되죠?
혹자:...?? 이거 어떻게 써요?
CEMENT98: 아 그건 나중에 강의할 것이고, 일단은 :q 해봐요. 이미 거기다 뭐 썼으면 :q!를 하시던가.
CEMENT98: 그리고 이번에는 vim -를 입력합니다.
빔: 표준입력에서 읽는 중...
CEMENT98: 아무거나 쓰고 Ctrl+D를 눌러보실까요?
: 헐퀴;; 아까 쓴게 vim에 찍혀 나옴... 이런 거였구나 ;;;
CEMENT98: 그러합니다. 빠져나오는 방법은 위에서 말한 것과 같습니다. :)

 ×

입력
 ┗━━━━━━▶
제 3의
출력 장소
 
출력(터미널)
▲ redirection의 의미(입출력 장소 변경, 이 그림에서는 출력 장소를 변경하는 것을 나타낸다.)
CEMENT98그렇다면 다음에는 PIPE를 나가볼까요~

[편집] pipe

두번째구멍:파이프? 관?
CEMENT98파이프는 |를 의미합니다. \에다 shift 누르면 나오는 | 말입니다.
:쳇. 알아요. 그런데 이거 평소에 안 쓰지 않나?
CEMENT98:무슨 말씀. 백괴 문서 편집 안 한 사람같은 소리 하지 마세요.
CEMENT98:아니 꼭 백괴 문서가 아니더라도, 이건 의외로 유용하게 쓰이고 있다고요. 이건 결과물을 그대로 넘겨주는 것입니다.
혹자:넘겨준다? 상상이 안 가는데.
CEMENT98:그렇다면, 다음과 같이 해 보세요.
$cd /etc
$ls -l
두번째구멍:꽤 많네요..;;;
CEMENT98:요걸 more로 조금씩 조금씩 들여다보면 좋을 턴데 말이죠. 바로 이 때 파이프를 소환합니다.
$ls -l | more
합계 2400
drwxr-xr-x  5 root root      4096  8월  6 07:33 ConsoleKit
-rw-r--r--  1 root root      2875 12월  5  2007 DIR_COLORS
(중략)
-rw-r--r--  1 root root       279  2월 19  2011 alsa-pulse.conf
--More--
두번째구멍:와우 ls에 more가 붙으니... 편하긴 하겠군요.
CEMENT98:PIPE는 결과값을 넘겨줍니다. 예를 들어
$newyear
봉만이
CEMENT98:라고 출력되는 명령어, 혹은 프로그램이 있다 가정하면... 다음과 같이 할 시
$newyear | person
CEMENT98:아래 그림과 같은 효과를 보게 될 것입니다.
봉만이.jpg
두번째구멍:새해 봉만이 받으세요. 네요 ㅋ
CEMENT98:그렇습니다. 후후. 게다가 이것은 여러 번 결과값을 넘겨주기도 가능하지요.
$ps x | grep ? | more
 2777 ?        Ss     0:00 /bin/sh /usr/bin/startkde ko_KR.utf8
 2845 ?        Ssl    0:00 ibus-daemon --xim -d
(중략)
 4157 ?        S      0:00 /usr/bin/kactivitymanagerd
--More--
:와우 더 많이도 할 수 있겠지...
CEMENT98:물론이죠. 과제 낼까요? 파이프 5개 이상 들어가는 명령어 만들기!
:(절레절레!)
CEMENT98:어, 가능한데요... 이번에 배운 redirection과 pipe는 꼭! 알아두세요. 정말로 정말로 유용합니다.
CEMENT98:이번에는 퀴즈는 안 내겠습니다. 재탕하면 되지만, 저도 특수함수 짜고 문제 내기 피곤하거든요. 대신 과제가 있습니다.
: ㅇ<-<
  1. find만을 이용해 /var/log의 boot.log를 제외한 boot-날짜.log를 모두 삭제하는 명령어 만들기
    단, boot로 시작하는 log 파일은 boot.log와 boot-날짜.log만 있다고 가정한다.
  2. /etc/passwd에서 /sbin/nologin이 포함된 줄을 홈 디렉터리의 z라는 파일로 출력하기
CEMENT98:3개 내려다 2개 내는 것입니다!
: 켁... 저거 보기만 해도 ... ;;; 아무튼 해 오겠습니다!
개인 도구
이름공간 목록 보기/편집
변수
행위
차림표
아랫방
자매 프로젝트
유지보수
커뮤니티
도구 모음