【AI白身境】Linux干活三板斧,shell、vim和git
文章首發(fā)于微信公眾號(hào)《與有三學(xué)AI》
【AI白身境】Linux干活三板斧,shell、vim和git
今天是專欄《AI白身境》的第二篇,所謂白身,就是什么都不會(huì),還沒(méi)有進(jìn)入角色。
上一篇給大家介紹了要想真正進(jìn)入深度學(xué)習(xí)這個(gè)行業(yè),必須要先學(xué)會(huì)使用Linux,今天就和大家說(shuō)說(shuō)我們應(yīng)該如何使用Linux,如何利用shell,vim和git這三大神器。
作者?|?湯興旺?言有三
編輯?|?湯興旺?言有三
?
01?Linux基礎(chǔ)命令與shell腳本
通過(guò)第一篇的介紹,我們已經(jīng)知道在Linux下面操作會(huì)比windows下效率高很多,下面和大家講解一下Linux的基礎(chǔ)操作,默認(rèn)大家已經(jīng)裝好了Linux系統(tǒng)。
1.1?cd命令
命令格式:cd?<路徑>
意義:cd是change?directory?的縮寫(xiě);cd命令后面跟一個(gè)路徑,用于切換當(dāng)前用戶所在的路徑,其中路徑可以是絕對(duì)路徑也可以是相對(duì)路徑。
示例:
cd?/system/bin?表示切換到/system/bin路徑下。
cd?logs?表示切換到logs路徑下。
cd?/?表示切換到根目錄。
cd?../?表示切換到上一層路徑。
1.2?ls命令
命令格式:ls?<參數(shù)>?<路徑>
意義:ls是list的縮寫(xiě);ls命令后面可以跟一個(gè)路徑或參數(shù),也可以不跟,表示列出路徑或當(dāng)前目錄下的所有文件信息。最常用的的參數(shù)是“-l",也就是“l(fā)s?-l”命令。
示例:
ls?/?顯示根目錄下的所有文件及文件夾。
ls?-l?/data?顯示/data路徑下的所有文件及文件夾的詳細(xì)信息。
ls?-l?顯示當(dāng)前路徑下的所有文件及文件夾的詳細(xì)信息
ls?*l?wc顯示當(dāng)前目錄下面的文件數(shù)量。
1.3?cat命令
命令格式:?cat?<文件>
意義:cat是concatenate?的縮寫(xiě)。表示讀取文件內(nèi)容及拼接文件。
示例:
cat?/sys/devices/system/cpu/online?讀取?/sys/devices/system/cpu/路徑下online文件內(nèi)容。
cat?test.txt?讀取當(dāng)前路徑下test.txt文件內(nèi)容。
1.4?rm命令
命令格式:?rm?<文件>?或?rm?-r?<文件夾>
意義:rm是remove?的縮寫(xiě)。用于刪除文件或文件夾,常用參數(shù)-r?-f,-r表示刪除目錄,也可以用于刪除文件,-f表示強(qiáng)制刪除,不需要確認(rèn)。同樣的,刪除文件前需保證當(dāng)前用戶對(duì)當(dāng)前路徑有修改的權(quán)限。
示例:
rm?-rf?path?刪除path。
rm?test.txt?刪除test.txt。
1.5?mkdir命令
命令格式:?mkdir?文件夾
意義:mkdir是make?directory?的縮寫(xiě)。用于創(chuàng)建文件夾。創(chuàng)建文件夾前需保證當(dāng)前用戶對(duì)當(dāng)前路徑有修改的權(quán)限。
示例:
mkdir?/data/path?在/data路徑下創(chuàng)建path文件夾。
mkdir?-p?a/b/c?參數(shù)?-p用于創(chuàng)建多級(jí)文件夾,這句命令表示在當(dāng)前路徑下創(chuàng)建文件夾a,?而a文件夾包含子文件夾b,b文件夾下又包含子文件夾c。
1.6?cp命令
命令格式:?cp?<文件><目標(biāo)文件>或者cp?-r<文件夾><目標(biāo)文件夾>
意義:cp是copy?的縮寫(xiě)。用于復(fù)制文件或文件夾。
示例:
cp?/data/logs?/data/local/tmp/logs?復(fù)制/data路徑下的logs到/data/local/tmp路徑下。
cp?1.sh?/sdcard/?復(fù)制當(dāng)前路徑下的1.sh到/sdcard下。
1.7?kill命令
命令格式:kill?PID碼
意義:結(jié)束當(dāng)前進(jìn)程
示例:
先通過(guò)輸入命令?ps?au查看進(jìn)程,找到需要終止進(jìn)程的PID再通過(guò)kill?PID即可,如我這里想要終止的進(jìn)程是vimtest.py,查到的PID是3163,我們可以輸入kill?3163結(jié)束這個(gè)程序,如果結(jié)束不了,可以通過(guò)kill?-9?PID碼強(qiáng)制結(jié)束,即kii?-9?3163
除了這七個(gè)命令,還有許多常見(jiàn)的命令,如pwd命令,這個(gè)可以查看當(dāng)前路徑,這個(gè)在移動(dòng)數(shù)據(jù)集或者整理文件list的時(shí)候很有用;tar命令,這個(gè)可以文件壓縮;unzip命令,這個(gè)可以用于文件解壓,這樣的命令其實(shí)還有很多,需要我們?cè)谑褂玫倪^(guò)程中不斷熟練,需要我們不停的查閱學(xué)習(xí)。
1.8?shell腳本文件之"hello?world"
有了基本的命令之后,接下來(lái)就可以寫(xiě)一些常用的腳本。腳本常用于獲取參數(shù),循環(huán)遍歷。
首先我們看一個(gè)“hello?world”。
#!/bin/sh
a="hello?world!"
num=2
echo?"a?is?:?$a?num?is?:?${num}nd"
運(yùn)行結(jié)果:
a?is?:?hello?world!?num?is?:?2nd
可以看出,用$來(lái)獲取變量值,通常運(yùn)行腳本的時(shí)候,可以用$1,$2,$3等獲取多個(gè)參數(shù)。
比如腳本test.sh
x=$1
y=$2
z=$3
echo?$1?$2?$3
調(diào)用的時(shí)候就可以:sh?test.sh?1?2?3
1.9?shell腳本文件之遍歷目錄
問(wèn)題:
1.?切換工作目錄至/tmp
2.?依次向/tmp目錄中的每個(gè)文件或子目錄問(wèn)好(Hello,log)
3.?統(tǒng)計(jì)/tmp目錄下共有多個(gè)文件,并顯示出來(lái)
#!/bin/bash
cd?/tmp
for?i?in?/tmp/*
do
????echo?"Hello?,?$i"
done
count=`ls?-l|grep?'^-'|wc?-l`
echo?"====file_count:$count===="
運(yùn)行結(jié)果:
shell命令還有很多高級(jí)用法,大家在實(shí)戰(zhàn)中進(jìn)行練習(xí)提高吧。
?
02?github
github是全球最大的程序員交友平臺(tái),所以如果你要想從事技術(shù)行業(yè),就必須擁有一個(gè)賬號(hào),跟微信一樣離不開(kāi)你的生活。
2.1?注冊(cè)github????????????????????????????
https://github.com/這個(gè)是github官方網(wǎng)站,我們可以在官網(wǎng)上注冊(cè)屬于自己的gitHub賬號(hào)。點(diǎn)擊網(wǎng)址后,界面如下圖,由于我們沒(méi)有g(shù)ithub賬戶,?我們需要點(diǎn)擊Sign?up?for??Github進(jìn)行簡(jiǎn)單的注冊(cè)。
點(diǎn)擊Sign?up?for?Github后,進(jìn)入下方這個(gè)界面,在Step1中填寫(xiě)好個(gè)人信息,Step2-3全部采用默認(rèn)設(shè)置,即可完成github注冊(cè),記得要去自己的郵箱verify,不然后面沒(méi)辦法創(chuàng)建倉(cāng)庫(kù)。是不是很簡(jiǎn)單。
完成上面的步驟后你就擁有了自己的github賬戶,下圖就是我的github主頁(yè)。
2.2?創(chuàng)建倉(cāng)庫(kù)
有了上面的主頁(yè)后,我們點(diǎn)擊start?a?project后就可以創(chuàng)建倉(cāng)庫(kù)了,下圖就是倉(cāng)庫(kù)需要填寫(xiě)一些信息的界面。
倉(cāng)庫(kù)名通常就填寫(xiě)我們的項(xiàng)目名,為了說(shuō)明,這里我填寫(xiě)my_github,描述可以對(duì)自己的倉(cāng)庫(kù)進(jìn)行一個(gè)簡(jiǎn)單的說(shuō)明,也可以不填。點(diǎn)擊“Create?repository”按鈕,就成功地創(chuàng)建了一個(gè)新的github倉(cāng)庫(kù),如下圖所示:
現(xiàn)在我們就有了自己的github和倉(cāng)庫(kù),為了便于管理,我們需要安裝一個(gè)軟件git。
2.3?安裝git
下面我將說(shuō)一下在ubuntu18.04上安裝git,其他的linux系統(tǒng)其實(shí)也是一樣的,安裝方法很簡(jiǎn)單,輸入下面命令即可安裝。
sudo?apt?install?git
安裝完成后,你可以用下面命令查看git版本。
?git?--version
2.4?配置參數(shù)
接下來(lái)你需要做的就是在git中配置自己的名稱和電子郵件地址,可以通過(guò)使用以下命令來(lái)完成此操作:
$git?config?--global?user.name?"your?name"
$git?config?--global?user.email??"your?email"
我們可以通過(guò)下面命令查看是否正確配置。
git?config?--list
這還沒(méi)有完,我們還需要?jiǎng)?chuàng)建一個(gè)ssh?key,這個(gè)實(shí)際上就是一個(gè)將你的電腦和github賬號(hào)聯(lián)系在一起的密鑰,這樣以后就可以十分方便的通過(guò)git上傳你的代碼。下面介紹一下如何獲得這個(gè)密鑰,又是如何輸入到你的Github中。
獲取密鑰的方法如下:
首先在命令行輸入cd??~/.ssh,第一次配置會(huì)顯示沒(méi)有那個(gè)文件或目錄,這是正常現(xiàn)象。然后在命令行輸入ssh-keygen?-t?rsa?-C?"郵箱地址",接下來(lái)連按三次回車就可以了。
命令行代碼如下:
這樣我們的密鑰就創(chuàng)建成功了。
然后打開(kāi)/home/tangxingwang/.ssh/id_rsa文件夾下id_rsa.pub文件,復(fù)制里面的內(nèi)容,打開(kāi)之后不要驚訝,這就是你需要的密鑰。你需要登錄你的github來(lái)添加這個(gè)密鑰,登錄github后找到SSH?and?GPG?keys這個(gè)選項(xiàng)(在setting里面),然后點(diǎn)擊網(wǎng)頁(yè)右上角的New?SSH?keys進(jìn)行添加。具體細(xì)節(jié)如下圖:
點(diǎn)擊New?SSH?keys后界面如下圖所示,這里的Title是讓你給你的密鑰起一個(gè)名字,隨便起一個(gè)就行,然后把你剛剛復(fù)制的密鑰填寫(xiě)在下邊的大框里,點(diǎn)擊Add?SSH?keys即可。
2.5?clone操作
當(dāng)我們想要從github上面拉取代碼時(shí),就需要使用clone操作,現(xiàn)在我們看看怎么進(jìn)行clone,其實(shí)很簡(jiǎn)單,只需要輸入?git?clone<需要clone的地址>,示例如下:
git?clone?git@github.com:tangxingwang/my_github.git
這樣就clone成功了,是不是很簡(jiǎn)單。
有的時(shí)候我們需要拉取依賴庫(kù),就需要加上--recursive選項(xiàng)。
2.6?push操作
說(shuō)完clone,我們?cè)僦v講push,現(xiàn)在我想在剛剛clone下的文件夾my_github里面添加一個(gè)新的文件test.py,然后把它push到github中。命令如下:
cd?my_github??
touch?test.py
git?add?test.py
git?status
git?commit?-m"first?commit"
git?push?origin?master
這樣我們就push成功了,我們?cè)倏纯磄ithub
?
03?VIM基本操作
最后我們說(shuō)說(shuō)編輯器之神vim。vim是從vi發(fā)展出來(lái)的一個(gè)文本編輯器,其在代碼補(bǔ)全、編譯等方便的功能特別豐富,在程序員中被廣泛使用。
3.1?基本命令模式
用戶剛剛啟動(dòng)?vi/vim,便進(jìn)入了命令模式。
此狀態(tài)下敲擊鍵盤(pán)動(dòng)作會(huì)被vim識(shí)別為命令,而非輸入字符。比如我們此時(shí)按下i,并不會(huì)輸入一個(gè)字符,i被當(dāng)作了一個(gè)命令。
以下是常用的幾個(gè)命令:
-
i?切換到輸入模式,以輸入字符。
-
x?刪除當(dāng)前光標(biāo)所在處的字符。
-
:?切換到底線命令模式,以在最底一行輸入命令
3.2?輸入模式
在輸入模式下可以對(duì)文件執(zhí)行寫(xiě)操作,類似在Windows?的文檔中輸入內(nèi)容。進(jìn)入輸入模式的方法是輸入?i、a、o等插入命令,編寫(xiě)完成后按?Esc?鍵即可返回基本命令模式。
3.3?底線命令模式
如果要保存、查找或者替換一些內(nèi)容等,就需要進(jìn)入底線命令模式。
底線命令模式的進(jìn)入方法為:在基本命令模式下按":"鍵,vim?窗口的左下方會(huì)出現(xiàn)一個(gè)":"符號(hào),這時(shí)就可以輸入相關(guān)的指令進(jìn)行操作了。
對(duì)于新手來(lái)說(shuō),經(jīng)常不知道自己處于什么模式,不論是自己忘了,還是不小心切換了模式,都可以按一次?Esc?鍵返回基本命令模式。如果你多按幾次?Esc?鍵后聽(tīng)到"嘀————"的聲音,則代表你已經(jīng)處于基本命令模式了。
3.4?vim使用實(shí)例
現(xiàn)在我們使用?vim?來(lái)建立一個(gè)名為?test.py?的文件,你可以這樣做:vi?test.py,這樣就就入了基本命令模式了
按下?i?進(jìn)入輸入模式,開(kāi)始編輯文字,其實(shí)在基本命令模式下,只要按下?i,?o,?a?等字符就可以進(jìn)入輸入模式了!但各自的功能不同。
其中i是光標(biāo)前插入,a是光標(biāo)后插入,o是換行。另外在輸入模式當(dāng)中,你可以發(fā)現(xiàn)在左下角狀態(tài)欄中會(huì)出現(xiàn)?–插入-?的字樣,那就是可以輸入任意字符的提示。這個(gè)時(shí)候,鍵盤(pán)上除了?Esc?這個(gè)按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進(jìn)行任何的編輯。
那么假設(shè)我已經(jīng)按照下面的樣式給它編輯完畢了,應(yīng)該要如何退出呢?其實(shí)很簡(jiǎn)單,就是給它按下Esc這個(gè)按鈕即可!馬上你就會(huì)發(fā)現(xiàn)畫(huà)面左下角的?–插入?–?不見(jiàn)了!
對(duì)文件編輯完后,我們需要對(duì)文件進(jìn)行保存,其實(shí)存盤(pán)并離開(kāi)的指令很簡(jiǎn)單,在基本命令模式下輸入?:wq?即可保存離開(kāi)!
或者按住shift,連續(xù)按兩次大寫(xiě)的ZZ。
OK!?這樣我們就成功創(chuàng)建了一個(gè)test.py文件
3.5?vim按鍵說(shuō)明
除了上面簡(jiǎn)易范例的?i,?o,a,Esc,?:wq?之外,其實(shí)?vim?還有非常多的按鍵可以使用
?
這些基本命令需要我們?cè)谑褂眠^(guò)程中不斷的總結(jié),這樣才會(huì)融會(huì)貫通。附上一張vim的鍵盤(pán)圖,哈哈。
3.6?vim插件攻略
工欲善其事,必先利其器。一個(gè)強(qiáng)大的開(kāi)發(fā)環(huán)境可以大大提高工作效率。好吧,我知道這是廢話。。。不過(guò),我想一定有很多跟我一樣打算進(jìn)入Linux平臺(tái)開(kāi)發(fā)的新手,一開(kāi)始都為找不到一個(gè)像Windows下的VS那樣可以一鍵安裝并且功能幾乎完美無(wú)缺的開(kāi)發(fā)工具而郁悶不已,甚至打算收回剛剛邁出的腳步。所幸的是,Vim有許多強(qiáng)大的插件。
3.6.1vim插件之Vundle
vim?通過(guò)插件可以被拓展出不同層次的功能。通常,所有的插件和附屬的配置文件都會(huì)存放在?~/.vim目錄中。由于所有的插件文件都被存儲(chǔ)在同一個(gè)目錄下,所以當(dāng)你安裝更多插件時(shí),不同的插件文件之間相互混淆。因而,跟蹤和管理它們將是一個(gè)恐怖的任務(wù)。然而,這正是?Vundle?所能處理的。
Vundle,分別是?vim?和?Bundle?的縮寫(xiě),它是一款能夠管理?vim?插件的非常實(shí)用的工具。它為每一個(gè)你安裝的插件創(chuàng)建一個(gè)獨(dú)立的目錄樹(shù),并在相應(yīng)的插件目錄中存儲(chǔ)附加的配置文件。因此,相互之間沒(méi)有混淆的文件。簡(jiǎn)言之,Vundle?允許你安裝新的插件、配置已有的插件、更新插件配置、搜索安裝的插件和清理不使用的插件。所有的操作都可以在一鍵交互模式下完成
3.6.2?Vim插件之YouCompleteMe
使用Vim編寫(xiě)程序少不了使用自動(dòng)補(bǔ)全插件。這時(shí)候當(dāng)然少不了YouCompleteMe,它是一個(gè)隨鍵而全的、支持模糊搜索的、高速補(bǔ)全的插件。YCM?由?google?公司搜索項(xiàng)目組的軟件工程師?Strahinja?Val?Markovic?所開(kāi)發(fā),YCM?后端調(diào)用?libclang(以獲取AST,當(dāng)然還有其他語(yǔ)言的語(yǔ)義分析庫(kù))、前端由?C++?開(kāi)發(fā)(以提升補(bǔ)全效?率)、外層由?python?封裝,這就是最好用的自動(dòng)補(bǔ)全插件。vim插件還有很多,大家可以根據(jù)自己的需要進(jìn)行安裝。
當(dāng)我們真正熟悉使用了上面的3類工具之后,就從Linux菜鳥(niǎo)開(kāi)始進(jìn)步了。
?
總結(jié)
你現(xiàn)在對(duì)shell,vim,git是不是有點(diǎn)感覺(jué)了,抓緊學(xué)習(xí),也要期待我們下一篇的內(nèi)容喲。
下期預(yù)告:下一期我們會(huì)講python的常用基礎(chǔ),如果你有建議,歡迎留言,我們會(huì)及時(shí)采納的。
?
轉(zhuǎn)載文章請(qǐng)后臺(tái)聯(lián)系
侵權(quán)必究
AI白身境系列完整閱讀:
第一期:【AI白身境】深度學(xué)習(xí)從棄用windows開(kāi)始
第二期:【AI白身境】Linux干活三板斧,shell、vim和git
第三期:【AI白身境】學(xué)AI必備的python基礎(chǔ)
第四期:【AI白身境】深度學(xué)習(xí)必備圖像基礎(chǔ)
第五期:【AI白身境】搞計(jì)算機(jī)視覺(jué)必備的OpenCV入門基礎(chǔ)
第六期:【AI白身境】只會(huì)用Python?g++,CMake和Makefile了解一下
第七期:【AI白身境】學(xué)深度學(xué)習(xí)你不得不知的爬蟲(chóng)基礎(chǔ)
第八期:?【AI白身境】深度學(xué)習(xí)中的數(shù)據(jù)可視化
第九期:【AI白身境】入行AI需要什么數(shù)學(xué)基礎(chǔ):左手矩陣論,右手微積分
第十期:【AI白身境】一文覽盡計(jì)算機(jī)視覺(jué)研究方向
第十一期:【AI白身境】AI+,都加在哪些應(yīng)用領(lǐng)域了
第十二期:【AI白身境】究竟誰(shuí)是paper之王,全球前10的計(jì)算機(jī)科學(xué)家
AI初識(shí)境系列完整閱讀
第一期:【AI初識(shí)境】從3次人工智能潮起潮落說(shuō)起
第二期:【AI初識(shí)境】從頭理解神經(jīng)網(wǎng)絡(luò)-內(nèi)行與外行的分水嶺
第三期:【AI初識(shí)境】近20年深度學(xué)習(xí)在圖像領(lǐng)域的重要進(jìn)展節(jié)點(diǎn)
第四期:【AI初識(shí)境】激活函數(shù):從人工設(shè)計(jì)到自動(dòng)搜索
第五期:【AI初識(shí)境】什么是深度學(xué)習(xí)成功的開(kāi)始?參數(shù)初始化
第六期:【AI初識(shí)境】深度學(xué)習(xí)模型中的Normalization,你懂了多少?
第七期:【AI初識(shí)境】為了圍剿SGD大家這些年想過(guò)的那十幾招
第八期:【AI初識(shí)境】被Hinton,DeepMind和斯坦福嫌棄的池化,到底是什么?
第九期:【AI初識(shí)境】如何增加深度學(xué)習(xí)模型的泛化能力
第十期:【AI初識(shí)境】深度學(xué)習(xí)模型評(píng)估,從圖像分類到生成模型
第十一期:【AI初識(shí)境】深度學(xué)習(xí)中常用的損失函數(shù)有哪些?
第十二期:【AI初識(shí)境】給深度學(xué)習(xí)新手開(kāi)始項(xiàng)目時(shí)的10條建議
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內(nèi)容將會(huì)不定期奉上,歡迎大家關(guān)注有三公眾號(hào) 有三AI!
?
?
?
總結(jié)
以上是生活随笔為你收集整理的【AI白身境】Linux干活三板斧,shell、vim和git的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【杂谈】白身,初识,不惑,有识,不可知,
- 下一篇: linux 其他常用命令