Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Lỗi Windows

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Khi bạn đọc tiêu đề bài viết này, bạn có thể nghĩ có gì đó không đúng về mặt kỹ thuật.畢竟, Linux không phải là một phần của hệ điều hành Windows à? Chúng là hai hệ điều hành hoàn toàn khác nhau. Trước đây, cách duy nhất để dùng script Linux với Windows là cài Cygwin, dùng hệ thống dual-boot Linux, hoặc cài Samba.

Tất cả đã thay đổi trong Windows 10! Có một số bản phân phối Linux có sẵn trên Microsoft Windows Store. Bài viết trước của Appuals về Kali Linux mô tả một phương pháp như vậy để có một bản phân phối Linux cụ thể trong môi trường Windows 10.

Một lợi ích của việc dùng script Linux trên máy Windows là bạn có thể tận dụng ngôn ngữ script mạnh mẽ của Linux để tự động hóa tác vụ, đặc biệt nếu bạn quen thuộc với script Linux hơn là PowerShell hoặc file batch DOS. Bài viết này giải thích cách viết script Linux "bash" để dọn dẹp Desktop Windows điển hình. Nếu bạn mới với Linux, bạn sẽ học được kiến thức cơ bản từ bài viết này và tạo ra một tiện ích hữu ích trong quá trình.

Chúng ta sẽ dùng Terminal Ubuntu Linux cơ bản (có sẵn trên Windows Store cho máy Windows 10) cho phép dùng bash, ssh, git, apt và nhiều lệnh Linux khác. Cần cài đặt nếu chưa làm. Phương pháp được giải thích ở đây.

Dòng lệnh Linux

Sau khi cài Ubuntu và chạy nó, bạn sẽ có cửa sổ dòng lệnh, tương tự như sau. Điều này sẽ cho bạn dòng lệnh bash Linux:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Chúng ta sẽ viết script. Bạn có thể chỉnh sửa tệp bằng bất kỳ trình soạn thảo nào, bao gồm trình soạn thảo Windows như notepad, hoặc trình soạn thảo Linux như vi nếu bạn tự tin dùng nó.

Khi mở terminal Ubuntu, vị trí của bạn sẽ là thư mục home, trong không gian làm việc Ubuntu. Điều này có thể xác định bằng cách nhập lệnh tại dấu nhắc lệnh:

echo $HOME

và nó sẽ xuất thư mục home như ảnh chụp màn hình sau. Định dạng Linux, dùng dấu gạch chéo về phía trước (forward slashes) đại diện cho thư mục, như "/".

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Để tiện lợi, chúng ta sẽ đặt script trong thư mục home.

Bước tiếp theo là tìm vị trí Desktop của bạn, dưới dạng đường dẫn Linux. Chúng ta cần điều này để thực hiện hành động trên tệp trong thư mục đúng.

Trong terminal gõ "cd /". Điều này đưa bạn đến vùng gốc của môi trường Ubuntu.

Sau đó gõ "ls"

Lệnh này liệt kê tất cả thư mục trong Linux. Bạn sẽ thấy gì đó như thế này trong terminal Linux:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Chúng ta cần tìm Desktop người dùng. Giả sử nó nằm trên ổ C, chuyển vào thư mục "mnt". Đây là nơi các ổ Windows sẽ được xác định như sau:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Bạn cần biết thư mục nào chứa Desktop. Bạn thường tìm thấy điều này trong Windows bằng cách "nhấp chuột phải" vào biểu tượng Desktop từ danh sách "Truy cập nhanh (Quick access)" trong File Explorer. Vị trí thư mục Desktop sẽ hiển thị:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Từ đó, bạn có thể chuyển vào thư mục của mình dùng Linux trong terminal:

Do đó, trong ví dụ này, bạn gõ trong terminal, nhớ rằng dấu gạch chéo ngược trong Windows tương đương dấu gạch chéo xuôi trong Linux. Trong trường hợp của tôi, đường dẫn cần trong lệnh "thay đổi thư mục" là:

cd /mnt/c/Users/gofor/OneDrive/Desktop

Sau đó bạn có thể liệt kê tất cả tệp trên Desktop bằng "ls":

Nếu giống Desktop của tôi, bạn sẽ nhận được danh sách dài tệp như sau:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Bạn có thể thấy Desktop của tôi trong Windows trông lộn xộn như thế nào:

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Có thêm biểu tượng trên 2 màn hình khác, nên chúng ta cần phân loại và tổ chức các tệp này! Script cung cấp sẽ lấy từng loại tệp, đặt vào thư mục có tên phù hợp trên Desktop.

Ví dụ, tệp phím tắt, đây là tệp *.lnk, chúng ta sẽ di chuyển chúng vào thư mục "SHORTCUTS".
Tương tự, tệp hình ảnh, như .jpg, .png, .bmp, .svg sẽ được di chuyển vào thư mục "IMAGES".
Tài liệu và tài liệu Office, như tệp Word (.docx), .pdf, .xls, sẽ được đặt vào thư mục "OFFICEDOCS".

Vì vậy, khi script chạy, tất cả tài liệu sẽ có sẵn theo cách có tổ chức, trong thư mục liên quan, được tạo cho loại tệp đó. Điều này sẽ làm gọn Desktop và khiến tệp Desktop có tổ chức hơn. Bạn có thể tạo bao nhiêu loại thư mục và định nghĩa tiêu chí tệp tùy ý. Tệp không nhất thiết phải tổ chức theo loại tệp, bạn có thể tạo thư mục danh mục tùy ý, như "HRFILES" và "PROJECTFILES". Trong ví dụ này, chúng ta sẽ tổ chức tệp theo loại tệp.

Tạo danh sách Danh mục và Tệp

Để dùng ứng dụng này, chúng ta cần 2 tệp:

A) Danh sách danh mục và loại tệp đi vào danh mục đó, giữ trong tệp CSV phân cách bằng dấu phẩy. Tên danh mục sẽ là tên thư mục trên Desktop nơi tệp sẽ được đặt. Bạn có thể tạo tệp CSV với trình soạn thảo ưa thích. Trong ví dụ này, chúng ta dùng notepad.
B) Script Linux sẽ đọc tệp danh mục và xử lý chức năng dọn dẹp yêu cầu.

Để tạo tệp trong thư mục hiện tại trong terminal, gõ:

notepad cleanup.csv

Vì tệp chưa tồn tại ở giai đoạn này, nó sẽ yêu cầu tạo tệp mới, chỉ cần nhấn "Có (Yes)".

Chúng ta sẽ nhập chi tiết sau, theo định dạng "danh mục,loại tệp1,loại tệp2,loại tệp3,...,v.v." 1 dòng cho mỗi danh mục như sau:

SHORTCUTS,lnk
IMAGES,jpg,png,svg
DOCUMENTS,txt,docx,doc,pdf

Trường đầu tiên sẽ là tên thư mục trên Desktop, nơi các loại tệp còn lại sẽ được đặt. Các trường còn lại là loại tệp bạn muốn di chuyển vào thư mục.

Do đó, cho thư mục SHORTCUTS, tất cả tệp *.lnk sẽ được di chuyển vào thư mục đó. Cho thư mục IMAGES, tất cả tệp *.jpg, *.png và *.svg sẽ được di chuyển vào thư mục IMAGES. Cuối cùng, chúng ta di chuyển tất cả *.txt, *.docx, *.doc và *.pdf vào thư mục DOCUMENTS. Theo cách này, chúng ta tổ chức tệp vào đúng thư mục.

Sau khi tạo tệp CSV, chúng ta sẵn sàng viết script. Chúng ta sẽ gọi script là cleanup.sh. Cách đây, script sẽ có xác thực tối thiểu, nên bạn phải chắc chắn tệp CSV ở đúng định dạng, nếu không nó sẽ không hoạt động! Tất cả chúng ta làm trong script là kiểm tra xem tệp và thư mục có tồn tại không, như một kiểm tra tối thiểu.

Bạn có thể chỉnh sửa script trong terminal nếu biết trình soạn thảo kiểu Unix, như vi, hoặc đơn giản dùng notepad:

notepad cleanup.sh

Hành động của script là đặt tên tệp CSV chúng ta đọc trong script, và vị trí Desktop chúng ta muốn dọn dẹp. Chúng ta sẽ đặt biến cho tệp CSV dọn dẹp, và vị trí Desktop. Trong trường hợp của tôi, như sau. Bạn sẽ cần thay thế vị trí Desktop cho của bạn. Lưu ý, bất cứ thứ gì giữa "<" và ">" là chỗ giữ chỗ (placeholder) nơi bạn cần nhập thông tin cụ thể của mình.

Vì vậy, 2 dòng đầu trong script là:

DESKTOP=/mnt/c/Users/<your windows location>/Desktop
CSV=cleanup.csv

Toàn bộ script có thể thấy bên dưới. Hãy đọc chú thích (comments) có tiền tố "#" trong script, vì chúng giải thích script hoạt động như thế nào. Nếu không chắc về lệnh, thử "man <tên lệnh>" trên dòng lệnh Linux để hiểu sâu hơn.

Làm cho script dọn dẹp có thể thực thi và chạy nó

Để chạy script từ dòng lệnh home, bạn cần làm cho nó có thể thực thi bằng lệnh sau:

chmod +x cleanup.sh

Để chạy script, bạn cần gõ sau, vì nó ở thư mục hiện tại.

./cleanup.sh

Đây là Desktop của tôi trông như thế nào trước và sau khi chạy script. Bạn thấy các thư mục chứa tệp đã di chuyển đã được tạo, và Desktop gọn gàng hơn nhiều:

Trước: Cách dùng script Linux để dọn dẹp Desktop trên Windows 10 Sau: Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

và thư mục SHORTCUTS, với tất cả phím tắt đã di chuyển từ Desktop.

Cách dùng script Linux để dọn dẹp Desktop trên Windows 10

Toàn bộ Script Linux dọn dẹp Desktop cho Windows

Lưu ý chú thích có tiền tố "#" trong script, vì chúng giải thích script hoạt động như thế nào. # Đặt biến cho vị trí Desktop cục bộ hoặc bất kỳ thư mục nào bạn muốn dọn dẹp, và tên tệp CSV.

DESKTOP=/mnt/c/Users/gofor/OneDrive/Desktop
CSV=cleanup.csv

# Kiểm tra xem tệp CSV dọn dẹp có tồn tại không, dùng lệnh "test" Linux và cờ "-f" cho sự tồn tại của tệp.
# Nếu tệp không tồn tại, xuất thông báo lỗi và thoát script.

if [ ! -f ${CSV} ]then
 echo The cleanup.csv file does not exist.
 exit -1
fi

# Chuyển đổi CSV nếu nó đã được lưu ở định dạng DOS sang định dạng Unix bằng cách xóa ký tự carriage return.
# Lưu đầu ra vào tệp tạm, sau đó đổi tên tệp tạm về tên gốc.

tr -d '\r' < $CSV > temp.csv
mv temp.csv $CSV

# Duyệt qua tệp CSV dòng per dòng, lưu tên đối số đầu tiên, là tên
# danh mục/thư mục, dựa trên đó, tất cả đối số còn lại là loại tệp sẽ được
# đặt vào các thư mục này.

while read csvline
do
 count=1
 for filetype in `echo "$csvline" | tr , '\n'`
 do
 if [ $count -eq 1 ] then
 # Vì đây là đối số đầu tiên, kiểm tra xem thư mục đã tồn tại chưa, nếu chưa, tạo nó.
 if [ ! -d ${DESKTOP}/$filetype ] then
 # Thư mục không tồn tại, chúng ta sẽ tạo nó.
 mkdir ${DESKTOP}/$filetype
 fi
 CATEGORY=${filetype}
 else
 # Xuất thông báo thân thiện chỉ ra script đang làm gì.
 echo "moving *.${filetype} to ${CATEGORY}"
 # Không hiển thị thông báo lỗi (i.e. >2 /dev/null) khi di chuyển tệp nếu tệp không tồn tại,
 # nên lệnh "mv" là "im lặng".
 mv ${DESKTOP}/*.${filetype} ${DESKTOP}/${CATEGORY} 2> /dev/null
 fi
 count=`expr $count + 1`
 done
done < cleanup.csv