-
./Missing Semester - 셸(Shell) 스크립팅컴퓨터 구조 2021. 1. 5. 22:45
./Missing Semester
연습문제
- 사이즈는 사람이 읽을 수 있을 법한 형식으로 (e.g. 454M instead of 454279954)
- 최신순 파일 정렬
- 색상화 되어 출력
[man ls] (https://www.man7.org/linux/man-pages/man1/ls.1.html)를 읽고 다음과 같은 방식으로 파일을 나열하는ls 명령을 작성합니다.
l - 자세히 출력
h - 사람이 읽을 수 있을 법한 형식으로 출력
a - 숨겨진 파일까지 모두 출력
t - 시간순으로 출력
ls -lhat --color
-
다음을 수행하는 bash 함수marco 및polo를 작성합니다. marco를 실행할 때마다 현재 작업 디렉토리가 어떤 방식으로 저장되어야합니다. 그러면polo를 실행할 때 어떤 디렉토리에 있든 상관없이 polo 가cd를 수행해서 marco 를 실행 한 디렉토리로 돌아갑니다. 디버깅을 쉽게하기 위해marco.sh 파일에 코드를 작성하고source marco.sh를 실행하여 쉘에 정의를 (재)로드 할 수 있습니다.
-
거의 실패하지 않는 명령이 있다고 가정 해보십시오. 그것을 디버그하려고 출력을 캡처해야하지만, 실패를 실행하는 데 시간이 오래 걸릴 수 있습니다. 실패 할 때까지 표준 출력 및 오류 스트림을 파일로 캡처하고 마지막에 앞의 모든 것을 출력하는 bash 스크립트를 작성하십시오. 스크립트가 실패하는 데 걸린 실행 횟수도 보고 할 수 있다면 보너스 포인트입니다.
#!/usr/bin/env bash
n=$(( RANDOM % 100 ))
if [[ n -eq 42 ]]; then
echo "Something went wrong"
>&2 echo "The error was using magic numbers"
exit 1
fi
echo "Everything went according to plan"왼쪽의 script를 while문에서 계속 실행시키다가 script에서 exit 1(에러)가 반환되면, 반복문을 돈 횟수를 출력하고, while문을 탈출했다.
-
강의에서 다루었 듯이find의-exec는 검색하는 파일에 대한 작업을 수행하는데 매우 강력합니다. 그러나 zip 파일을 만드는 것과 같이 ** 모든 ** 파일로 작업을 수행하려면 어떻게해야합니까? 지금까지 본 것처럼 명령은 인수와 STDIN 모두에서 입력을받습니다. 명령을 파이핑 할 때 STDOUT을 STDIN에 연결하지만 ‘tar’와 같은 일부 명령은 인수에서 입력을받습니다. 이러한 문제를 해결하기 위해 STDIN을 인수로 사용하여 명령을 실행하는 [xargs] (https://www.man7.org/linux/man-pages/man1/xargs.1.html) 명령이 있습니다. 예를 들어ls | xargs rm은 현재 디렉토리의 파일을 삭제합니다.
당신의 임무는 폴더에서 모든 HTML 파일을 재귀 적으로 찾아서 zip 파일을 만드는 명령을 작성하는 것입니다. 파일에 공백이 있어도 명령은 작동되어야 합니다. (hint: check -d flag for xargs)
find . -name '*.html' | xargs zip 'sh.zip' .
find . -name "*.html" -type f | xargs tar -cvf tmp
-
(고급) 명령 또는 스크립트를 작성하여 디렉토리에서 가장 최근에 수정 된 파일을 재귀적으로 찾으시오. 그리고 모든 파일을 최신순으로 나열 할 수 있습니까?
'컴퓨터 구조' 카테고리의 다른 글
B-Tree - intro (1) 2021.01.11 단순 연결 리스트 (0) 2021.01.10 C - Pointer (0) 2021.01.08 ./Missing Semester - 수업 개요 + shell (0) 2021.01.04 [컴퓨터 시스템] 1. 프로그램이 실행되는 과정 (0) 2020.12.29