iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

大四資工人生,快畢業了,然後呢系列 第 26

#資工人生─Day26-關於Unix那堂課

  • 分享至 

  • xImage
  •  

前言

所有資工人一聽到計算機概論,就會想起他們苦過來的日子XD
我們是上C語言跟C++

在Facebook看到學校老師分享的網站
Computer Science from the Bottom Up

正文

來分享Unix那堂的作業怎麼寫wwww
基本上就是熟系Unix指令以及shell撰寫

----作業01--------
指令模式:
在指令列輸入 vi gcd.c :此指令為利用vi指令編輯 gcd.c這個檔案
操作vi完成程式碼,存檔之後離開vi:此指令為利用vi編輯(i、d),儲存並離開(:wq)
在指令列輸入 gcc -c gcd.c
在指令列輸入 gcc -o gcd gcd.c
在指令列輸入 ./gcd
input two number: 輸入兩個數字
Gcd is 答案

執行結果:
input two number:10 20
Gcd is 10

程式碼:

#include <stdio.h> 
#include <stdlib.h> 

int gcd(int m, int n) {
    while(n != 0) { 
        int r = m % n; 
        m = n; 
        n = r; 
    } 
    return m;
}

int main(void) { 
    int m, n; 

    printf("input two number:"); 
    scanf("%d %d", &m, &n); 

    printf("Gcd is %d\n", gcd(m, n)); 

    
    return 0; 
} 

----作業02--------
操作模式:
在指令列輸入 vi gcd.sh:此指令為利用vi指令編輯 gcd.sh這個檔案
打完程式碼後,存檔並離開vi
在指令列輸入 chmod 755 gcd.sh:利用chmod 增加執行權限
在指令列輸入 ./gcd.sh :執行gcd.sh 此檔案
Enter two numbers with space in between 輸入兩個數字
gcd of 數字 and 數字 is 答案

執行結果:
Enter two numbers with space in between 10 20
gcd of 10 and 20 is 10

#!/bin/bash
echo Enter two numbers with space in between
read a b
m=$a
if [ $b -lt $m ]
then
m=$b
fi
while [ "$m" -ne 0 ]
do
x='expr $a % $m'
y='expr $b % $m'
if [ "$x" -eq 0 and "$y" -eq 0 ]
then
echo gcd of $a and $b is $m
break
fi
m='expr $m - 1'
done

----作業03--------
於網址列輸入 ftp://myweb.fcu.edu.tw
利用自己的NID帳號密碼進行登入
於public資料夾放index.html
作為首頁

----作業04--------
操作模式:
在指令列輸入 vi hw4.sh:此指令為利用vi指令編輯 hw4.sh這個檔案
打完程式碼後,存檔並離開vi
在指令列輸入 chmod 755 gcd.sh:利用chmod 增加執行權限
在指令列輸入 ./gcd.sh :執行gcd.sh 此檔案
Enter two numbers with space in between 輸入兩個數字
gcd of 數字 and 數字 is 答案

#!/bin/bash
cd  /student/iecs/1052

for f in *;do
  if [[ -f "$f/id.txt" ]];then
	cat $f/id.txt 
  else
	echo $f 
  fi
done

----作業05--------

操作模式:
在指令列輸入 vi hw5.sh此指令為利用vi指令編輯 hw5.sh這個檔案
打完程式碼之後,存檔並離開vi
在指令列輸入 chmod 755 hw5.sh 利用 hw5.sh 增加執行權限
在指令列輸入 ./hw5.sh:執行hw5.sh 此檔案

#!/bin/bash
cd  /student/iecs/1052
echo -en "" > ~/unixstd.txt
echo -en "" > ~/Register.txt

for f in *;do
  if [[ -f "$f/id.txt" ]];then
	cat $f/id.txt >> ~/unixstd.txt
  else
        echo "$f" >> ~/Register.txt
  fi
done

cat ~/Register.txt >> ~/unixstd.txt

----作業06--------

操作模式:
在指令列輸入 vi myweb.sh:此指令為利用vi指令編輯 myweb.sh:這個檔案
打完程式碼之後,存檔並離開vi
在指令列輸入 chmod 755 myweb.sh:利用chmod 增加執行權限
在指令列輸入 ./myweb.sh > web.html:執行myweb.sh此檔案並且IO轉向輸出於web.html

#!/bin/bash
cd  /student/iecs/1052
echo "<html><tltle>myweb網站</title>">>test.html
for f in *;do
  if [[ -f "$f/id.txt" ]];then
	echo "<a href="http://myweb.fcu.edu.tw/~$f/" target="_blank">$f</a><br>" >>test.html
  fi
done
echo "</html>" >>test.txt

----作業07-------

操作模式:
在指令列輸入 vi student.sh:此指令為利用vi指令編輯 student.sh:這個檔案
打完程式碼之後,存檔並離開vi
在指令列輸入 chmod 755 student.sh:利用chmod 增加執行權限
在指令列輸入 ./student.sh:執行gcd.sh 此檔案

#!/bin/bash
student=$(cat "/export/home/kklin/std.txt")
online=$(who | cut -c 1-8 | sort)
exist=0
n=0
echo "實到名單:"
for o in $online
do
    seat_num=0
    for s in $student
    do
         seat_num=$(($seat_num+1))
         if [ "$o" == "$s" ]; then
            echo "座號:$seat_num 學號:$o"
         fi
    done
    n=$(($n+1))
done
echo "上課人數:$n"
seat_num=0
n=0
echo "缺席名單:"
for s in $student
do
    seat_num=$(($seat_num+1))
   for o in $online
   do
      if [ "$s" == "$o" ]; then
         exist=1
         break
      fi   
   done
   if [ "$exist" == 0 ]; then
      echo "座號:$seat_num 學號:$s"
      n=$(($n+1))
   fi
   exist=0
done
echo "缺席人數:$n"
exit 0

上一篇
#資工人生─Day25-Falsk初探
下一篇
#資工人生─Day27─資料庫
系列文
大四資工人生,快畢業了,然後呢31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言