BeagleBone Black教程之BeagleBone Black使用到的Linux基礎
BeagleBone Black教程之BeagleBone Black使用到的Linux基礎
BeagleBone Black涉及到的Linux基礎
在許多沒有Linux相關經驗的人看來,Linux看起來非常可怕。一些“好”發行版會給你配備華麗的桌面(例如OpenSUSE使用的KDE和Ubuntu使用的Unity),“差一些”的就配備一些樸素的桌面(例如Xfce),而“沒人性”的就只有命令列介面了。實際上Linux並不可怕,可怕的是連嘗試的勇氣都沒有。本章就帶你瞭解一下Linux最基礎的命令列和檔案系統。在你親自嘗試了其中的每個命令之後,你就會了解到命令列的魔力,同時也為之後的學習打下基礎。
BeagleBone Black的命令列
在第2章中,我們的主要任務就是連線BeagleBone,並且得到命令提示符。在命令提示符下,你可以輸入命令來執行啟動程式、管理檔案、更新系統以及編譯程式等等的操作。預設情況下,BeagleBone的命令提示符類似這樣:
- root@beaglebone:~#
這看似是一串沒規律的字串,但其中大有文章,下面就來一一解釋其中的各個部分:
- q root:這部分用來表示當前的登入使用者,這裡是root。root使用者是一個特殊的使用者,它存在於每一個Linux系統中。它也被稱作超級使用者(superuser)或者系統管理員。當然,越大的能力對應越大的責任——你可以操作作業系統中的任何部分,當然包括修改系統配置以及刪除整個系統。這也就印證了計算機界的一句話:再強大的系統也扛不住豬一樣的管理員。
- q beaglebone:這部分用來表示主機名(hostname)。這是網路中其他計算機可以使用這個名字訪問到BeagleBone。當然,這個名字並不是固定的,在本章之後的部分將會介紹如何修改它。
- q ~:這部分用來指示當前工作目錄。它是你當在所在檔案系統的路徑。如果你不指定路徑地使用建立檔案的命令,那麼檔案就會建立在這個目錄下。波浪號(~)在檔案系統中並不存在,它是登入使用者home路徑的簡寫方式。例如,如果使用root使用者登入,那麼它代表路徑/root;如果使用debian使用者登入,則代表/home/debian。
- q #:這部分是輸入提示符。同時也表示登入的使用者是超級使用者。如果你使用普通使用者登入,它將變為$,如圖3.1所示是使用普通使用者debian登入時的提示符。
圖3.1 普通使用者登入
BeagleBone Black檔案系統
與其他作業系統類似的,Linux檔案系統用來組織檔案或資料夾。檔案系統的根目錄(最高層目錄)使用“/”來表示。在根檔案系統中,有一些主要的目錄被包含在絕大多數Linux系統中,如圖3.2所示是BeagleBone上的Debian系統根目錄下的子目錄。
圖3.2 Debian的檔案系統
其中幾個主要目錄的介紹在表3.1中。
表3.1 根檔案系統中的主要目錄
在介紹了基本的目錄結構之後,我們就可以開始探索BeagleBone中Linux的檔案系統了。你需要學習的第一個命令是pwd,它用來輸出當前工作目錄以指示你當前在檔案系統中的位置:
- debian@beaglebone:~$ pwd
- /home/debian
上面的輸出表明瞭你當前在所在的目錄名為debian。這個目錄在home目錄下,而home目錄在根(/)目錄下。
BeagleBone Black改變路徑
改變路徑使用的命令是cd,例如將當前目錄改為根目錄:
- debian@beaglebone:~$ pwd #輸出當前工作目錄
- /home/debian
- debian@beaglebone:~$ cd / #進入根目錄
- debian@beaglebone:/$ pwd #再次輸出當前工作目錄
- /
在執行cd命令之後再執行pwd可以看到當面目錄已經變為了根目錄(/),同時你應該注意到命令提示符$前面的“~”變成了“/”。當然想要回到使用者目錄,可以使用“~”也可以使用使用者目錄的絕對路徑“/home/debian”:
- debian@beaglebone:/$ cd ~ #進入使用者目錄
- debian@beaglebone:~$ pwd #輸出當前工作目錄
- /home/debian
- debian@beaglebone:~$ cd /home/debian/ #進入/home/debian目錄
- debian@beaglebone:~$ pwd #再次輸出當前工作目錄
- /home/debian
符號“~”是使用者目錄的簡寫,cd命令使用它可以方便地回到使用者目錄。但cd命令還提供了一種回到使用者目錄的最簡單方式——不指定引數:
- debian@beaglebone:~$ cd / #進入根目錄
- debian@beaglebone:/$ pwd #輸出當前工作目錄
- /
- debian@beaglebone:/$ cd #進入使用者主目錄
- debian@beaglebone:~$ pwd #再次輸出當前工作目錄
- /home/debian
要切換到當前目錄的父目錄也非常容易,使用“..”作為cd的引數即可:
- debian@beaglebone:~$ pwd #輸出當前工作目錄
- /home/debian
- debian@beaglebone:~$ cd .. #進入當前目錄的父目錄
- debian@beaglebone:/home$ pwd #再次輸出當前工作目錄
- /home
- debian@beaglebone:/home$ cd .. #進入當前目錄的父目錄
- debian@beaglebone:/$ pwd #再次輸出當前工作目錄
- /
從上面的一系列命令可以看出,我們使用兩次“cd ..”從使用者目錄返回到了根目錄(/)。當然,“..”同樣可以像使用普通目錄那樣使用:
- debian@beaglebone:~$ pwd #輸出當前工作目錄
- /home/debian
- debian@beaglebone:~$ cd ../../tmp #進入當前工作目錄父目錄的父目錄下的tmp
- debian@beaglebone:/tmp$ pwd #再次輸出當前工作目錄
- /tmp
“cd ../../tmp”的含義就是向上走兩個目錄,然後進入同一目錄下的tmp目錄。
BeagleBone Black中列出目錄下的內容
列出目錄下的內容使用ls命令。現在將當前目錄導航到根目錄,然後使用ls即可檢視根目錄下的所有子目錄:
- debian@beaglebone:/tmp$ cd / #進入根目錄
- debian@beaglebone:/$ ls #列出目錄下的內容
- bin dev home lost+found mnt proc run selinux sys usr
- boot etc lib media opt root sbin srv tmp var
這些目錄中的絕大部分都在表3.1中有說明。如果你還想了解這些目錄的更多資訊,那麼可以為ls傳遞-l引數:
- debian@beaglebone:/$ ls -l
- total 76
- drwxr-xr-x 2 root root 4096 May 15 10:34 bin
- drwxr-xr-x 3 root root 4096 May 15 10:27 boot
- drwxr-xr-x 14 root root 3640 May 15 10:19 dev
- drwxr-xr-x 106 root root 4096 Nov 10 15:53 etc
- drwxr-xr-x 3 root root 4096 May 15 10:52 home
- drwxr-xr-x 15 root root 4096 May 13 21:30 lib
- drwx------ 2 root root 16384 May 15 10:19 lost+found
- drwxr-xr-x 2 root root 4096 Oct 30 13:31 media
- drwxr-xr-x 2 root root 4096 Apr 20 2014 mnt
- drwxr-xr-x 5 root root 4096 May 15 10:27 opt
- dr-xr-xr-x 111 root root 0 Jan 1 1970 proc
- drwx------ 4 root root 4096 Oct 30 17:27 root
- drwxr-xr-x 23 root root 740 May 15 10:19 run
- drwxr-xr-x 2 root root 4096 May 15 10:39 sbin
- drwxr-xr-x 2 root root 4096 Jun 10 2012 selinux
- drwxr-xr-x 2 root root 4096 May 15 10:13 srv
- dr-xr-xr-x 12 root root 0 Jan 1 2000 sys
- drwxrwxrwt 8 root root 4096 Nov 10 15:17 tmp
- drwxr-xr-x 10 root root 4096 Feb 21 2014 usr
- drwxr-xr-x 12 root root 4096 May 15 10:32 var
這個列表給出了更全面的資訊,包括許可權、所有者、大小、修改時間等。
BeagleBone Black建立檔案和目錄
為了避免破壞檔案系統,在繼續學習之前我們應該回到我們的使用者目錄:
- debian@beaglebone:/$ cd
- debian@beaglebone:~$ pwd
- /home/debian
如果你是以root使用者登入的,那麼可以使用su命令切換到其他使用者。BeagleBone使用的Debian系統預設已經建立了一個名為debian的使用者,可以使用如下的命令切換:
- su debian
在切換使用者之後首先檢視當前目錄下的內容:
- debian@beaglebone:~$ ls
- bin Desktop
可以看到,在debian使用者的目錄下已經有兩個檔案了。
建立目錄可以使用mkdir命令。下面的命令在當前目錄下建立名為myDir的目錄:
- debian@beaglebone:~$ mkdir myDir
- debian@beaglebone:~$ ls
- bin Desktop myDir
再次使用ls後,可以看到新目錄已經被建立。如果你想建立一個新檔案,並且向其中寫入一些簡單的內容,使用如下的命令可以方便地完成:
- debian@beaglebone:~$ echo 'Hello, world!' > hello.txt
上面的語句使用大於符號(>)將“Hello, world!”重定向到了hello.txt檔案。由於hello.txt之前並不存在,所以這條命令會建立這個檔案,使用ls命令可以看到這個新檔案:
- debian@beaglebone:~$ ls
- bin Desktop hello.txt myDir
需要特別注意的是,如果hello.txt檔案已經存在,那麼前面的命令會清空檔案中的內容。cat命令可以將檔案中的內容輸出:
- debian@beaglebone:~$ cat hello.txt
- Hello, world!
如果你只是想在原來檔案內容的基礎上追加一些內容,那麼需要使用“>>”符號重定向。下面的命令將“Yes!”追加到hello.txt檔案中:
- debian@beaglebone:~$ echo 'Yes!' >> hello.txt
使用cat命令再次檢視hello.txt檔案:
- debian@beaglebone:~$ cat hello.txt
- Hello, world!
- Yes!
可以看到,“Yes!”已經被正確地新增進去。如果你只是想建立一個空檔案而不進行任何操作,那麼可以使用如下的命令:
- debian@beaglebone:~$ > empty.txt
是的,直接使用重定向符“>”即可,上面的命令在當前目錄下建立了名為empty.txt的空檔案。使用ls命令即可看到新建的檔案:
- debian@beaglebone:~$ ls
- bin Desktop empty.txt hello.txt myDir
當然,重定向符號不僅僅可以重定向echo,還可以重定向cat的輸出,如下的命令就將hello.txt中的內容輸入到empty.txt檔案中去:
- debian@beaglebone:~$ cat hello.txt > empty.txt
使用cat檢視hello.txt和empty.txt的內容:
- debian@beaglebone:~$ cat hello.txt
- Hello, world!
- Yes!
- debian@beaglebone:~$ cat empty.txt
- Hello, world!
- Yes!
可以看到,這兩個檔案中的內容是完全一致的。前面介紹的這些命令可以建立檔案並簡單地寫入一些內容。如果你想要檢視並編輯內容的話,還是使用一個編輯器比較好。在Linux系統中,通常都帶有nano編輯器。下面的命令使用nano開啟empty.txt檔案:
- debian@beaglebone:~$ nano empty.txt
nano是字元介面下的文字編輯器,如圖3.3是開啟empty.txt檔案後的效果。
圖3.3 nano編輯器
當然,這個編輯器是不支援滑鼠操作的,一切操作都使用鍵盤完成,一些常用的操作都在螢幕下邊做了提示,其中符號“^”表示鍵盤上的Ctrl鍵。移動游標可以使用方向鍵;儲存檔案使用Ctrl+O;退出nano則使用Ctrl+X。當然,nano可以完成的功能遠不像看起來那麼簡陋,它還可以執行搜尋、剪貼簿操作以及拼寫檢查。使用Ctrl+G組合鍵可以檢視更多關於nano的資訊。
BeagleBone Black複製、移動(剪下)和重新命名檔案
在命令列下複製檔案使用的命令是cp,在3.2.3節中我們建立了myDir資料夾。下面的命令將hello.txt複製一份到myDir中:
- debian@beaglebone:~$ cp hello.txt myDir
使用ls命令檢視myDir目錄下的內容:
- debian@beaglebone:~$ ls myDir
- hello.txt
使用cat命令檢視hello.txt中的內容:
- debian@beaglebone:~$ cat myDir/hello.txt
- Hello, world!
- Yes!
可以看到hello.txt中的內容與myDir目錄外的hello.txt中的內容是一致的。
移動檔案的命令與複製命令類似,只不過直接移動檔案而不進行復制,使用的命令是mv。在使用這個命令前我們列出當前使用者目錄下的檔案:
- debian@beaglebone:~$ ls
- bin Desktop empty.txt hello.txt myDir
下面的命令將empty.txt檔案移到myDir資料夾中:
- debian@beaglebone:~$ mv empty.txt myDir
執行完成後再次檢視當前目錄下的檔案:
- debian@beaglebone:~$ ls
- bin Desktop hello.txt myDir
可以看到,empty.txt檔案已不復存在。檢視myDir目錄下的檔案:
- debian@beaglebone:~$ ls myDir
- empty.txt hello.txt
可以看到,empty.txt出現在了myDir目錄下。
mv命令的一個技巧用法就是重新命名檔案。在操作之前先確認當前目錄下的檔案:
- debian@beaglebone:~$ ls
- bin Desktop hello.txt myDir
下面的操作將hello.txt重新命名為yes.old:
- debian@beaglebone:~$ mv hello.txt yes.old
再次檢視當前目錄下的檔案:
- debian@beaglebone:~$ ls
- bin Desktop myDir yes.old
可以看到,hello.txt已經被重新命名為yes.old。
BeagleBone Black刪除檔案和目錄
rm命令用來刪除檔案。例如刪除yes.old可以使用如下的命令:
- debian@beaglebone:~$ rm yes.old
如果你想刪除一個目錄以及其中的所有檔案,那麼可以使用-r選項。下面的命令刪除myDir及其下面的所有檔案:
- debian@beaglebone:~$ rm -r myDir
需要注意的是,刪除後的檔案無法恢復,請三思而後行。
BeagleBone Black系統設定
就想其他計算機一樣,你可能設定一些選項來符合你的口味,如設定桌布、設定語言、設定時區等。下面就介紹一些你可能想要設定的專案,其中包括日期和時間、軟體安裝和更新、修改主機名以及設定密碼。
BeagleBone Black日期和時間
現在的絕大多數計算機中都有一個實時時鐘,它透過一個後備電池來在電腦關機的時候保持正確的時間。但是不幸的是在BeagleBone中並沒有配備這樣的裝置。也就是說在你剛啟動BeagleBone後,它並不知道當前的時間。檢視系統中的時間可以使用date命令:
- debian@beaglebone:~$ date
- Mon Nov 10 17:29:34 CST 2014
當然,在系統啟動之後就可以正確地計時了,你只需要手動為他設定一個正確的時間即可。但是,每次系統啟動都這樣做是任何人受不了的。幸運的是,如果將BeagleBone接入網際網路,它就可以透過NTP來設定時間。當然,你可能發現你的BeagleBone已經聯網了,但是時間還是不正確的。這是因為你還需要進行一些設定。
1.設定時區
你需要做的第一件事情就是設定時區(Timezone)。板子上已經預置了時區的資料庫,你需要做的就是將對應的時區連結到/etc/localtime。首先,你應該備份原來的配置,將localtime重新命名為localtime.old:
- root@beaglebone:~# mv /etc/localtime /etc/localtime.old
如果你使用的是普通使用者,則需要在命名前加上sudo:
- debian@beaglebone:~$ sudo mv /etc/localtime /etc/localtime.old
現在我們就可以檢視資料庫中允許的時區了:
- debian@beaglebone:~$ ls /usr/share/zoneinfo/
- Africa Chile Factory Iceland MET posix UCT
- America CST6CDT GB Indian Mexico posixrules Universal
- Antarctica Cuba GB-Eire Iran MST PRC US
- Arctic EET GMT iso3166.tab MST7MDT PST8PDT UTC
- Asia Egypt GMT0 Israel Navajo right WET
- Atlantic Eire GMT-0 Jamaica NZ ROC W-SU
- Australia EST GMT+0 Japan NZ-CHAT ROK zone.tab
- Brazil EST5EDT Greenwich Kwajalein Pacific Singapore Zulu
- Canada Etc Hongkong Libya Poland SystemV
- CET Europe HST localtime Portugal Turkey
需要注意的是,一些時區可能包含在以洲命名的資料夾中,例如上海,就包含在Asia中:
- debian@beaglebone:~$ ls /usr/share/zoneinfo/Asia/
- Aden Choibalsan Irkutsk Kuwait Qyzylorda Tokyo
- Almaty Chongqing Istanbul Macao Rangoon Ujung_Pandang
- Amman Chungking Jakarta Macau Riyadh Ulaanbaatar
- Anadyr Colombo Jayapura Magadan Saigon Ulan_Bator
- Aqtau Dacca Jerusalem Makassar Sakhalin Urumqi
- Aqtobe Damascus Kabul Manila Samarkand Ust-Nera
- Ashgabat Dhaka Kamchatka Muscat Seoul Vientiane
- Ashkhabad Dili Karachi Nicosia Shanghai Vladivostok
- Baghdad Dubai Kashgar Novokuznetsk Singapore Yakutsk
- Bahrain Dushanbe Kathmandu Novosibirsk Taipei Yekaterinburg
- Baku Gaza Katmandu Omsk Tashkent Yerevan
- Bangkok Harbin Khandyga Oral Tbilisi
- Beirut Hebron Kolkata Phnom_Penh Tehran
- Bishkek Ho_Chi_Minh Krasnoyarsk Pontianak Tel_Aviv
- Brunei Hong_Kong Kuala_Lumpur Pyongyang Thimbu
- Calcutta Hovd Kuching Qatar Thimphu
接下來需要做的就是建立localtime到期望時區的符號連結,這裡以Shanghai為例:
- root@beaglebone:~# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
如果你使用的是普通使用者登入,則需要在命令前加上sudo:
- debian@beaglebone:~$ sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
符號連結就類似Windows作業系統下的快捷方式。
2.同步時間
在設定完時區以後,就可以手動觸發一次時間同步了。在Debian下使用的命令是ntpdate-debian:
- root@beaglebone:/home/debian# ntpdate-debian
- 10 Nov 17:55:25 ntpdate[3536]: adjust time server 202.112.31.197 offset -0.448913 sec
再次執行date即可檢視同步後的時間:
- debian@beaglebone:~$ date
- Mon Nov 10 17:57:11 CST 2014
現在,只要BeagleBone上電,時間就會被追蹤。BeagleBone同時也將NTP同步設定為每小時執行一次,這就會導致BeagleBone在上電的一段時間內時間不正確。你可以使用上面的命令來強制進行同步。
BeagleBone Black軟體安裝和更新
如果你的BeagleBone接入和網際網路,那麼安裝或者更新軟體和程式碼庫是非常容易的。軟體是以包的形式分發的,在Debian下,使用apt-get來進行軟體包管理。
apt-get儲存了一份最新軟體版本的資料庫,但是隨著時間的推移,這個資料庫就過期了。所以,在安裝軟體包之前,首先需要更新這個資料庫。更新的命令非常簡單,如下:
- root@beaglebone:~# apt-get update
此時,螢幕會滾動一些字串以表示正在執行的步驟。如果你想將你安裝的軟體全部更新到最新版本,則可以執行upgrade命令:
- root@beaglebone:~# apt-get upgrade
這個命令依賴於你的網路狀況以及需要更新的軟體包的數量,整個處理過程可能會經歷相當長的一段時間。
如果你想安裝確定的軟體或者程式碼庫,你可以使用install引數以及相應軟體包的名字,例如安裝VIM可以使用如下的命令:
- root@beaglebone:~# apt-get install vim
如果你不想進行upgrade整個系統而只是想升級某個軟體,那麼可以為upgrade指定要升級的軟體包的名字。如下是升級Python的命令:
- root@beaglebone:~# opkg upgrade python
BeagleBone Black修改主機名
預設情況下,BeagleBone使用beaglebone來標識自己,所以你可以在瀏覽器中使用或者在SSH客戶端中使用ssh root@beaglebone.local來訪問它。在大多數情況下是不需要修改它的。但是如果在你的路由器中同時接入多個BeagleBone,你就不知道這個主機名對應的板子了。這就需要為他們分別指定一些個性化的名字。
主機名儲存在/etc/hostname中,你可以使用cat檢視其中的內容:
- root@beaglebone:~# cat /etc/hostname
- beaglebone
要修改主機名非常容易,只需要將你想要的主機名寫入hostname即可,可以使用nano也可以使用echo,這裡以使用echo演示:
- root@beaglebone:~# echo 'mybeaglebone' > /etc/hostname
上面的命令將板子的主機名改為“mybeaglebone”。需要注意的是主機名只可以包含字母、數字和下劃線,不可以包含@、#、$等這些特殊符號。
為了Beaglebone可以認出自己的主機名,還需要修改hosts檔案:
- root@beaglebone:~# nano /etc/hosts
hosts檔案的內容如圖3.4所示。
圖3.4 hosts檔案
我們需要將其中的“beaglebone”改為對應的主機名,之後儲存修改並退出nano。修改完之後,你需要重啟Beaglebone。在登入系統之後,就可以看到修改後的主機名了。
BeagleBone Black設定密碼
在預設情況下,Debian的root使用者是沒有設定密碼的,如果你只透過USB的方式連線或者在自己的私有網路中使用Beaglebone,那麼有沒有密碼都無所謂。但是如果你將Beaglebone接入公共的網際網路,最好還是為它設定一個唯一的密碼。
在Linux中,設定和修改密碼均使用passwd:
- root@beaglebone:~# passwd
- Enter new UNIX password: #輸入的密碼不回顯
- Retype new UNIX password: #輸入的密碼不回顯
- passwd: password updated successfully
root使用者想要設定其他使用者的密碼可以為passwd命令指定引數,例如下面的命令為debian使用者設定密碼:
- root@beaglebone:~# passwd debian
- Enter new UNIX password:
- Retype new UNIX password:
- passwd: password updated successfully
BeagleBone Black關機
雖然直接切斷Beaglebone的電壓也可以關機,但是可能會造成資料丟失或者損壞檔案系統。正確關閉Beaglebone的方法是執行shutdown命令:
- root@beaglebone:~# shutdown -h now
上面的命令會使板子立即執行關機命令,當然關機過程需要持續一定的時間。當使用者LED不再閃爍並且電源指示燈熄滅的時候,你就可以安全地拔下電源了。當再次將電源接入,板子會再次啟動。如果你只是想讓板子重啟,則只需要執行reboot命令即可:
- root@beaglebone:~#reboot
本文選自:BeagleBone Black快速入門教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1724560/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- BeagleBone Black教程之BeagleBone Black裝置的連線
- Beaglebone Black教程Beaglebone Black的引腳分配
- Beaglebone Black教程BeagleBone Black安裝最新系統映像
- Beaglebone Black教程使用SSH通過USB和因特網連線Beaglebone Black
- 通過因特網連線Beaglebone Black
- Beaglebone Black開發板安裝驅動
- Beaglebone Black教程專案1閃爍板載LED
- 其他主流開源硬體簡介BeagleBone Black快速入門
- BeagleBone Black專案實訓手冊(大學霸內部資料)
- BeagleBone Black快速入門教程第1章嵌入式Linux之於Maker們Linux
- Beaglebone - Getting Started
- C. Black Circles
- 基於Blackfin構架體系的DSR實現
- Linux 的shell基礎教學Linux
- BlackArch Linux新版增加50多黑客工具!Linux黑客
- Black Out for mac (影像模糊工具)Mac
- Ubuntu Black screen after boot splashUbuntuboot
- Red and Black(DFS入門題)
- Development log - red & black (1) (轉)dev
- Development log - red & black (2) (轉)dev
- Linux基礎教程之命令的使用(轉)Linux
- Linux的shell基礎教學(轉)Linux
- 惡魔化身:新型勒索BlackMatter Windows和Linux通吃WindowsLinux
- 勒索軟體簡介:BlackMatter
- Red and Black Plaid Shoes Golden GooseAIGo
- BLACKHOLE儲存引擎總結儲存引擎
- HDU 5113 Black And White (dfs)
- Blackberry 8707 intellisync errorIntelError
- [Black Watch 入群題]PWN 1
- BlackBerry 應用程式開發者指南 第一卷:基礎--第9章 IT策略(Policy)
- BlackArch Linux 釋出2018.12.01版本Linux
- 使用 Black 自由格式化 PythonPython
- Citrix小貼紙—CitrixReceiverforBlackBerry1.0ORB
- 利器OSW (OSWatcher Black Box) 簡介
- [GYCTF2020]BlacklistTF2
- 關於黑暗力量(BlackEnergy)的一點思考
- 關於安裝black apple遇到的坑APP
- BlackTea註釋的新手入門之路