在許多沒有Linux相關經驗的人看來,Linux看起來很是可怕。一些「好」發行版會給你配備華麗的桌面(例如OpenSUSE使用的KDE和Ubuntu使用的Unity),「差一些」的就配備一些樸素的桌面(例如Xfce),而「沒人性」的就只有命令行界面了。實際上Linux並不可怕,可怕的是連嘗試的勇氣都沒有。本章就帶你瞭解一下Linux最基礎的命令行和文件系統。在你親自嘗試了其中的每一個命令以後,你就會了解到命令行的魔力,同時也爲以後的學習打下基礎。python
在第2章中,咱們的主要任務就是鏈接BeagleBone,而且獲得命令提示符。在命令提示符下,你能夠輸入命令來執行啓動程序、管理文件、更新系統以及編譯程序等等的操做。默認狀況下,BeagleBone的命令提示符相似這樣:linux
root@beaglebone:~#數據庫
這看似是一串沒規律的字符串,但其中大有文章,下面就來一一解釋其中的各個部分:vim
q root:這部分用來表示當前的登陸用戶,這裏是root。root用戶是一個特殊的用戶,它存在於每個Linux系統中。它也被稱做超級用戶(superuser)或者系統管理員。固然,越大的能力對應越大的責任——你能夠操做操做系統中的任何部分,固然包括修改系統配置以及刪除整個系統。這也就印證了計算機界的一句話:再強大的系統也扛不住豬同樣的管理員。瀏覽器
q beaglebone:這部分用來表示主機名(hostname)。這是網絡中其餘計算機可使用這個名字訪問到BeagleBone。固然,這個名字並非固定的,在本章以後的部分將會介紹如何修改它。安全
q ~:這部分用來指示當前工做目錄。它是你當在所在文件系統的路徑。若是你不指定路徑地使用建立文件的命令,那麼文件就會建立在這個目錄下。波浪號(~)在文件系統中並不存在,它是登陸用戶home路徑的簡寫方式。例如,若是使用root用戶登陸,那麼它表明路徑/root;若是使用debian用戶登陸,則表明/home/debian。網絡
q #:這部分是輸入提示符。同時也表示登陸的用戶是超級用戶。若是你使用普通用戶登陸,它將變爲$,如圖3.1所示是使用普通用戶debian登陸時的提示符。ssh
圖3.1 普通用戶登陸編輯器
與其餘操做系統相似的,Linux文件系統用來組織文件或文件夾。文件系統的根目錄(最高層目錄)使用「/」來表示。在根文件系統中,有一些主要的目錄被包含在絕大多數Linux系統中,如圖3.2所示是BeagleBone上的Debian系統根目錄下的子目錄。學習
圖3.2 Debian的文件系統
其中幾個主要目錄的介紹在表3.1中。
表3.1 根文件系統中的主要目錄
在介紹了基本的目錄結構以後,咱們就能夠開始探索BeagleBone中Linux的文件系統了。你須要學習的第一個命令是pwd,它用來輸出當前工做目錄以指示你當前在文件系統中的位置:
debian@beaglebone:~$ pwd
/home/debian
上面的輸出代表了你當前在所在的目錄名爲debian。這個目錄在home目錄下,而home目錄在根(/)目錄下。
改變路徑使用的命令是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目錄。
列出目錄下的內容使用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
這個列表給出了更全面的信息,包括權限、全部者、大小、修改時間等。
爲了不破壞文件系統,在繼續學習以前咱們應該回到咱們的用戶目錄:
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的信息。
在命令行下複製文件使用的命令是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。
rm命令用來刪除文件。例如刪除yes.old可使用以下的命令:
debian@beaglebone:~$ rm yes.old
若是你想刪除一個目錄以及其中的全部文件,那麼可使用-r選項。下面的命令刪除myDir及其下面的全部文件:
debian@beaglebone:~$ rm -r myDir
須要注意的是,刪除後的文件沒法恢復,請三思然後行。
就想其餘計算機同樣,你可能設置一些選項來符合你的口味,如設置壁紙、設置語言、設置時區等。下面就介紹一些你可能想要設置的項目,其中包括日期和時間、軟件安裝和更新、修改主機名以及設置密碼。
如今的絕大多數計算機中都有一個實時時鐘,它經過一個後備電池來在電腦關機的時候保持正確的時間。可是不幸的是在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接入和互聯網,那麼安裝或者更新軟件和代碼庫是很是容易的。軟件是以包的形式分發的,在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使用beaglebone來標識本身,因此你能夠在瀏覽器中使用http://beaglebone.local或者在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。在登陸系統以後,就能夠看到修改後的主機名了。
在默認狀況下,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的電壓也能夠關機,可是可能會形成數據丟失或者損壞文件系統。正確關閉Beaglebone的方法是執行shutdown命令:
root@beaglebone:~# shutdown -h now
上面的命令會使板子當即執行關機命令,固然關機過程須要持續必定的時間。當用戶LED再也不閃爍而且電源指示燈熄滅的時候,你就能夠安全地拔下電源了。當再次將電源接入,板子會再次啓動。若是你只是想讓板子重啓,則只須要執行reboot命令便可:
root@beaglebone:~#reboot
本文選自:BeagleBone Black快速入門教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!