เมื่อคุณอ่านพาดหัวข่าวของงานชิ้นนี้เป็นครั้งแรก คุณอาจได้รับการให้อภัยเพราะคิดว่ามีบางอย่างไม่ถูกต้องในทางเทคนิค ท้ายที่สุดแล้ว Linux ไม่ได้เป็นส่วนหนึ่งของระบบปฏิบัติการ Windows ใช่ไหม พวกเขาเป็นสองระบบปฏิบัติการที่แตกต่างกันอย่างสิ้นเชิง ก่อนหน้านี้ วิธีเดียวที่จะใช้สคริปต์ Linux กับ Windows ในอดีตคือการติดตั้งบางอย่างเช่น Cygwin หรือใช้ระบบ dual boot Linux หรือติดตั้งบางอย่างเช่น Samba
ทั้งหมดที่เปลี่ยนแปลงใน Windows 10! มีลีนุกซ์หลายรุ่นที่มีอยู่ใน Microsoft Windows Store บทความ Appuals ก่อนหน้านี้เกี่ยวกับ Kali Linux อธิบายวิธีการดังกล่าวในการรับการแจกจ่าย Linux เฉพาะในสภาพแวดล้อม Windows 10 ของคุณ
ข้อดีอย่างหนึ่งของการใช้สคริปต์ Linux บนเครื่อง Windows ของคุณคือ คุณสามารถใช้ภาษาสคริปต์ Linux ที่มีประสิทธิภาพเพื่อทำงานอัตโนมัติ โดยเฉพาะอย่างยิ่งหากคุณคุ้นเคยกับสคริปต์ Linux มากกว่าพูด ไฟล์แบตช์ Powershell หรือ Dos บทความนี้อธิบายวิธีเขียนสคริปต์ "bash" ของ Linux เพื่อล้างเดสก์ท็อป Windows ทั่วไป หากคุณเพิ่งเริ่มใช้ Linux คุณจะได้เรียนรู้พื้นฐานจากบทความนี้ และสร้างยูทิลิตี้ที่มีประโยชน์ในกระบวนการนี้
เราจะใช้ Ubuntu Linux Terminal พื้นฐาน (มีอยู่ใน Windows Store บนเครื่อง Windows 10) ซึ่งช่วยให้คุณใช้ bash,k ssh, git, apt และคำสั่ง Linux อื่นๆ ได้มากมาย สิ่งนี้จะต้องได้รับการติดตั้งหากคุณยังไม่ได้ดำเนินการ วิธีการอธิบายไว้ที่นี่
ลินุกซ์บรรทัดคำสั่ง
เมื่อคุณติดตั้ง Ubuntu และรันแล้ว คุณจะได้รับหน้าต่างบรรทัดคำสั่ง คล้ายกับต่อไปนี้ นี่จะทำให้คุณทุบตี Linux บรรทัดคำสั่ง:
ตอนนี้เราจะเขียนสคริปต์ของเรา คุณสามารถแก้ไขไฟล์ด้วยตัวแก้ไขใดก็ได้ รวมถึงตัวแก้ไข Windows เช่น แผ่นจดบันทึก หรือตัวแก้ไข Linux เช่น vi หากคุณมั่นใจในการใช้งาน
เมื่อคุณเปิดเทอร์มินัล Ubuntu ตำแหน่งของคุณจะเป็นโฮมไดเร็กตอรี่ของคุณ ในพื้นที่ทำงานของ Ubuntu สามารถตรวจสอบได้โดยป้อนคำสั่งที่พรอมต์คำสั่ง:
echo $HOME
และมันจะส่งออกโฮมไดเร็กตอรี่ของคุณตามที่แสดงในภาพหน้าจอต่อไปนี้ รูปแบบ Linux ใช้เครื่องหมายทับแทนไดเร็กทอรี เช่น “/”
เพื่อความสะดวก เราจะวางสคริปต์ไว้ในโฮมไดเร็กตอรี่
ขั้นตอนต่อไปคือการค้นหาตำแหน่งของเดสก์ท็อปของคุณ ซึ่งเรียกว่าเส้นทาง Linux เราต้องการสิ่งนี้เพื่อดำเนินการกับไฟล์ในไดเร็กทอรีที่ถูกต้อง
ในประเภทเทอร์มินัล "cd /" ซึ่งจะนำคุณไปยังพื้นที่รูทของสภาพแวดล้อม Ubuntu ของคุณ
จากนั้นพิมพ์ “ls”
รายการนี้จะแสดงรายการไดเร็กทอรีทั้งหมดใน Linux คุณจะเห็นสิ่งนี้ในเทอร์มินัล Linux:
เราจำเป็นต้องค้นหาเดสก์ท็อปผู้ใช้ของคุณ สมมติว่าเป็นไดรฟ์ C ให้เปลี่ยนเป็นไดเร็กทอรี "mnt" นี่คือตำแหน่งที่จะระบุไดรฟ์ windows ดังนี้:
จากนั้นคุณจำเป็นต้องรู้ว่าเดสก์ท็อปของคุณอยู่ที่ไดเร็กทอรีใด โดยปกติคุณจะพบสิ่งนี้ใน windows โดย "คลิกขวา" ที่ไอคอนเดสก์ท็อปจากรายการ "การเข้าถึงด่วน" ใน File Explorer ตำแหน่งไดเร็กทอรีเดสก์ท็อปของคุณจะแสดง:
จากนี้ คุณสามารถเปลี่ยนเป็นไดเร็กทอรีของคุณโดยใช้ Linux ในเทอร์มินัล:
ดังนั้น ในตัวอย่างนี้ คุณพิมพ์ในเทอร์มินัล โดยจำได้ว่าแบ็กสแลชใน Windows เทียบเท่ากับฟอร์เวิร์ดสแลชใน Linux ในกรณีของฉัน เส้นทางที่ต้องการในคำสั่ง "เปลี่ยนไดเรกทอรี" คือ:
cd /mnt/c/Users/gofor/OneDrive/Desktop
จากนั้น คุณสามารถแสดงรายการไฟล์ทั้งหมดบนเดสก์ท็อปของคุณโดยใช้ “ls”:
หากเป็นเหมือนเดสก์ท็อปของฉัน คุณจะได้รับรายการไฟล์ยาวๆ ดังนี้:
คุณสามารถดูความยุ่งเหยิงของเดสก์ท็อปใน Windows ได้ที่นี่:
มีไอคอนมากกว่าบนจอภาพอีก 2 จอของฉัน ดังนั้นเราจึงจำเป็นต้องจัดประเภทและจัดระเบียบไฟล์เหล่านี้! สคริปต์ที่ให้มาจะนำไฟล์แต่ละประเภทมาใส่ในโฟลเดอร์ที่มีชื่อที่เกี่ยวข้องบนเดสก์ท็อป
ตัวอย่างเช่น ไฟล์ช็อตคัท ไฟล์เหล่านี้จะเป็นไฟล์ *.lnk ดังนั้นเราจะย้ายไฟล์เหล่านั้นไปไว้ในโฟลเดอร์ชื่อ “SHORTCUTS”
ในทำนองเดียวกัน ไฟล์รูปภาพ เช่น .jpg, .png, .bmp, . svg จะถูกย้ายไปยังโฟลเดอร์ชื่อ “IMAGES”
เอกสารและเอกสาร Office เช่น ไฟล์ word เช่น .docx, .pdf, .xls จะถูกใส่ในโฟลเดอร์ชื่อ “OFFICEDOCS”
ดังนั้น เมื่อรันสคริปต์ เอกสารทั้งหมดจะพร้อมใช้งานในลักษณะที่เป็นระเบียบ ในไดเร็กทอรีที่เกี่ยวข้อง ซึ่งสร้างขึ้นสำหรับประเภทไฟล์นั้น ซึ่งจะทำให้เดสก์ท็อปกระจายตัวและทำให้ไฟล์เดสก์ท็อปของคุณมีระเบียบมากขึ้น คุณสามารถสร้างโฟลเดอร์ได้หลายประเภทและกำหนดเกณฑ์ของไฟล์ตามที่คุณต้องการ ไฟล์ไม่จำเป็นต้องจัดเรียงตามประเภทไฟล์เพียงอย่างเดียว คุณสามารถสร้างโฟลเดอร์หมวดหมู่ได้ตามต้องการ เช่น “HRFILES” และ “PROJECTFILES” ในตัวอย่างนี้ เราจะจัดระเบียบไฟล์ตามประเภทไฟล์
การสร้างหมวดหมู่และรายการไฟล์
ในการใช้แอปพลิเคชันนี้ เราจะต้องมี 2 ไฟล์:
A) รายการหมวดหมู่และประเภทไฟล์ที่จะเข้าสู่หมวดหมู่เหล่านั้นที่จัดอยู่ในไฟล์ CSV ที่คั่นด้วยเครื่องหมายจุลภาค ชื่อแต่ละหมวดหมู่จะเป็นชื่อของไดเร็กทอรีที่จะวางไฟล์ไว้บนเดสก์ท็อป คุณสามารถสร้างไฟล์ CSV ด้วยโปรแกรมแก้ไขที่ต้องการ ในตัวอย่างนี้ เราจะใช้แผ่นจดบันทึก
B) สคริปต์ Linux ซึ่งจะอ่านไฟล์หมวดหมู่และประมวลผลฟังก์ชันการจัดระเบียบที่จำเป็น
เพื่อสร้างไฟล์ในไดเร็กทอรีปัจจุบันใน ประเภทเทอร์มินัล:
notepad cleanup.csv
เนื่องจากไฟล์จะไม่มีอยู่ในขั้นตอนนี้ ระบบจะขอให้คุณสร้างไฟล์ใหม่ ดังนั้นให้กด "ใช่"
ตอนนี้เราจะป้อนรายละเอียดต่อไปนี้ ในรูปแบบ “category,filetype1,filetype2,filetype3,…,etc” 1 บรรทัดสำหรับแต่ละหมวดหมู่ดังนี้:
SHORTCUTS,lnk
IMAGES,jpg,png,svg
DOCUMENTS,txt,docx,doc,pdf
The first field will be the name of the directory on the desktop, where the remaining file types will be placed. The remaining fields are the file types you wish to move to the folder.
ดังนั้น สำหรับโฟลเดอร์ SHORTCUTS ไฟล์ *.lnk ทั้งหมดจะถูกย้ายไปยังโฟลเดอร์นั้น สำหรับโฟลเดอร์ IMAGES ไฟล์ทั้งหมดที่มี *.jpg,*.png และ *.svg จะถูกย้ายไปยังโฟลเดอร์ IMAGES สุดท้าย เราย้ายไฟล์ *.txt,*.docx,*.doc และ *.pdf ทั้งหมดไปยังโฟลเดอร์ DOCUMENTS ด้วยวิธีนี้ เรากำลังจัดไฟล์ลงในไดเร็กทอรีที่ถูกต้อง
เมื่อเราสร้างไฟล์ CSV แล้ว เราก็พร้อมที่จะเขียนสคริปต์ เราจะเรียกสคริปต์ cleanup.sh อย่างไรก็ตาม สคริปต์นี้จะมีการตรวจสอบความถูกต้องเพียงเล็กน้อย ดังนั้นคุณต้องแน่ใจว่าไฟล์ CSV อยู่ในรูปแบบที่ถูกต้อง มิฉะนั้นจะไม่ทำงาน! สิ่งที่เราจะทำในสคริปต์นี้คือตรวจสอบว่ามีไฟล์และโฟลเดอร์อยู่หรือไม่ โดยเป็นการตรวจสอบขั้นต่ำ
คุณสามารถแก้ไขสคริปต์ในเทอร์มินัลได้หากคุณรู้จักตัวแก้ไขประเภท Unix เช่น vi หรือคุณสามารถใช้แผ่นจดบันทึก:
notepad cleanup.sh
การทำงานของสคริปต์คือการตั้งชื่อไฟล์ CSV ที่เรากำลังอ่านอยู่ในสคริปต์ และตำแหน่งของเดสก์ท็อปที่เราต้องการล้าง เราจะตั้งค่าตัวแปรเป็นไฟล์ CSV การล้างข้อมูลและตำแหน่งเดสก์ท็อป ในกรณีของฉันนี่เป็นดังนี้ คุณจะต้องเปลี่ยนตำแหน่งเดสก์ท็อปของคุณเอง โปรดทราบว่าทุกอย่างระหว่าง “<” และ “>” เป็นตัวยึดตำแหน่งที่คุณต้องการป้อนข้อมูลเฉพาะของคุณ
ดังนั้น. 2 บรรทัดแรกในสคริปต์คือ:
DESKTOP=/mnt/c/Users/<your windows location>/Desktop
CSV=cleanup.csv
สามารถดูสคริปต์แบบเต็มได้ที่ด้านล่าง โปรดอ่านความคิดเห็นหากคุณต้องการเข้าใจคำสั่งต่างๆ และหากคุณไม่แน่ใจเกี่ยวกับคำสั่ง ให้ลองใช้ “man
ในการเรียกใช้สคริปต์จากบรรทัดคำสั่งหน้าแรก คุณจะต้องทำให้สามารถเรียกใช้งานได้โดยใช้คำสั่งต่อไปนี้:
หากต้องการเรียกใช้สคริปต์ คุณจะต้องพิมพ์ข้อความต่อไปนี้ เนื่องจากอยู่ในไดเรกทอรีปัจจุบัน
นี่คือลักษณะที่เดสก์ท็อปของฉันดูก่อนและหลังการเรียกใช้สคริปต์ คุณจะเห็นได้ว่าตอนนี้โฟลเดอร์ที่มีไฟล์ที่ย้ายได้ถูกสร้างขึ้นแล้ว และเดสก์ท็อปมีความรกน้อยกว่ามาก:
ก่อน: หลัง:
และไดเร็กทอรี SHORTCUTS โดยมีทางลัดทั้งหมดย้ายจากเดสก์ท็อป
โปรดสังเกตความคิดเห็นที่นำหน้าด้วย "#" ในสคริปต์ เนื่องจากจะอธิบายวิธีการทำงานของสคริปต์ # ตั้งค่าตัวแปรสำหรับตำแหน่งของเดสก์ท็อปท้องถิ่นหรือไดเร็กทอรีที่คุณต้องการล้าง และชื่อไฟล์ CSV
# ทดสอบเพื่อดูว่ามีไฟล์ csv การล้างข้อมูลอยู่หรือไม่ โดยใช้คำสั่ง linux "test" และแฟล็ก "-f" สำหรับการมีอยู่ของไฟล์
# ตอนนี้แปลง CSV หากได้รับการบันทึกในรูปแบบ dos เป็นรูปแบบ Unix โดยการลบอักขระการขึ้นบรรทัดใหม่
# ตอนนี้ ไปที่ไฟล์ CSV ทีละบรรทัด และเก็บชื่อของอาร์กิวเมนต์แรก ซึ่งก็คือชื่อไดเร็กทอรี
ทำให้สคริปต์การล้างข้อมูลสามารถเรียกใช้งานได้และเรียกใช้
chmod +x cleanup.sh
./cleanup.sh
สคริปต์ Linux สำหรับเดสก์ท็อปเต็มรูปแบบสำหรับ Windows
DESKTOP=/mnt/c/Users/gofor/OneDrive/Desktop
CSV=cleanup.csv
# หากไฟล์ไม่มีอยู่ ให้แสดงข้อความแสดงข้อผิดพลาดแล้วออกจากสคริปต์if [ ! -f ${CSV} ]then
echo The cleanup.csv file does not exist.
exit -1
fi
# บันทึกผลลัพธ์เป็นไฟล์ชั่วคราว จากนั้นเปลี่ยนชื่อไฟล์ชั่วคราวกลับเป็นชื่อเดิมtr -d '\r' < $CSV > temp.csv
mv temp.csv $CSV
# หมวดหมู่/ไดเร็กทอรี ซึ่งอาร์กิวเมนต์ที่เหลือทั้งหมดจะเป็นประเภทไฟล์ซึ่งจะเป็น
# วางไว้ในไดเร็กทอรีเหล่านี้while read csvline
do
count=1
for filetype in `echo "$csvline" | tr , '\n'`
do
if [ $count -eq 1 ] then
# As this is the first argument, check to see if the folder already exists, and if not, create it.
if [ ! -d ${DESKTOP}/$filetype ] then
# The directory does not exist, so we will create it.
mkdir ${DESKTOP}/$filetype
fi
CATEGORY=${filetype}
else
# Output a friendly message indicating what the script is doing.
echo "moving *.${filetype} to ${CATEGORY}"
# Don't display any error messages ( i.e. >2 /dev/null) when moving the files in case the files do not exist,
# so the "mv" command is "silent".
mv ${DESKTOP}/*.${filetype} ${DESKTOP}/${CATEGORY} 2> /dev/null
fi
count=`expr $count + 1`
done
done < cleanup.csv