전체 글 586

운영체제 (공룡책) 0. 프롤로그

운영체제 (operating syatem)는 컴퓨터의 핵심이다. 하지만 항상 공부를 해야하겠다고 생각했는데 그동안 시작을 하지 못했다. Nand to tetris 프로젝트를 진행하면서 컴퓨터 기초에 대한 관심이 생겼고, 운영체제에 대한 관심이 늘어나서 운영체제를 본격적으로 공부하기로 했다. 그래서 찾았던 책이나 자료가 여러가지인데, 가장 유명한 “공룡책”을 공부하기로 했다. 교과서 형태의 책이기 때문에 처음에 접근하기 힘들어서 제대로 시작을 못했지만, 매주 리눅스 블로그를 쓰면서 겸사겸사 책을 읽고 정리하기로 했다. 목표는 1-2주에 한챕터 정도로 하고 있다. 특히 책을 읽으면서 중간에 그만 둔 경우가 많았기 때문에 이번에는 시간이 걸리더라도 완독을 목적으로 하고 있다. 다음주부터 화이팅!

카테고리 없음 2021.08.08

The linux command line - 36. exotica

36. Exotica 책의 마지막 장에서는 자주 사용하지는 않지만 특정 상황에서 도움이 되는 bash 명령어들을 살펴볼 것. Group commands and subshells 아래 문법으로 사용한다. # group command { command1; command2; [command3; ...] } # subshell (command1; command2; [command3;...])둘 다 redirection을 관리하는데서 사용된다. 여러 명령에서 redirection을 수행하는 스크립트를 생각해보자. ls -l > output.txt echo "foo.txt" >> output.txt cat foo.txt >> output.txt위 명령어는 각 명령어의 output들을 output.txt에 적는 간단..

backend/ubuntu 2021.08.01

The linux command line - 35. array

35. Array 지금까지 살펴본 변수는 단일 값을 포함하는 스칼라 변수. 이번 장에서는 여러 값을 보유하는 array 데이터 구조를 살펴보고 쉘에서 이를 다루는 방식을 정리. What is array? 배열은 한 번에 둘 이상의 값을 보유하는 변수. 대부분의 프로그래밍 언어는 다차원 배열을 지원하지만 bash의 배열은 단일 차원으로 제한됨. bash 2에서 처음 array를 지원. sh에서는 array를 지원하지 않음. Create array array 변수는 다른 bash 변수와 마찬가지로 이름이 지정 [me@linuxbox ~]$ a[1]=foo [me@linuxbox ~]$ echo ${a[1]} foodeclare를 사용해서 만들수도 있음. [me@linuxbox ~]$ declare -aaAs..

backend/ubuntu 2021.07.25

The linux command line - 34. string and numbers

34. Strings and numbers 33장에서는 파일 수준의 데이터를 처리하는데 중점을 두었지만, 많은 프로그래밍 문제는 작은 데이터 단위를 사용해서 해결하는 경우들이 많음. 이번 챕터에서는 문자열과 숫자를 조작하는데 사용되는 쉘 기능을 다룸. Parameter expansion 이전 장에서 이미 쉘 변수와 같은 몇몇 parameter expansion을 다뤄보았다. 쉘은 훨씬 많은 기능을 제공함. 특별한 이유가 없지 않으면 parameter expansion을 큰따옴표로 묶는것이 좋음. Basic parameters 가장 단순한 형태는 일반적인 변수 형태. 중괄호로 묶을수도 있음. $a ${a}중괄호는 큰 영향을 미치니 않지만 다른 텍스트와 인접한 경우 사용됨. a="foo" echo "$a_f..

backend/ubuntu 2021.07.18

33 - flow control: for loop (The Linux command line book)

33. Flow control: looping with for for loop는 이전에 다룬 while과 until과는 다르게 processing sequence를 제공한다. for: traditional shell form 전통적인 형태의 for문은 다음과 같이 사용. for variable [in words]; do commands donefor문은 command line에서도 유용하게 사용될 수 있다. [me@linuxbox ~]$ for i in A B C D; do echo $i; done A B C Dfor문의 강력한 기능 중 하나는 word list를 동적으로 만들 수 있다는 점. brace expansion을 사용 가능. [me@linuxbox ~]$ for i in {A..D}; do e..

backend/ubuntu 2021.07.04

The linux command line: 32 - positional parameters

32. Positional parameters shell 프로그램이 command line에서 컨텐츠를 받을 수 있는 법을 다룸. Accessing the command line shell은 positional parameter라고 불리는 변수를 제공함. 이 변수는 0~9까지 이름이 붙어있고, 다음 방식으로 사용됨. #!/bin/bash # posit-param: script to view command line parameters echo " \$0 = $0 \$1 = $1 \$2 = $2 \$3 = $3 \$4 = $4 \$5 = $5 \$6 = $6 \$7 = $7 \$8 = $8 \$9 = $9 "이를 파라미터 없이 실행시키면 다음과 같음. [me@linuxbox ~]$ posit-param $0..

backend/ubuntu 2021.06.27

The linux command line 31. Flow control: branching with case

31. Flow control: branching with case 28장에서 다뤘던 flow control을 이어서 다룸. shell에서는 단순히 if 명령어 이외에 case 명령어도 제공해줌. The case command case word in [pattern [| pattern]...) commands ;;]... esac28장에서 작성했던 명령어는 다음과 같음. #!/bin/bash # read-menu: a menu driven system information program clear echo " Please Select: 1. Display System Information 2. Display Disk Space 3. Display Home Space Utilization 0. Quit "..

카테고리 없음 2021.06.20

linux command line - 30. troubleshooting

30. Troubleshooting 스크립트가 복잡해질수록 문제가 발생할 가능성이 많아짐. 여기에서는 스크립트에서 발생하는 일반적인 몇가지 오류를 살펴보고 문제를 추적/근절하는 몇가지 기술 소개 #!/bin/bash # trouble: script to demonstrate common errors number=1 if [ $number = 1 ]; then echo "Number is equal to 1." else echo "Number is not equal to 1." fiSyntax error 가장 흔하게 발생하는 에러. 쉘은 syntax error가 발생하면 스크립트 실행을 중지시킴. Missing quote quoting이 없으면 에러가 나는 경우. 에러 메세지의 줄 번호가 누락된 따옴표가 ..

backend/ubuntu 2021.06.06