이번 사이트는 기존 문제를 풀던 워게임과는 다른 Command 문제에 관한 챌린지 사이트이다.
1. 첫 문제라 그런지 쉬웠다. “hello world”를 출력하면 되는 문제이다.
> echo "hello world”
2. 다음 문제는 현재 경로를 출력하라는 문제이다.
> pwd
3. 현재 디렉터리에 있는 모든 파일의 이름을 한 줄에 하나씩 나열하라는 문제이다.
> ls
4. access.log 파일의 내용을 출력하라는 문제이다.
> cat access.log
5. access.log 파일의 마지막 5줄을 출력하라는 문제이다.
> tail -n 5 access.log
6. take-the-command-challenge라는 이름을 가진 빈 파일을 만드는 문제이다.
> touch take-the-command-challenge
7. tmp/files 라는 디렉터리를 생성하는 문제이다.
> mkdir tmp | mkdir tmp/files
8. take-the-command-challenge 파일을 tmp/files로 복사하는 문제이다.
> cp take-the-command-challenge tmp/files
9. take-the-command-challenge 파일을 tmp/files로 이동시키는 문제이다.
> mv take-the-command-challenge tmp/files
10. tmp/files/take-the-command-challeng를 심볼릭 링크파일로 생성하는 문제이다.
> ln tmp/files/take-the-command-challenge take-the-command-challenge
> ln take-the-command-challenge tmp/files/take-the-command-challenge
그냥 ln만 치면 되는 줄 알았는데 옵션을 써야하는줄 몰랐다.
> ln -s tmp/files/take-the-command-challenge take-the-command-challenge
11. 모든 파일들을 삭제하라는 문제이다.
> rm -rf * .*
12. .doc 확장자를 가진 파일들을 모두 삭제하라는 문제이다.
> find -name "*.doc" -exec rm -rf {} \;
13. access.log 파일에서 “GET” 문자열이 들어간 줄들만 출력하라는 문제이다.
> grep "GET" access.log
14. “500”이라는 문자열이 들어간 파일을 찾아서 파일 이름만 출력하라는 문제이다.
> grep -lr "500”
15. access.log로 시작하는 파일들을 출력하는 문제이다.
> ls -a access.log*
문자열 "500"이 포함된 "access.log"로 시작하는 현재 디렉토리의 모든 파일에서 일치하는 모든 행(파일 이름 또는 파일 경로 없음)을 인쇄합니다.
현재 디렉터리에 access.log라는 이름의 파일이 없으므로 재귀적으로 검색해야 합니다.
16. “500”이라는 문자열이 있고, access.log로 시작하는 파일을 찾아 해당 라인을 출력하라는 문제이다.
- access.log로 시작하는 파일들은 var/log/httpd에 있었고, 하위폴더까지 포함하여 찾아주는 옵션을 사용했다.
> grep -rh "500”
17. access.log로 시작하는 파일에서 IP주소만 출력하라는 문제이다.
- IP 주소는 1번째 위치에 있다.
> find -name access.log* -exec awk '{print $1}' {} \;
18. 현재 작업 디렉터리에 있는 파일 수를 계산하고, 파일 수를 하나의 정수로 출력시키는 문제이다.
> ls -l | wc -l
19. access.log 파일의 내용을 정렬하여 출력하라는 문제이다.
> cat access.log
> cat access.log | sort
20. access.log 파일에서 “GET” 문자열이 있는 줄의 수를 출력하라는 문제이다.
> cat access.log | grep "GET”
> cat access.log | grep "GET" | wc -l
21. split-me.txt 파일의 ; 문자로 구분된 숫자를 한 줄에 하나씩 출력시키라는 문제이다.
- split-me.txt 파일의 내용
- tr : 반복되는 문자열 제거, 대문자 소문자 변환, 문자열 바꾸기 및 제거와 같은 작업을 할 수 있는 명령어
- -d : 삭제
> tr ';' '\n' < split-me.txt
22. 1부터 100까지의 숫자를 출력시키라는 문제이다.
- echo
- {} : 명령을 그룹화하여 순서 지정 가능
> echo 1-100
> echo (1-100)
> echo {1-100}
> echo {1..100}
23. "challenges are difficult” 라는 문자열이 포함된 .txt파일이 있으며(일부 하위 디렉터리에 존재), 해당 .txt 파일에서 문자열을 삭제하라는 문제이다.
- “about this challenge.txt“ 파일의 내용
challenges are difficult
Ut placerat porttitor elit eu imperdiet. challenges are difficult Ut eu est sapien. Vivamus tempus, erat convallis imperdiet venenatis, nunc felis placerat lacus, ac elementum enim tortor sed massa. Ut vitae orci sapien. Cras ut felis lacus. Vivamus at leo aliquam ex placerat ornare non vitae libero. Nullam elementum, ex ac luctus rutrum, nisi libero ullamcorper massa, ut fermentum mi eros vitae dui. challenges are difficult challenges are difficult
> sed -i "challenges are difficult" **/*.txt
24. sum-me.txt 파일에 있는 숫자들을 모두 더하라는 문제이다.
- sum-me.txt 파일의 내용
> cat sum-me.txt | awk '{sum+=$1} END{print sum}’
25. 디렉터리의 파일들을 파일명만 출력시키는 문제이다.
- find
- -type : 확장자 지정
- -printf : 출력 형식 지정
- %h = 경로, %f = 파일명, %k = KB, %s = Bytes
- 형식 : <경로/파일명> <파일크기KB>
- 형식 : <경로/파일명> <파일크기Bytes>
> find ./ -type f -printf "%f\n”
26. 디렉터리 내 파일들의 확장자를 모두 지우라는 문제이다.
- rename : 하나 혹은 하나 이상의 파일명을 일괄 변경할때 사용하는 명령어
- rename 's/찾을패턴/바꿀패턴/' 대상파일
> find * -type f | rename 's/\..*//’
27. 모든 파일명의 공백 문자를 .으로 치환하라는 문제이다.
> ls | sed 's/ /./g’
28. .tf 파일이 포함된 디렉터리를 출력시키는 문제이다.
> dirname **/*tf | uniq