久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Debian解釋型語言腳本

2024-02-06 193

Debian系統(tǒng)中,解釋型語言腳本通常用于自動化任務(wù)、系統(tǒng)管理等,這些腳本可以用Bash、Python、Perl等編程語言編寫。本篇教程將介紹Debian調(diào)試解釋型語言代碼、使用 shell 腳本的 GUI 程序和定制 GUI文件管理器的行為等方面。

解釋器相關(guān)軟件包列表:

軟件包 流行度 大小 文檔
dash V:883, I:997 191 sh: 小和快的 POSIX 兼容的 shell,用于 sh
bash V:837, I:999 7175 sh: 由 bash-doc 包提供的“info bash”
mawk V:437, I:997 285 AWK: 小和快的 awk
gawk V:286, I:351 2906 AWK: 由 gawk-doc 包提供的“info gawk”
perl V:702, I:989 673 Perl: perl(1)
libterm-readline-gnu-perl V:2, I:29 380 GNU ReadLine/History 庫的 Perl 擴展: perlsh(1)
libreply-perl I:0 171 Perl 的 REPL : reply(1)
libdevel-repl-perl V:0, I:0 237 Perl 的 REPL : re.pl(1)
python3 V:714, I:951 81 Python: python3(1)
tcl V:25, I:223 20 Tcl: tcl(3)
tk V:20, I:217 20 Tk:tk(3)
ruby V:85, I:211 29 Ruby: ruby(1), erb(1), irb(1), rdoc(1), ri(1)

當你希望在 Debian 上自動化執(zhí)行一個任務(wù),你應(yīng)當首先使用解釋型語言腳本。選擇解釋型語言的準則是:

  • 使用 dash,如果任務(wù)是簡單的,使用 shell 程序聯(lián)合 CLI 命令行程序;
  • 使用 python3,如果任務(wù)不是簡單的,你從零開始寫;
  • 使用 perl、tcl、ruby……,如果在 Debian 上有用這些語言寫的現(xiàn)存代碼,需要為完成任務(wù)進行調(diào)整。

如果最終代碼太慢,為提升執(zhí)行速度,你可以用編譯型語言重寫關(guān)鍵部分,從解釋型語言調(diào)用。

一、調(diào)試解釋型語言代碼

大部分解釋器提供基本的語法檢查和代碼跟蹤功能。

  • “dash -n script.sh” – Shell 腳本語法檢查;
  • “dash -x script.sh” – 跟蹤一個 Shell 腳本;
  • “python -m py_compile script.py” – Python 腳本語法檢查;
  • “python -mtrace –trace script.py” – 跟蹤一個 Python 腳本;
  • “perl -I ../libpath -c script.pl” – Perl 腳本語法檢查;
  • “perl -d:Trace script.pl” – 跟蹤一個 Perl 腳本。

為了測試 perl 代碼,嘗試下 Perl 的 REPL 環(huán)境,它為 Perl 提供了 Python 類似的 REPL (=READ + EVAL + PRINT + LOOP) 環(huán)境。

二、使用GUI程序

shell 腳本能夠被改進用來制作一個吸引人的 GUI(圖形用戶界面)程序,其技巧是用一個所謂的對話程序來代替使用 echo 和 read 命令的乏味交互。

對話(dialog )程序列表:

軟件包 流行度 大小 說明
x11-utils V:197, I:564 651 xmessage(1):在一個窗口中顯示一條消息或疑問(X)
whiptail V:274, I:996 56 從 shell 腳本中顯示用戶友好的對話框(newt)
dialog V:11, I:101 1227 從 shell 腳本中顯示用戶友好的對話框(ncurses)
zenity V:76, I:362 183 從 shell 腳本中顯示圖形對話框(GTK)
ssft V:0, I:0 75 Shell 腳本前端工具 (zenity, kdialog, and 帶有 gettext 的 dialog 封裝)
gettext V:57, I:259 5817 “/usr/bin/gettext.sh”:翻譯信息

這里是一個用來演示的 GUI 程序的例子,僅使用一個 shell 腳本是多么容易。

這個腳本使用 zenity 來選擇一個文件 (默認 /etc/motd) 并顯示它。

#!/bin/sh -e
# Copyright (C) 2021 Osamu Aoki <osamu@debian.org>, Public Domain
# vim:set sw=2 sts=2 et:
DATA_FILE=$(zenity --file-selection --filename="/etc/motd" --title="Select a file to check") || \
( echo "E: File selection error" >&2 ; exit 1 )
# Check size of archive
if ( file -ib "$DATA_FILE" | grep -qe '^text/' ) ; then
zenity --info --title="Check file: $DATA_FILE" --width 640 --height 400 \
--text="$(head -n 20 "$DATA_FILE")"
else
zenity --info --title="Check file: $DATA_FILE" --width 640 --height 400 \
--text="The data is MIME=$(file -ib "$DATA_FILE")"
fi

這種使用 shell 腳本的 GUI 程序方案只對簡單選擇的場景有用。如果你寫一個其它任何復(fù)雜的程序,請考慮在功能更強的平臺上寫。

三、定制GUI文件管理器

GUI(圖形用戶界面)文件管理器在選定的文件上,能夠用外加的擴展軟件包來擴展執(zhí)行一些常見行為。通過增加特定的腳本,它們也能夠用來定制執(zhí)行非常特殊的行為。

四、Perl短腳本

處理數(shù)據(jù)時,Shell 腳本經(jīng)常依賴于創(chuàng)建子進程來運行諸如 cut、grep、sed 等外部命令,這種多進程的方式往往會導(dǎo)致執(zhí)行效率降低。相對而言,Perl 擁有強大的內(nèi)部數(shù)據(jù)處理能力,能夠更迅速地完成數(shù)據(jù)處理任務(wù)。

讓我們考慮下面一行 AWK 腳本片段和它在 Perl 中的等價物。

awk '($2=="1957") { print $3 }' |

這等價于下列的任意一行。

perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' |
perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' |
perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' |
perl -lane 'print $F[2] if $F[1] eq "1957"' |
perl -lane 'print$F[2]if$F[1]eq+1957' |

最后一個簡直就是個迷。它用上了下面列出的這些 Perl 的特型。

  • 空格為可選項;
  • 存在從數(shù)字到字符串的自動轉(zhuǎn)換;
  • 通過命令行選項: perlrun(1) 的 Perl 執(zhí)行技巧;
  • Perl 特異變量:perlvar(1)。

注意:Perl的靈活性有時也可能導(dǎo)致代碼變得難以理解和維護,因此編寫 Perl 代碼時應(yīng)當謹慎行事,避免過度復(fù)雜化。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。