올해 첫 시작으로 missing semester 를 다 듣는것을 목표로 잡았다.
한 강좌씩 exercise까지 풀이하여 블로그에 정리하려 한다. (~1/15)
는 다른 업무로 실패. 천천히 시간날때 하나씩 올리겠다.
매번 리눅스 명령어 찾아보는데 시간도 많이들고 자꾸 까먹는것 같아 한번 들어보려 한다.
Motivation : 대부분 gui로 프로그램에 인풋을 넣고 작업할 수 있지만, 프로그램을 완전히 활용하진 못한다.
우리는 버튼만 누를 수 있고 문제점이 있다면 복사 붙여넣기 정도밖에 못한다. 그러므로 그 프로그램들이 어떻게 만들어지는지, 컴퓨터와 어떤관련이 있는지를 알아야한다. 내부에 숨어져있는 연결을 알지 못하면 그저 우리에겐 magical incantation일 뿐이다.
Class structure : 1시간짜리 11강의
Topic1: The shell
using the shell
-컴퓨터는 명령어를 받기위한 많은 인터페이스가 있다. GUI, voice, AR/VR등... 하지만 대부분들은 유저가 할 수 있는것들이 제한 되어있다.(버튼이 없는곳을 못누른다거나 프로그램 되어있지 않은 명령어를 준다던가) 최대한 활용하기 위해서는 아래 레벨로 내려와서 textual interface인 The shell을 공부해야 한다.
Shell은 종류가 많지만 여기선 Bourne Again SHell, "Bash"를 배운다. 가장 많이 쓰이며 다른 shell과 syntax가 비슷하다.
위부터
1)missing: machine name
2)날짜
3)echo라는 프로그램을 hello 라는 argument로 실행
그러면 shell은 어떻게 프로그램(echo)인지 알고 실행하는 걸까?
-> shell은 python같은 programming environment이기 때문에 변수,조건문,루프,함수들이 있다. 만약 내가 command를 입력하면 shell은 이 적은양의 코드를 interpret하는 효과와 같다. 만약 command가 shell의 key word가 아니라면
$PATH 라는 곳에서 있는 프로그램인지 찾아본다. 찾아서 있으면 run 한다
위부터
echo $PATH : 프로그램을 찾아보는 directory 위치
which echo : echo라는 프로그램이 어디있는지, 어디에 있는 프로그램을 실행시켰는지 찾음
/bin/echo $PATH : 어떤 프로그램 쓸지 명확히 정해줌(/bin/echo), argument 건내줌( $PATH)
Navigating in the shell
shell에서 path는 / 또는 \로 나눠진다.(linux,macOS: '/', windows:'\')
리눅스,맥은 '/'이 root 로 써 모든 directorie가 이 아래 있는 반면에
윈도우는 각 disk partition마다 하나의 루트가 있다. (ex) C:\)
주소중 / 로 시작하는것은 절대경로(absolute path)라고 하고
다른 path(pwd, '.', '..')을 이용하는것은 Relative path라고 한다.
cf) shell prompt는 옆에 뜨는 missing:~$을 의미, 또는 계속 입력을 받는 프로그램
'-', '--'로 시작하는것은 option, ex) -h or --help는 help text를 띄워줌.
drwxr-xr-x 1 중
첫번쨰 d= directory임을 의미
다음 세문자(wxr) : file owner의 permission -> write, excute, read
다음 세문자(-xr): owning group의 permisssion
다음 세문자(-x): everyone else의 permission
cf)이외에 유용한 program : cp, mkdir, mv, man(manual program)
Connecting programs
파일에 input, output stream과 관련해서'<' '>' 사용 가능
'>>' : append to a file
'|' : program chain 할때 사용, 한 프로그램의 아웃풋이 다른프로그램의 인풋일때
A versatile and powerful tool
sudo : 'super user' or 'root' 로써 파일 실행.
root로써 실행해야 하는 파일중 하나는 /sys.sysfs에 있는 sysfs(filesystem)들이다.
ex) /sys/class/backlight으로 brightness 조절 가능
find로 찾아서 들어가서 brightness에 3 입력 -> sudo 필요
|, >, < 같은 Operation들은 echo 프로그램이 아닌 shell에 의해서 실행된다. 프로그램들은 그저 아웃풋 인풋을 받을 뿐이다.
위같이 sudo echo 3 > brightness 로 치면 shell이 brightness라는 system file을 여는것이므로 권한이 없다(shell은 현재 user 권한만 가지고있다). 그러므로 tee (/sys파일을 열기위한 프로그램)을 이용하여 root 권한으로 설정해야한다.
Exercise
- For this course, you need to be using a Unix shell like Bash or ZSH. If you are on Linux or macOS, you don’t have to do anything special. If you are on Windows, you need to make sure you are not running cmd.exe or PowerShell; you can use Windows Subsystem for Linux or a Linux virtual machine to use Unix-style command-line tools. To make sure you’re running an appropriate shell, you can try the command echo $SHELL. If it says something like /bin/bash or /usr/bin/zsh, that means you’re running the right program.
- Create a new directory called missing under /tmp.
- Look up the touch program. The man program is your friend.
- Use touch to create a new file called semester in missing.
- Write the following into that file, one line at a time:
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu
- Try to execute the file, i.e. type the path to the script (./semester) into your shell and press enter. Understand why it doesn’t work by consulting the output of ls (hint: look at the permission bits of the file).
- Run the command by explicitly starting the sh interpreter, and giving it the file semester as the first argument, i.e. sh semester. Why does this work, while ./semester didn’t?
- Look up the chmod program (e.g. use man chmod).
- Use chmod to make it possible to run the command ./semester rather than having to type sh semester. How does your shell know that the file is supposed to be interpreted using sh? See this page on the shebang line for more information.
- Use | and > to write the “last modified” date output by semester into a file called last-modified.txt in your home directory.
- Write a command that reads out your laptop battery’s power level or your desktop machine’s CPU temperature from /sys. Note: if you’re a macOS user, your OS doesn’t have sysfs, so you can skip this exercise.
A:
1. A: $SHELL 결과 /bin/bash 출력됨. 현재 linux18.04.4 LTS에서 작업중
2. mkdir /tmp/missing
3. man touch
4. touch semester(@/tmp/missing)
5. echo -e '#!/bin/sh\ncurl --head --silent https://missing.csail.mit.edu
6. 7.ls -l로 확인결과 semester file에 x(execute) 권한이 없음
8. chmod + -로 권한을 주고 뺏을 수 있음
9. chmod +xr shemester
10. ./semester | grep -i last | cut -d ' ' -f 2- >/home/last-modified.txt
11. cat /sys/devices/virtual/thermal/thermal_zone0
'linux, 시스템' 카테고리의 다른 글
[Trouble shooting] 인터넷 안되는 offline 환경 에서 .whl file 설치하기 (0) | 2021.06.07 |
---|---|
[Trouble Shooting]docker, pycharm위에서 한글깨짐 in ubuntu 18.0.4 (0) | 2021.05.03 |
[Trouble shooting] 원격작업을 위한 SSH, vnc 설정 in Ubuntu (0) | 2021.02.23 |
[Trouble shooting] nvidia-docker-toolkit (0) | 2021.02.18 |