เพิ่ม character counter
This commit is contained in:
parent
46858abfaf
commit
bc4f5a5204
18 changed files with 500 additions and 0 deletions
15
character-counter-alt/.travis.yml
Normal file
15
character-counter-alt/.travis.yml
Normal file
|
@ -0,0 +1,15 @@
|
|||
language: cpp
|
||||
compiler: gcc
|
||||
jobs:
|
||||
include:
|
||||
- os: linux
|
||||
dist: focal
|
||||
- os: linux
|
||||
dist: xenial
|
||||
- os: osx
|
||||
env:
|
||||
- BUILD_TYPE=Debug
|
||||
script:
|
||||
- echo 1 | ./install.sh
|
||||
- cat test-input.txt | ~/.local/bin/$(basename $PWD)
|
||||
- echo 1 | ./uninstall.sh
|
68
character-counter-alt/README.md
Normal file
68
character-counter-alt/README.md
Normal file
|
@ -0,0 +1,68 @@
|
|||
![Banner](info/banner.png)
|
||||
|
||||
[![PGTechs](https://img.shields.io/static/v1.svg?color=ff0000&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PG%20Techs&message=YouTube)](https://www.youtube.com/c/PGTechs "ช่อง YouTube ของเรา")
|
||||
[![PGVCPlus](https://img.shields.io/static/v1.svg?color=0572e6&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PGVC%2B&message=Facebook)](https://www.facebook.com/PrincegameRVCPlus "เพจข่าวสาร Distributed Computing ของเรา บน Facebook")
|
||||
|
||||
อีกหนึ่งแอปพลิเคชันคุณภาพจาก SashaPGT
|
||||
|
||||
* ทุกแอปพลิเคชันผ่านการทดสอบติดตั้งและใช้งานใน Test environment ของเรา
|
||||
|
||||
* ใช้งานได้อย่างสะดวกรวดเร็ว ด้วยสคริปต์ติดตั้งแบบสำเร็จรูป ทั้งเฉพาะผู้ใช้และ System-wide
|
||||
|
||||
* รองรับ Linux และ macOS
|
||||
|
||||
|
||||
|
||||
|
||||
# sashapgt/character-counter-alt
|
||||
|
||||
[![Build Status](https://app.travis-ci.com/sashapgt/character-counter-alt.svg?branch=main)](https://app.travis-ci.com/gitlab/sashapgt/character-counter-alt)
|
||||
|
||||
"รับค่าประโยคมา 1 ประโยคจากนั้นให้เช็คว่าแต่ละตัวมีอักษรซ้ำกันมากน้อยแค่ไหน
|
||||
(ตัวใหญ่ตัวเล็กมีค่าเท่ากัน)"
|
||||
|
||||
โปรแกรมจะรับค่า Input นับแต่ละตัวอักษรว่ามีกี่ตัว แล้วแสดงผลออกมา
|
||||
|
||||
**เป็นอีกเวอร์ชันหนึ่งของ character-counter ในเวอร์ชันนี้ จะใช้วิธีการเปลี่ยนพิมพ์เล็กเป็นพิมพ์ใหญ่ก่อน แล้วจึงนับรวมกันในครั้งเดียว**
|
||||
|
||||
**ตัวอย่างการทำงานของโปรแกรม**
|
||||
|
||||
![Screenshot](info/screenshot.png)
|
||||
|
||||
# วิธีการติดตั้ง/ใช้งาน
|
||||
### ติดตั้งแบบปกติ
|
||||
1. โคลน git นี้
|
||||
|
||||
`$ git clone https://gitlab.com/sashapgt/character-counter-alt.git`
|
||||
|
||||
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
|
||||
|
||||
`$ cd character-counter-alt && bash install.sh`
|
||||
|
||||
3. เรียกใช้จากเทอร์มินัล (Shell autocomplete อาจจะยังไม่ทำงาน กรุณาปิดเทอร์มินัล แล้วเปิดใหม่อีกครั้ง)
|
||||
|
||||
`$ character-counter-alt`
|
||||
### ใช้งานครั้งเดียว (Build, run และ remove ทันทีเมื่อใช้งานเสร็จโดยอัตโนมัติ)
|
||||
$ bash single-use-build-and-run.sh
|
||||
|
||||
# ถอนการติดตั้ง
|
||||
|
||||
|
||||
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
|
||||
|
||||
`$ bash uninstall.sh`
|
||||
|
||||
2. ลบโฟลเดอร์ git นี้
|
||||
|
||||
# การแก้ปัญหา
|
||||
|
||||
หากไม่สามารถรันได้เนื่องจาก Command not found ให้ดูว่ามี ~/.local/bin ใน $PATH หรือไม่
|
||||
สามารถตรวจสอบได้โดยการ
|
||||
|
||||
echo $PATH
|
||||
|
||||
หากไม่มี Home folder ของคุณ ตามด้วย .local/bin ให้เพิ่มบรรทัดนี้ลงใน Shell startup script ของคุณ (เช่น .bashrc .zshrc)
|
||||
|
||||
export PATH="$PATH:$HOME/.local/bin"
|
||||
|
||||
|
BIN
character-counter-alt/info/banner.png
Executable file
BIN
character-counter-alt/info/banner.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
BIN
character-counter-alt/info/screenshot.png
Normal file
BIN
character-counter-alt/info/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
60
character-counter-alt/install.sh
Executable file
60
character-counter-alt/install.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR1=$HOME/.local/bin
|
||||
DIR2=/usr/local/bin
|
||||
APPNAME=$(basename $PWD)
|
||||
|
||||
clear
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
echo " "
|
||||
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่"
|
||||
echo " "
|
||||
echo "1) ไม่"
|
||||
echo "2) ใช่"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
done
|
||||
case "$INSTALLCHOICE" in
|
||||
1|"")
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo " "
|
||||
echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้"
|
||||
echo " "
|
||||
echo "1) $USER ($DIR1)"
|
||||
echo "2) ทุกคน ($DIR2)"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
|
||||
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
done
|
||||
case "$INSTALLCHOICE" in
|
||||
1|"")
|
||||
DIR=$DIR1
|
||||
if [[ ! -d "$DIR" ]]; then
|
||||
mkdir -p $DIR
|
||||
fi
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n"
|
||||
g++ -o $APPNAME main.cpp && sudo mv $APPNAME $DIR
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n"
|
25
character-counter-alt/main.cpp
Normal file
25
character-counter-alt/main.cpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include<stdio.h>
|
||||
#include<iostream>
|
||||
|
||||
|
||||
int main() {
|
||||
char input[10000];
|
||||
int chars[26],i=0;
|
||||
for(int j=0;j<26;j++)chars[j]=0;
|
||||
printf("Input: ");
|
||||
std::cin >>input;
|
||||
while(input[i]!='\0') {
|
||||
if((input[i]>=65&&input[i]<=90)||(input[i]>=97&&input[i]<=122)){
|
||||
if(input[i]>=97&&input[i]<=122){
|
||||
input[i]=input[i]-32;
|
||||
}
|
||||
chars[(int)input[i]-65]++;
|
||||
}
|
||||
// else if(input[i]>=97&&input[i]<=122){
|
||||
// chars[(int)input[i]-97]++;
|
||||
// }
|
||||
i++;
|
||||
}
|
||||
for(i=0;i<26;i++) printf("%c : %d\n", i+65, chars[i]);
|
||||
return 0;
|
||||
}
|
7
character-counter-alt/single-use-build-and-run.sh
Executable file
7
character-counter-alt/single-use-build-and-run.sh
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
g++ -o main main.cpp
|
||||
|
||||
./main
|
||||
|
||||
rm main
|
1
character-counter-alt/test-input.txt
Normal file
1
character-counter-alt/test-input.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Loremipsumdolorsitamet,consecteturadipiscingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua.Utenimadminimveniam,quisnostrudexercitationullamcolaborisnisiutaliquipexeacommodoconsequat.Duisauteiruredolorinreprehenderitinvoluptatevelitessecillumdoloreeufugiatnullapariatur.Excepteursintoccaecatcupidatatnonproident,suntinculpaquiofficiadeseruntmollitanimidestlaborum.
|
74
character-counter-alt/uninstall.sh
Executable file
74
character-counter-alt/uninstall.sh
Executable file
|
@ -0,0 +1,74 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR1=$HOME/.local/bin
|
||||
DIR2=/usr/local/bin
|
||||
APPNAME=$(basename $PWD)
|
||||
|
||||
clear
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
echo " "
|
||||
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่"
|
||||
echo " "
|
||||
echo "1) ไม่"
|
||||
echo "2) ใช่"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
|
||||
|
||||
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
|
||||
done
|
||||
case "$UNINSTALLCHOICE" in
|
||||
1|"")
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR"
|
||||
rm $DIR/$APPNAME
|
||||
else
|
||||
echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo " "
|
||||
echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้"
|
||||
echo " "
|
||||
echo "1) $USER ($DIR1)"
|
||||
echo "2) ทุกคน ($DIR2)"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE
|
||||
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง"
|
||||
read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE
|
||||
done
|
||||
case "$UNINSTALLCHOICE" in
|
||||
1)
|
||||
DIR=$DIR1
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
|
||||
rm $DIR/$APPNAME
|
||||
else
|
||||
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
exit
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
|
||||
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามขณะถอนการติดตั้ง\n\n"
|
||||
sudo rm $DIR/$APPNAME
|
||||
else
|
||||
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
exit
|
||||
fi
|
||||
;;
|
||||
"")
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"
|
15
character-counter/.travis.yml
Normal file
15
character-counter/.travis.yml
Normal file
|
@ -0,0 +1,15 @@
|
|||
language: cpp
|
||||
compiler: gcc
|
||||
jobs:
|
||||
include:
|
||||
- os: linux
|
||||
dist: focal
|
||||
- os: linux
|
||||
dist: xenial
|
||||
- os: osx
|
||||
env:
|
||||
- BUILD_TYPE=Debug
|
||||
script:
|
||||
- echo 1 | ./install.sh
|
||||
- cat test-input.txt | ~/.local/bin/$(basename $PWD)
|
||||
- echo 1 | ./uninstall.sh
|
69
character-counter/README.md
Normal file
69
character-counter/README.md
Normal file
|
@ -0,0 +1,69 @@
|
|||
![Banner](info/banner.png)
|
||||
|
||||
[![PGTechs](https://img.shields.io/static/v1.svg?color=ff0000&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PG%20Techs&message=YouTube)](https://www.youtube.com/c/PGTechs "ช่อง YouTube ของเรา")
|
||||
[![PGVCPlus](https://img.shields.io/static/v1.svg?color=0572e6&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PGVC%2B&message=Facebook)](https://www.facebook.com/PrincegameRVCPlus "เพจข่าวสาร Distributed Computing ของเรา บน Facebook")
|
||||
|
||||
อีกหนึ่งแอปพลิเคชันคุณภาพจาก SashaPGT
|
||||
|
||||
* ทุกแอปพลิเคชันผ่านการทดสอบติดตั้งและใช้งานใน Test environment ของเรา
|
||||
|
||||
* ใช้งานได้อย่างสะดวกรวดเร็ว ด้วยสคริปต์ติดตั้งแบบสำเร็จรูป ทั้งเฉพาะผู้ใช้และ System-wide
|
||||
|
||||
* รองรับ Linux และ macOS
|
||||
|
||||
|
||||
|
||||
|
||||
# sashapgt/character-counter
|
||||
|
||||
[![Build Status](https://app.travis-ci.com/sashapgt/character-counter.svg?branch=main)](https://app.travis-ci.com/gitlab/sashapgt/character-counter)
|
||||
|
||||
"รับค่าประโยคมา 1 ประโยคจากนั้นให้เช็คว่าแต่ละตัวมีอักษรซ้ำกันมากน้อยแค่ไหน
|
||||
(ตัวใหญ่ตัวเล็กมีค่าเท่ากัน)
|
||||
"
|
||||
|
||||
โปรแกรมจะรับค่า Input นับแต่ละตัวอักษรว่ามีกี่ตัว แล้วแสดงผลออกมา
|
||||
|
||||
|
||||
|
||||
**ตัวอย่างการทำงานของโปรแกรม**
|
||||
|
||||
![Screenshot](info/screenshot.png)
|
||||
|
||||
# วิธีการติดตั้ง/ใช้งาน
|
||||
### ติดตั้งแบบปกติ
|
||||
1. โคลน git นี้
|
||||
|
||||
`$ git clone https://gitlab.com/sashapgt/character-counter.git`
|
||||
|
||||
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
|
||||
|
||||
`$ cd character-counter && bash install.sh`
|
||||
|
||||
3. เรียกใช้จากเทอร์มินัล (Shell autocomplete อาจจะยังไม่ทำงาน กรุณาปิดเทอร์มินัล แล้วเปิดใหม่อีกครั้ง)
|
||||
|
||||
`$ character-counter`
|
||||
### ใช้งานครั้งเดียว (Build, run และ remove ทันทีเมื่อใช้งานเสร็จโดยอัตโนมัติ)
|
||||
$ bash single-use-build-and-run.sh
|
||||
|
||||
# ถอนการติดตั้ง
|
||||
|
||||
|
||||
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
|
||||
|
||||
`$ bash uninstall.sh`
|
||||
|
||||
2. ลบโฟลเดอร์ git นี้
|
||||
|
||||
# การแก้ปัญหา
|
||||
|
||||
หากไม่สามารถรันได้เนื่องจาก Command not found ให้ดูว่ามี ~/.local/bin ใน $PATH หรือไม่
|
||||
สามารถตรวจสอบได้โดยการ
|
||||
|
||||
echo $PATH
|
||||
|
||||
หากไม่มี Home folder ของคุณ ตามด้วย .local/bin ให้เพิ่มบรรทัดนี้ลงใน Shell startup script ของคุณ (เช่น .bashrc .zshrc)
|
||||
|
||||
export PATH="$PATH:$HOME/.local/bin"
|
||||
|
||||
|
BIN
character-counter/info/banner.png
Executable file
BIN
character-counter/info/banner.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
BIN
character-counter/info/screenshot.png
Normal file
BIN
character-counter/info/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
60
character-counter/install.sh
Executable file
60
character-counter/install.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR1=$HOME/.local/bin
|
||||
DIR2=/usr/local/bin
|
||||
APPNAME=$(basename $PWD)
|
||||
|
||||
clear
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
echo " "
|
||||
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่"
|
||||
echo " "
|
||||
echo "1) ไม่"
|
||||
echo "2) ใช่"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
done
|
||||
case "$INSTALLCHOICE" in
|
||||
1|"")
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo " "
|
||||
echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้"
|
||||
echo " "
|
||||
echo "1) $USER ($DIR1)"
|
||||
echo "2) ทุกคน ($DIR2)"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
|
||||
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
|
||||
done
|
||||
case "$INSTALLCHOICE" in
|
||||
1|"")
|
||||
DIR=$DIR1
|
||||
if [[ ! -d "$DIR" ]]; then
|
||||
mkdir -p $DIR
|
||||
fi
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
|
||||
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n"
|
||||
g++ -o $APPNAME main.cpp && sudo mv $APPNAME $DIR
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n"
|
22
character-counter/main.cpp
Normal file
22
character-counter/main.cpp
Normal file
|
@ -0,0 +1,22 @@
|
|||
#include<stdio.h>
|
||||
#include<iostream>
|
||||
|
||||
|
||||
int main() {
|
||||
char input[10000];
|
||||
int chars[26],i=0;
|
||||
for(int j=0;j<26;j++)chars[j]=0;
|
||||
printf("Input: ");
|
||||
std::cin >>input;
|
||||
while(input[i]!='\0') {
|
||||
if(input[i]>=65&&input[i]<=90){
|
||||
chars[(int)input[i]-65]++;
|
||||
}
|
||||
else if(input[i]>=97&&input[i]<=122){
|
||||
chars[(int)input[i]-97]++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
for(i=0;i<26;i++) printf("%c : %d\n", i+65, chars[i]);
|
||||
return 0;
|
||||
}
|
7
character-counter/single-use-build-and-run.sh
Executable file
7
character-counter/single-use-build-and-run.sh
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
g++ -o main main.cpp
|
||||
|
||||
./main
|
||||
|
||||
rm main
|
3
character-counter/test-input.txt
Normal file
3
character-counter/test-input.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
IdjustliketointerjectforamomentWhatyou'rereferingtoasLinux,isinfact,GNU/Linux,orasI'verecentlytakentocallingit,GNUplusLinux.Linuxisnotanoperatingsystemuntoitself,butratheranotherfreecomponentofafullyfunctioningGNUsystemmadeusefulbytheGNUcorelibs,shellutilitiesandvitalsystemcomponentscomprisingafullOSasdefinedbyPOSIX.
|
||||
ManycomputerusersrunamodifiedversionoftheGNUsystemeveryday,withoutrealizingit.Throughapeculiarturnofevents,theversionofGNUwhichiswidelyusedtodayisoftencalledLinux,andmanyofitsusersarenotawarethatitisbasicallytheGNUsystem,developedbytheGNUProject.
|
||||
TherereallyisaLinux,andthesepeopleareusingit,butitisjustapartofthesystemtheyuse.Linuxisthekernel:theprograminthesystemthatallocatesthemachine'sresourcestotheotherprogramsthatyourun.Thekernelisanessentialpartofanoperatingsystem,butuselessbyitself;itcanonlyfunctioninthecontextofacompleteoperatingsystem.LinuxisnormallyusedincombinationwiththeGNUoperatingsystem:thewholesystemisbasicallyGNUwithLinuxadded,orGNU/Linux.Alltheso-calledLinuxdistributionsarereallydistributionsofGNU/Linux!
|
74
character-counter/uninstall.sh
Executable file
74
character-counter/uninstall.sh
Executable file
|
@ -0,0 +1,74 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR1=$HOME/.local/bin
|
||||
DIR2=/usr/local/bin
|
||||
APPNAME=$(basename $PWD)
|
||||
|
||||
clear
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
echo " "
|
||||
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่"
|
||||
echo " "
|
||||
echo "1) ไม่"
|
||||
echo "2) ใช่"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
|
||||
|
||||
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
|
||||
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
|
||||
done
|
||||
case "$UNINSTALLCHOICE" in
|
||||
1|"")
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR"
|
||||
rm $DIR/$APPNAME
|
||||
else
|
||||
echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo " "
|
||||
echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้"
|
||||
echo " "
|
||||
echo "1) $USER ($DIR1)"
|
||||
echo "2) ทุกคน ($DIR2)"
|
||||
echo " "
|
||||
read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE
|
||||
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
|
||||
echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง"
|
||||
read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE
|
||||
done
|
||||
case "$UNINSTALLCHOICE" in
|
||||
1)
|
||||
DIR=$DIR1
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
|
||||
rm $DIR/$APPNAME
|
||||
else
|
||||
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
exit
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
DIR=$DIR2
|
||||
if [[ -f "$DIR/$APPNAME" ]]; then
|
||||
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
|
||||
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามขณะถอนการติดตั้ง\n\n"
|
||||
sudo rm $DIR/$APPNAME
|
||||
else
|
||||
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
|
||||
exit
|
||||
fi
|
||||
;;
|
||||
"")
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"
|
Loading…
Reference in a new issue