lecture 2 linux basic commands,shell and make september 8, 2015 kyu ho park
TRANSCRIPT
Lecture 2Linux Basic Commands,Shell and
Make
September 8, 2015Kyu Ho Park
Computer Engineering Research Labora-tory
Linux Basics
Computer Engineering Research Labora-tory
root 계정 전환ubuntu@omap:~$ sudo passwd root[sudo] password for ubuntu: temppwdEnter new UNIX password: temppwd ( 또는 원하는 패스워드 )Retype new UNIX password: temppwd ( 또는 원하는 패스워드를 다시 입력 )passwd: password updated successfullyubuntu@omap:~$ su rootPassword: temppwd ( 또는 위에서 입력한 패스워드 )root@omap:/home/ubuntu#
Computer Engineering Research Labora-tory
Linux commands File related:
ls , cd, mkdir, rm, df, du, mount, unmount, mkfs touch, chmod, chown, tar, cp, mv,
Process related:clear, whoami, whereis, su, pwd
Computer Engineering Research Labora-tory
Shell-command interpreter
‘User’LinuxLinux
Shell
Computer Engineering Research Labora-tory
Shell programming-script : it is a file that contains shell command and it is a shell program.
-Creating a Script#!/bin/bash
# An example of a shell script that replaces the command ‘ls –l > output.txt’
ls –l > output.txt
exit 0
Computer Engineering Research Labora-tory
Shell Syntax Variables Conditions Program control: if, elif, for, while, until, case Functions Lists
Computer Engineering Research Labora-tory
Project1-Task1
Computer Engineering Research Labora-tory
Tree search
9
Computer Engineering Research Labora-tory
$tree.├── Algol│ ├── Ch1│ │ ├── c1p1│ │ ├── c1p1.c│ │ ├── c1p2│ │ ├── c1p2.c│ │ ├── c1p3│ │ ├── c1p3.c│ │ ├── data│ │ ├── data.txt│ │ ├── ex03-01│ │ ├── ex03-01.c│ │ ├── ex04-01│ │ ├── ex04-01.c│ │ ├── ex10-01.c│ │ ├── ex12-01c│ │ ├── ex12-01c.c│ │ ├── ex12-01s│ │ ├── ex12-01s.c│ │ ├── fifo│ │ ├── honor│ │ ├── honor.c│ │ ├── newdata1.txt│ │ ├── newdata.txt│ │ ├── newname.txt│ │ ├── test.txt│ │ └── test.txt.soft -> test.txt│ ├── Ch2│ │ ├── mem-region│ │ └── mem-region.c│ ├── fileTest│ │ └── data│ ├── infile│ ├── outfile│ ├── pipewr│ ├── pipewr.c│ ├── testWelcom│ ├── testWelcom.c│ └── testWelcom.s├── clone├── clone.c├── DDriver│ ├── Makefile│ ├── P301│ ├── P301.c│ ├── P303│ ├── P303.c│ └── test.c├── express├── fork├── fork.c├── sh1├── shQuot├── traverse└── treesearch
10
Computer Engineering Research Labora-tory
Interactive program
Computer Engineering Research Labora-tory
Making a script executable
Computer Engineering Research Labora-tory
Shell script( commands in a file )
Computer Engineering Research Labora-tory
variables
Computer Engineering Research Labora-tory
Quoting
Computer Engineering Research Labora-tory
if~fi if [ -d $directory ]; then ---- fi
if[ -d $directory ] then --- fi
Computer Engineering Research Labora-tory
if~fi -d file //True if the file is a directory -e file //True if the file exists -f file //True if the file is a regular file -x file //True if the file is executable ----
Computer Engineering Research Labora-tory
‘if~fi’ control structure if condition then
statements else
statements fi
Computer Engineering Research Labora-tory
forSample script
Computer Engineering Research Labora-tory
for
Computer Engineering Research Labora-tory
while while condition do statements done
Computer Engineering Research Labora-tory
functions function( ) {
statements }
Computer Engineering Research Labora-tory
function example
Computer Engineering Research Labora-tory
Project 2 Simple C programing
Basic Linux System Callsopen(),read(),write(),lseek(),close()
24
Computer Engineering Research Labora-tory
Basic Linux System Callsopen(),read(),write(),lseek(),close()
25
open( ) #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int open(const char *path, int oflags); int open(const char *path, int oflags, mode_t mode); Open with oflag=O_CREATE, we must use the three-pa-
rameter form with mode. mode: S_IRUSER: Read permission, owner S_IWGRP:Write permission, group S_IXOTH: Execute permission, others oflag={O_RDONLY,O_WRONLY,O_RDWR} ored
with{O_APPEND, O_TRUNC, O_CREATE, O_EXCL}
Computer Engineering Research Labora-tory
read(), write() read()
#include <unistd.h>size_t read(int fildes, void *buf,
size_t nbytes);
write() #include <unistd.h>
size_t write(int fildes, const void *buf, size_t nbytes);
26
Computer Engineering Research Labora-tory
lseek() lseek()
#include <unistd.h>#include <sys/types.h>off_t lseek(int fildes, off_t offset, int
whence); //lseek() system call sets the read/write pointer of a file descriptor fildes. whence: SEEK_SET: offset is an absolute position, SEEK_CUR:offset is relative to the current position, SEEK_END:offset is relative to the end of the file.
27
Computer Engineering Research Labora-tory
rand( ) rand( )
#include <stdlib.h>#define RAND_MAX 0x7ff
rand() //it will generate a number of [0, 0x7ff]
28
Computer Engineering Research Labora-tory
memalign() memalign() allocates size bytes and re-
turns a pointer to the allocated memory. The memory address will be a multiple of boundary, which must be a power of two.
29
Computer Engineering Research Labora-tory
make and makefile
Computer Engineering Research Labora-tory
make [-f filename]% make [-f filename] - if you don’t use –f option, the default file is Make-file or makefile. -if there are Makefile and makefile at the same time, Makefile will be selected.
Computer Engineering Research Labora-tory
example/*file: main.c*/#include <stdio.h>#include “test.h”
int main(void){
test1();test2();printf(“Hello world!\
n”);return 0;
}
/*file: test.h*/void test1(void);void test2(void);
/*file: test1.c*/void test1(void){
}
/*file: test2.c*/void test2(void){
}
Computer Engineering Research Labora-tory
Without ‘make’%gcc –c main.c%gcc –c test1.c%gcc –c test2.c%gcc –o test main.o test1.o test2.o
Computer Engineering Research Labora-tory
With ‘make’-Makefile %vi Makefile test : main.o test1.o test2.o
gcc –o test main.o test1.o test2.o main.o : test.h main.c
gcc –c main.c test1.o : test.h test1.c
gcc –c test1.c test2.o : test.h test2.c
gcc –c test2.c
%makegcc –c main.cgcc –c test1.cgcc –c test2.cgcc –o test main.o test1.o test2.o
Computer Engineering Research Labora-tory
test2.c is modified%vi test2.c/*file:test2.c*/#include <stdio.h>void test2(void){
printf(“This is test2.c\n”);} %make gcc –c test2.c gcc -0 test main.o test1.o test2.o
Computer Engineering Research Labora-tory
Macros in a makefile
Computer Engineering Research Labora-tory
Computer Engineering Research Labora-tory
LabelMakefile2:
Computer Engineering Research Labora-tory
make clean
Computer Engineering Research Labora-tory
Typical MACRO var.#Which compilerCC =gcc #Option flagsCFLAGS = -g –Wall#Program source filesSRCS = main.c test1.c test2.c#object filesOBJS#Library filesLIBS#Library directoriesLIBDIRS
Computer Engineering Research Labora-tory
Computer Engineering Research Labora-tory
Error
Computer Engineering Research Labora-tory
Implicit rule$@ #Name of the current target$? # List of prerequisites(files the target depends on) #changed more recently than the cur-rent target$< #Name of the current prerequisite$* #Name of the prerequisite, without any suffix
Computer Engineering Research Labora-tory
Kernel Compile1.Kernel Configuration to give the information of current H/W, Kernel, Network characteristics to the newly made kernel. -make config, make menuconfig, make xconfig2.Kernel compile -make bzImage or make zImage( for a small sized
kernel) - make( after Linux version 2.6)
3.Kernel install -make install