ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ./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"

     

    example3.sh & using_example.sh

    왼쪽의 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 

     

     

    • (고급) 명령 또는 스크립트를 작성하여 디렉토리에서 가장 최근에 수정 된 파일을 재귀적으로 찾으시오. 그리고 모든 파일을 최신순으로 나열 할 수 있습니까?

     

    MEMO

    '컴퓨터 구조' 카테고리의 다른 글

    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
Designed by Tistory.