day1-Linux操作系統基礎

該專欄所有內容筆記均來自傳智播客培訓班

1.什么是操作系統(operate system OS)

小議:承上啟下作用,向下可以控制硬件,向上能夠支持軟件的運行。一個可以控制硬件的軟件
小明找小紅聊天,小明打開QQ,輸入消息,小明的QQ將信息傳遞---->(小明)操作系統---->網絡設備----->(小紅)操作系統---->小紅的QQ---->小紅收到消息。反之亦然
ps:以前的諾基亞沒有操作系統,想要用QQ必須裝個java虛擬機。缺點:同一時刻不允許運行多個程序。但是,小明想運行A軟件又想運行B軟件還想運行C軟件這時候就需要操作系統。

2.現實生活中的操作系統

Windows、Mac、Android、iOS、Linux…
ps:Android主要運用在移動端、Windows、Mac只要運用在電腦PC上

3.操作系統的發展史

1965年的電腦主要是一臺主機連接多個終端(顯示器、鍵盤、鼠標),但最多能連接30臺左右終端
由于30臺終端太少了,1965年美國一些大牛開始搞Multics項目,想把終端搞成300臺連接,最后失敗了。Ken Thompson為了玩游戲,自己搞了Unix操作系統的原型,當時NCPL語言較為流行,K就以BCPL語言為基礎,獨自開發了很接近硬件的B語言(BCPL首字母),并用B語言寫了第一個Unix操作系統。但是B語言跨平臺性能很差,之后K找他的同伴Dennis Ritchie一塊在B語言的基礎上開發了跨平臺能力很強的C語言(BCPL第二個字母),1972年C語言主體完成,C語言由此誕生。之后K和D使用C語言編寫Unix操作系統,放到其他電腦上運行效果很棒,兼容性很強。
之后Unix操作系統開始不斷的更新迭代(在原來的基礎上升級完善),到Version 7 Unix版本的時候,貝爾實驗室引起了注意,發現了商機,開始對外申請專利閉源。當時一個Andrew S. Tanenbaum教Unix操作系統的教授生氣了,尼瑪,你還收費?然后由于A對Unix特別熟悉吃透了Unix的運行原理,之后自己寫了一個操作系統,A以小型UNIX(mini-UNIX)之意,將其操作系統稱之為MINIX。然后MINIX是完全開源的,A教授當時僅僅為了教學使用,一些其他功能未編寫,并無意去編寫。
之后一個X大牛,得到MINIX的源碼,并對其進行加工,然后他很聰明發布到網上請求各大高手進行共同完善,之后Linux不斷的完善茁壯成長起來了。現在的Android底層代碼也是Linux。
ps:如果當時A教授執意去開發MINIX,說不定今天風靡全球的就是MINIX了。
Unix有好多版本,其中AT&System V演變到Minix,之后演變到Linux
Android實際上就說:Linux內核(kernel)再加上Java里面的一些東西。
目前絕大多數的手機、pc也都是基于Unix操作系統的。且Linux使用C語言編寫的

Linux的不同版本以及其應用領域

Linux內核版

即Linux最核心的代碼,到現在為止已經有成千上百萬行代碼了,研究其已經沒啥意義了,發展的太快了,已經相對很成熟了。

Linux發行版

Android也就是拿到Linux的內核,然后再封裝些java的東西形成一個新的操作系統。Redhat、Ubuntu、centOS…都是拿Linux的內核然后附加些“皮膚”形成新的操作系統而已。

4.Linux常用命令

打開終端 Ctrl+Alt+t
把終端放大 Ctrl+Shift+‘+’
把終端縮小 Ctrl+‘-’
找一些屬性或者縮小放大關閉的時候鼠標指向最上端,所有屬性都在最上端
顯示當前路徑里面的東西 ls
顯示當前文件夾里面內容的詳細屬性 ls -l
在Linux操作系統里面沒有什么盤符這一說,所有的文件都在根目錄 /
在根目錄下有很多文件夾,其中
bin主要放程序
boot跟Ubuntu的啟動相關
cdrom主要跟光盤有關
dev和設備相關
etc所有程序服務器配置的地方(新手機開機需要選擇語言、桌面主題之類的東西)
lib存放庫(我會用鋤頭但不會制作,你可以用別人的鋤頭,此時所用別人的鋤頭就會放在lib里面)
home除了home文件夾其他的不要隨便動
某個文件夾內出現一個房子的圖標就是家目錄,即打開終端的時候默認路徑
顯示當前路徑路徑 pwd(這個比較常用)
創建文件touch 文件名
創建文件名稱為1.txt touch 1.txt,這里的1.txt只是文件名稱罷了
在Linux中沒有txt之類的文件類型之說,創建a,也是文件 touch a
創建文件的時候,文件名稱若以 . 開頭,則默認為隱藏文件。
顯示當前路徑下的所有文件信息ls
例如 touch .yy,若以ls進行顯示文件名稱則顯示不出來,得用ls -a進行顯示
創建文件夾名稱為yy mkdir yy
清除當前所敲的所有命令 clear
cd命令表示切換路徑,切換路徑返回上一級 cd .. 這里的..表示上一級,當然也可以換成其他的具體路徑就切換至具體的路徑中去

1,Linux命令使用方式

Linux命令格式:

命令選型參數
command-optionparameter

ls之后帶-的表示選項,不帶-的表示參數

顯示當前目錄結構 ls
顯示根 / 目錄下的所有內容名稱ls /
顯示根目錄下的dev文件夾里面的所有內容名稱ls /dev

  1. 當然如果文件夾里面的文件特別多也可以使用通配符(*)進行篩選,例如顯示根目錄下的dev文件夾下的所有以y開頭的文件,ls /dev y*,y,yan,yanyu,yu…這些文件名稱會顯示,*可跟零位,一位,多位
  2. 其中?也為通配符,只能負責占一位,例如:ls /dev y?即顯示根目錄下的dev文件夾下的所有以y開頭且第二位不確定的所有文件名稱,yy,yu…這些文件會顯示出來,一個?只能跟一位,當然也可以多個ls y??,顯示yan,yuu…這些第二位第三位未知的文件名稱
  3. 另外[]也可以當成通配符,嚴格算是正則表達式,例如:ls y[abcd]n,此時只能顯示yan,ybn,ycn,ydn這些文件的名稱;也可以is y[a-d]n效果是一樣的。

touch .yy進行創建 .yy文件,以 . 開頭的文件則默認為隱藏文件
此時需要使用ls -a進行顯示,即把隱藏文件名稱顯示出來
顯示文件以列表的形式詳細顯示出來,其中就包括文件大小,默認以bit為單位顯示ls -l
與上一個命令幾乎一樣,區別在與顯示文件大小的時候以合適的單位進行顯示出來ls -l -h
其中選型里面的參數順序無所謂,例如ls -a -l -hls -l -a -h效果是完全一樣的
當然也可以進行簡寫ls -alh或者ls -lah效果也都一樣

將上述的功能也可以進行結合,ls /dev -alh即顯示根目錄下的dev文件夾下的所有文件的名稱的詳細信息進行顯示,當然參數和選型的位置也可以互換效果一樣。

2,參看幫助文檔

當你對某個命令不太了解的時候可以使用命令 --help或者man 命令對命令的詳細效果進行顯示(man—manual手冊)
顯示ls這個命令的所有的功能參數選型ls --help
也可以通過man ls進行查看,支持上下鍵滾動,其中f是下一頁,b是上一頁,q結束幫助文檔

在這里插入圖片描述
查看文件內容cat 文件名稱
顯示歷史敲過的命令history,重新執行對應數的命令! 對應的數,例如! 1999即執行歷史記錄里面第1999個輸入過的命令再重新執行一次,當然也可以通過上下鍵進行翻閱歷史命令。

Linux命令-文件、磁盤管理

1,文件管理

重定向覆蓋 >:把原本顯示在終端的內容存儲到yanyu.txt文件里面,若沒有該文件則會先創建該文件,然后會將原先yanyu.txt里面的內容給覆蓋ls > yanyu.txt
重定向追加**>>** :把原本顯示在終端的內容存儲到yanyu.txt文件里面,若沒有該文件則會先創建該文件,然后會追加到原先yanyu.txt里面的內容里面ls >> yanyu.txt

cat 文件名more 文件名都是查看文件內容
cat yy.txt 查看yy.txt文件里面的內容一次性全部顯示出來
more yy.txt 查看yy.txt文件里面的內容一點一點的按進度進行顯示出來,b上一頁,f下一頁,q退出

若需要查看當根目錄下的dev目錄下內容,且重定向追加到一個固定文件a.txt里面ls -alh /dev >> a.txt,然后查看信息more a.txt,之后再刪除該文件rm a.txt
顯然很麻煩,這時候需要使用管道 | 進行操作,顯示完然后消失即可ls -alh /dev | more

若多個命令一起執行可以用英文分號進行顯示ls -l;ls -alh

當所要查找的文件名特別長的時候需要使用Tab進行補齊,兩次Tab會把需要補齊的信息全部顯示出來。當你想要切換路徑,但是不知道當前文件夾內都有什么的時候,cd /TabTab就可以把根目錄下的所有文件顯示出來供你進行選擇
跳轉到當前文件夾下的yanyu文件夾里面cd ./yanyu
返回當前路徑的上一個路徑里面cd ..

/home/a/b/c
若當前處于c文件夾內,想要跳轉到a文件夾內如何操作?
相對路徑:cd ../..或者cd ../../
絕對路徑:cd /home/a或者cd /home/a/

跳轉到上一次跳轉的路徑中去cd -
切換到家目錄(文件夾圖標會顯示一個房子的樣子)cd ~

創建目錄mkdir

在Linux中只有文件和目錄這兩個說法,文件不分后綴,目錄實則就是文件夾
當你敲完特別多的代碼命令卻發現沒啥用,原則上你得一個一個刪除,這時候Ctrl+C就可以跳過不執行該命令,相當于終止,以后進入某個程序出不來了,直接使用該命令即可
當你想要刪除所有 .txt文件的時候,直接rm *.txt,通配符刪除
以目錄的形式顯示所有文件及文件夾tree
若需要在A文件夾下的B文件夾下的C文件夾下的D文件夾下創建E文件夾mkdir A/B/C/D/E -p

刪除空文件夾rmdir 文件夾名稱
刪除空文件夾或文件rm 文件夾或文件名稱
刪除文件,文件夾,文件夾空不空無所謂rm 文件夾或者文件名稱 -r,其中 -r嚴格來說表示遞歸的去刪除

連接
  • 軟連接

連接實則是Windows里面的創建快捷方式罷了
將原名稱重命名,文件夾,文件都可以重命名mv 原名稱 現名稱
對原文件創建連接(即快捷方式而已)ln -s 原文件名稱 創建快捷方式名稱,(s就是soft的含義)快捷方式一般為藍色;當rm 原文件名稱將原文件刪除之后,快捷方式名稱會失效變成紅色,這里的快捷方式就相當于軟連接

  • 硬連接

有軟連接肯定會有對于的硬連接ln 原文件名稱 創建快捷方式名稱,這里為硬連接。也就是原文件刪除后,創建的快捷方式名稱照樣可以讀取原來的數據。

軟連接—>指向原文件名稱的快捷方式,原文件刪除之后失效
硬連接—>指向原文件內容的快捷方式,原文件刪除之后仍可以讀取文件內容
Linux里面存在一個硬連接數來接收每個指向內容的硬連接個數,Linux中文件的內容和名稱是存放在不同的位置的,軟連接中的快捷鍵是指向原文件名稱的,原文件刪除后當然軟連接失效;而硬連接卻是指向文件內容的,每創建一個硬連接,硬連接數會加一。當然每刪除一個硬連接,硬連接數會相應減一,當硬連接數為零時,系統會將內容給釋放掉。
在這里插入圖片描述
查看多個文件內容,只能查看不能編輯cat 文件名稱1 文件名稱2 文件名稱3
將多個文件內容進行合并輸入到yy.txtcat 1.txt 2.txt 3.txt > yy.txt,這里的yy.txt若不存在則會自動創建

文本搜索命令grep

從指定的文件里面搜索指定的內容
搜索a.txt文件里面包含yanyu的內容grep “yanyu” a.txt
同時將搜索的內容所在的行數顯示到前面grep -n “yanyu” a.txt
顯示文件里面不包含yanyu的所有內容grep -v “yanyu” a.txt
顯示文件里面以yanyu開頭的所有內容grep “^yanyu” a.txt
顯示文件里面以yanyu結尾的所有內容grep “yanyu$” a.txt

拷貝文件cp(copy)

將a.txt文件復制粘貼到A文件夾下cp a.txt A
若A為空文件夾或者里面有內容,且要復制到B文件夾下cp -r A B

移動文件、對文件或者文件夾重命名mv

將a.txt文件命重命名為b.txtmv a.txt b.txt
將a.txt文件移動(剪切粘貼)到B文件夾下mv a.txt B

查找文件find

find可以從指定目錄中搜索文件名,而grop則是從指定文件里面搜內容
sudo表示最高權限去搜索)通配符要學會靈活使用
從根目錄下搜索文件名包含name的所有文件sudo find / -name "*name*"
從根目錄下搜索文件名name的所有文件sudo find / -name "name"
在這里插入圖片描述
當然不需要全部都牢記,知道如何去查命令即可find --help

歸檔管理(打包、解壓)tar
  1. 打包cvf,tar

tar -cvf 打成包的名稱.tar 需要打包的文件名稱運行完成后會顯示所打包的所有文件名稱
將當前路徑下的所有 .java為后綴的文件打包且包名為yanyu.tar
tar -cvf yanyu.tar *.java
打包之后大小不變

  1. 解包xvf

tar -xvf 壓縮包的名稱.tar
將打包后的文件解包到當前路徑且打包的文件不刪除
tar -xvf yanyu.tar

  1. 壓縮zcvf,tar.gz、tar.bz2

壓縮之后文件大小才會變小
tar -zcvf 壓縮之后的壓縮包名稱.tar.gz 所要壓縮的文件名稱
tar -jcvf 壓縮之后的壓縮包名稱.tar.bz2 所要壓縮的文件名稱
zip 壓縮之后的壓縮包名稱.zip 所要壓縮的文件名稱
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.tar.gz
tar -zcvf yanyu.tar.gz *.py

另一種壓縮格式
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.tar.bz2
tar -jcvf yanyu.tar.bz2 *py

其他壓縮格式
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.zip
zip yanyu.zip *py

tar.gz壓縮包大小要比tar.bz2壓縮包小,zip壓縮包最大

顯示當前路徑下所有文件信息ll其與ls -ls等價

  1. 解壓zxvf

tar -zxvf 壓縮包的名稱.tar.gz
tar -zxvf 壓縮包的名稱.tar.gz -C 指定解壓到的路徑
tar -jxvf 壓縮包的名稱.tar.bz2
tar -jxvf 壓縮包的名稱.tar.bz2 -C 指定解壓到的路徑
unzip 壓縮包的名稱.zip
unzip -d 指定解壓到的路徑 壓縮包的名稱.zip

將壓縮包解壓到當前路徑且壓縮包不刪除
tar -zxvf yanyu.tar.gz
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
tar -zxvf yanyu.tar.gz -C ./B
當然若B文件夾就在當前目錄下這樣也可以tar -zxvf yanyu.tar.gz -C B

另一種解壓格式
tar -jxvf yanyu.tar.bz2
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
tar -jxvf yanyu.tar.bz2 -C ./B
當然若B文件夾就在當前目錄下這樣也可以tar -jxvf yanyu.tar.bz2 -C B

其他解壓格式
unzip yanyu.zip
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
unzip -d yanyu.zip ./B
當然若B文件夾就在當前目錄下這樣也可以unzip -d yanyu.zip B

上述的所有命令其實都在根目錄下的bin文件夾里面cd /bin
若要查看命令所在路徑只需要which 命令即可
查看ls這個命令在哪which ls

Linux命令-系統管理

查看當前月份的日歷具體到當前月cal,沒有農歷只有陽歷
將指定年份所有的日歷都顯示出來cal -y 指定年份
將1999年的所有月份日歷顯示出來cal -y 1999
查看當前時間date
結合起來,可以將當前日歷打印到指定文件a.txt里面cal -y 1999 > a.txt
或者打印當前時間date > a.txt
也可以按自己規定的樣式輸出時間date "+%Y其間可以隨便添格式%m其間可以隨便添格式%d"其中%Y為年(2017),%y也為年(17),%m為月,%d為天,大小寫的區別自己去試吧,我就沒那么閑著沒啥去試了哈
在這里插入圖片描述

查看進程信息ps

顯示當前這一時刻正在運行的進程ps
顯示Linux所有的進程一顯示一輸出就完了ps -aux
顯示linux所有的進程會不斷的動態顯示只有按下q退出之后才停止top;更詳細的動態顯示htop
若某個程序占用cup過大則可以通過kill 對應PID將其sha掉,這里的PID通過ps -aux可查看
若某個進程特別死皮不要了,則可以通過kill -9 對應PID將其sha掉

關機重啟

重啟reboot
立刻關機shutdown -h now
20分鐘之后關機shutdown -h +20
晚上10點14分關機shutdown -h 22:14
在這里插入圖片描述
顯示硬盤的使用情況dfdf -h
顯示當前路徑中文件或文件夾使用情況dudu -h
查看當前電腦的網絡信息ifconfig,其中io稱之為本地環回其是虛擬出來的,用于測試電腦的網絡功能是否好使,一般其IP為127.0.0.1
將指定的網卡更改指定的IPifconfig 對應網卡 指定IP
指定與固定的電腦IP測試是否可以網絡互通ping 其他電腦的ip

用戶權限管理

Linux是個多用戶多任務的操作系統
多任務即當前操作系統可以同時運行多個程序
多用戶指的是可以在不用退出當前賬戶的前提下可以使用其他的賬戶來執行操作些事情

添加一個新的用戶sudo useradd 用戶名稱 -m,執行過程:創建了‘用戶名稱’這個賬戶順便在home文件夾里面創建了個文件夾,這個文件夾當成這個賬戶的家目錄,并且這個家目錄的名稱和這個’用戶名稱‘一模一樣。其中 -m表示創建完賬戶之后順便會在home下面創建一個這個賬戶的家目錄(也就是文件夾),家目錄名稱與賬戶名稱一致
sudo useradd python -m之后會在home文件夾下出現一個python文件夾

如何確定其是個文件夾還是個用戶呢?cat /etc/passwd之里面保存的信息都是賬戶的信息

在Windows中可以通過注銷來選擇其他用戶進行登錄
Linux則通過sudo su 用戶名稱來切換用戶,之后路徑與原先的路徑不變
Linux則通過sudo su -r 用戶名稱來切換用戶,之后會跳轉到用戶名稱的家目錄下
切換到python用戶sudo su python,此時會提示,需要輸入密碼,傻臉了~;執行該命令之后所在路徑不會變,還是原來的路徑pwd可以查看觀察一下;
此時若sudo su - python就會切換用戶的時候直接跳轉到該用戶的家目錄中去

新創建的用戶是沒有密碼的,需要對用戶進創建密碼sudo passwd 用戶名稱
對python該用戶設置密碼sudo passwd python,之后輸入兩次密碼即可;當然,當你忘記密碼的時候也可以通過該命令對密碼進行重置操作

查看當前的賬戶名稱whoami
退出賬戶exit退出到之前的原先賬戶
在Linux里面可以打開多個終端切換到不同的賬戶中去,倆終端對應倆不同的賬戶
Windows是假的多用戶,你得注銷之后才能選用其他的用戶進行登錄,Linux則不會。

遠程登錄ssh 用戶名@其對應IP
在終端輸入Ctrl+Shift+G,會將兩個終端進行排列顯示,其中Alt快速切換

查看當前有多少人登錄自己的賬戶who,有IP顯示的表示遠程連接

從根目錄開始給勞資刪rm / -rf,對大型的互聯網公司這樣干犯法的哈

刪除用戶sudo userdel 用戶名稱,此時用戶的家目錄并不會刪除,當你離職的時候只需要把你的賬號給刪除即可,家目錄里面的編寫的代碼不會刪除的
將用戶和用戶的所有代碼信息全部刪除sudo uerdel -r 用戶名稱
區別在于 -r表示刪不刪該用戶的家目錄,一般不刪

在Linux中root就相當于Windows里面的administer最高管理員
若要切換到root,sudo -s即可,身份直接變成管理員(較常用)
sudo su root是原先非的管理員獲得了管理員的所有權限了

當你已經成為root的身份的時候,sudo操作就沒啥作用了;命令里面帶有sudo只是root對該命令賦予一次最高權限罷了
$ 賬戶為普通用戶,而 # 為root賬戶

用戶、用戶組

用戶很好理解就是Windows下的不同的用戶,注銷就可以切換那種
用戶組就等價于QQ空間里面的分組,發個說說不讓誰看啥的
查看用戶組組名cat /etc/group也可以groupmod然后多按幾次Tab鍵,便可以進行查看所有的用戶組組名
創建用戶組sudo groupadd 用戶組名稱
刪除用戶組sudo groupdel 用戶組名稱

當創建一個新用戶的時候默認就會創建一個組,其組名為該用戶的名稱sudo useradd 用戶名稱
ls一下之后,第一個表示文件的擁有者;第二個表示用戶組
舉個例子:a在B組里面,且a創建了一個文件,此時,若b也在B組里面,就可以擁有B組對a文件的所有操作權限
在這里插入圖片描述

當你安裝Linux操作系統的時候,系統會自動給你創建一個sudo用戶組;當你的用戶在其他用戶組的時候,輸入命令sudo -s切換管理員的時候,若其用戶不再sudo組是不允許切換管理員的

為創建普通的用戶添加sudo權限,新創建的用戶默認是不在sudo組里面
為普通用戶創建sudoadm權限sudo usermod -a -G adm 用戶名sudo usermod -a -G sudo 用戶名,之后便將當前用戶添加到sudo組里面去了,即可執行sudo -s直接切換root用戶了

修改文件的所有者chown

將一個文件的所屬者更換chown 用戶 文件
1.py這個文件的所屬者更改為yanyuchown yanyu 1.py

修改文件所屬組chgrp

將文件的所屬組更改chgrp 所屬組 文件名
q.txt這個文件的所屬組改成YanYuchgrp YanYu q.txt,即哪個用戶在YanYu這個組里面,哪個用戶就對q.txt文件具有最高權限

文件的權限

顯示當前所有文件信息ll等價于ls -la,會發現有10個字母,分為四組,1、3、3、3這四組

1333
- 普通文件文件擁有者的權限同組者的權限其他人的權限
d 文件夾rread可讀 wwrite可寫 xexe可執行 -沒權限同理同理

之后緊挨著的一位數字表示其文件或文件夾的硬連接數,后跟文件所屬者、文件所屬組、文件大小、修改日期

為文件進行賦權限:主要有三個類別身份u文件擁有者,g同組,o其他人
修改文件的權限chmod 類別身份=rwx隨便選 要修改權限的文件名稱
y.java文件的擁有者權限設置為可讀chmod u=r y.java
y.java文件的其他人權限什么也不許chmod o=
同理也可以一次性全部賦權限chmod u=rwx,g=,o=r擁有者可讀可寫可執行,同組用戶什么權限都沒有,其他用戶至可讀

很顯然很麻煩這樣搞權限賦值的話,這時候可以使用數字法對權限賦值,r-4,w-2,x-1
chmod u=x,g=wx,o=rwx y.py等價于chmod 137 y.py顯然數字法比字母法簡單的一批

編輯器

  1. gedit

gedit 文件名稱
對a.txt文件進行編輯gedit a.txt
這個還是別用了,容易顯得自己很low

  1. sublime

一個真正的跨平臺編輯器,windows、Mac、Linux都有相應軟件

  • vi、vim
    vi先有的,然后vim只不過是在vi的基礎上新加了些額外的功能
    編輯a.txt文件vim a.txt
    當你對該文件不正常關閉的時候,比如kill掉,ls-a便會出現 .a.txt.swp這個隱藏文件,這是由于a.txt因為不正常關閉導致的將里面的內容緩存的一個緩存文件,當你再次vi a.txt編譯的時候便會出現一個彈窗然后讓你選擇是否恢復或者刪除之類的提示
    在這里插入圖片描述
  • 在命令模式下(Esc)

yy表示復制光標所在的這一行
4yy表示復制光標所在的這一行向下的4行
p表示粘貼
dd表示剪切(刪除)光標所在的行
2dd表示剪切(刪除)光標所在的這一行向下的2行

光標移動
h向左移動一個字符位置 jkl
H光標移動到當前屏幕的上方 M當前屏幕的之間 L當前屏幕的下方

Ctrl+F翻下一屏
Ctrl+B翻上一屏
Ctrl+U翻上半屏
Ctrl+D翻下半屏

20G表示快速定位到第20行代碼
G表示快速回到整個代碼的最后一行
gg表示快速回到整個代碼的第一行

w表示向后跳一個單詞的長度,即跳到下一個單詞的開始處
dw表示刪除刪除光標所在的整個單詞
b表示向前跳一個單詞的長度,即跳到上一個單詞的開始處

D表示從當前的光標開始剪切直到行末
d0表示從當前光標開始剪切直到行首
x表示刪除光標所在位置的內容,往后刪,每次只能刪除一個
X表示刪除光標前一個位置的內容,往前刪,每次只能刪除一個

u表示撤銷
Ctrl+R表示反撤銷

按下V或v開始選中代碼片
V表示光標所在的整個行
v表示光標所在之前
>> 表示右移代碼
<< 表示左移代碼
.表示重復執行上一次命令操作

{表示移動到上一個代碼段處
}表示移動到下一個代碼段處

r表示替換光標所在位置一個字符,按下r之后再按需要替換的字符即可
R替換光標以及后面的字符,按下R之后再按需要替換的字符即可,會將光標及其后面的字符挨個替換

/后接所需要搜索的內容,搜索成功之后會顯示黃色,當然要想消去黃色提醒,搜索個不存在的即可
n表示顯示下一個搜索的內容
N表示顯示上一個搜索的內容

Shift+zz表示保存并退出,相當于末行模式下(:)的wq

  • 在末行模式下(:)

%s/A/B/g,將整個文件里面的所有B代替A,A不存在了
%1,20/A/B/g將文件中1-20行之內的B代替A,A不存在了
q表示退出
w表示保存
wq表示保存并退出
q!表示強制退出

vi中顯示文件行數,在命令模式下輸入
顯示全部行數set nu
顯示光標所在行的行數nu

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378917.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378917.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378917.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關閉瀏覽器 清空session_跨境網絡小知識之Session

跨境小伙伴們大家好&#xff0c;上一篇為大家介紹了Cookie&#xff0c;今天就為大家介紹下連接cookie的另一端Session&#xff0c;交互過程中&#xff0c;二者缺一不可。與Cookie相對&#xff0c;Session是存儲在服務端的&#xff0c;他們之間是通過一個叫做sessionID的東東建立…

我和乘子交替方向法admm_找到最大和交替子序列

我和乘子交替方向法admmProblem statement: 問題陳述&#xff1a; Given a sequence of numbers, you have to find the maximum sum alternating subsequence and print the value. A sequence is an alternating sequence when it will be maintain like (increasing) ->…

Dojo學習筆記(一):Hello Dojo!

歡迎來到Dojo世界&#xff01;在這篇文章中你將會學習到如何加載Dojo以及探索Dojo的一些核心功能。你還會了解Dojo的基于AMD的模塊架構&#xff0c;探索如何加載額外的模塊來增加功能到您的Web站點或應用程序&#xff0c;并找出在出錯的時如何得到幫助。讓我們開始吧 開始學習D…

轉:我眼中的Visual Studio 2010架構工具

來自&#xff1a;http://www.cnblogs.com/wayfarer/archive/2010/07/30/1788398.html我眼中的Visual Studio 2010架構工具影響架構質量的是構建體系架構的思想、原則、實踐與架構師的經驗&#xff0c;絕不是工具。即使是最優秀的架構工具&#xff0c;也不可能像倚天寶劍一般——…

VMware創建Ubuntu操作系統到網絡配置詳細流程

一、創建虛擬機 Ubuntu下載鏈接 1&#xff0c;看個人需求了&#xff0c;有更高的版本&#xff0c;下載Ubuntu鏡像 2&#xff0c;VMware官網隨便下載即可 3&#xff0c;創建新的虛擬機 4&#xff0c;自定義 5&#xff0c;默認即可 6&#xff0c;稍后安裝操作系統 7&#xf…

djiango配置mysql_數據庫MySQL相關環境配置以及數據庫與Go的連接

Linux下安裝好MySQL后&#xff0c;Windows安裝可視化工具navicatLinux下MySQL與Windows下navicat進行連接:安裝的過程很是揪心&#xff0c;各種查網站、大致把坑都寫了出來&#xff1a;1、在Linux下的mysql語句中&#xff0c;mysql> select host,user,authentication_string…

緩沖文件系統(fopen/fread/fwrite)和非緩沖文件系統(open/read/write)

open&#xff1a;系統調用&#xff0c;返回的是文件描述符&#xff0c;即文件句柄&#xff0c;是文件在文件描述副表里的索引。 fopen&#xff1a;C語言庫函數&#xff0c;返回的是一個指向文件結構的指針。fopen是ANSI C標準中的C語言庫函數&#xff0c;在不同的操作系統中應…

java 繼承示例_Java中的繼承類型以及示例

java 繼承示例Prerequisite: Inheritance and its implementation in Java 先決條件&#xff1a; 繼承及其在Java中的實現 Java中的繼承類型 (Type of inheritance in Java) In Java programming, there are following types of the inheritances, 在Java編程中&#xff0c;有…

基于HtmlParser的網絡爬蟲

一、 目標 獲取網頁中的超鏈接及鏈接名&#xff0c;如從http://www.hao123.com/開始&#xff0c;抓取所有hao123鏈接到的超鏈接&#xff0c;再以獲取到的鏈接網頁為目標&#xff0c;獲取它所鏈接到的網頁。 二、環境及開發工具 環境&#xff1a;Java 工具&#xff1a;MyEclip…

VMware下Ubuntu無法全屏顯示問題

一、運行Ubuntu的時候無法全屏顯示&#xff0c;如圖所示下載VMware Tools 二、之后將下載的文件拷貝到home文件夾下 三、解壓該壓縮包 由于該壓縮包是.tar.gz結尾的故壓縮命令&#xff1a;tar -zxvf VMwareTools-10.2.5-8068393.tar.gz&#xff0c;當然各版本有可能不一樣&am…

AMQP RabbitMQ

轉載&#xff1a;http://blog.ftofficer.com/2010/03/translation-rabbitmq-python-rabbits-and-warrens/官方介紹&#xff1a;http://www.rabbitmq.com/erlang-client-user-guide.html開始吧AMQP當中有四個概念非常重要&#xff1a;虛擬主機&#xff08;virtual host&#xff…

fsync與fflush的關系和區別

read/write/fsync與fread/fwrite/fflush的關系和區別 read/write/fsync&#xff1a; linux底層操作&#xff1b; 內核調用&#xff0c; 涉及到進程上下文的切換&#xff0c;即用戶態到核心態的轉換&#xff0c;這是個比較消耗性能的操作。 fread/fwrite/fflush&#xff1a;…

lumanager mysql密碼_LuManager單獨安裝mysqli

首先確定你正在使用的php版本以及php.ini的位置&#xff0c;LuManager自帶了幾個版本。如果是默認安裝&#xff0c;應該是5.2.17。php.ini的位置應該是在/usr/local/php_fcgi/lib/php.ini要確定這些信息&#xff0c;可以自己編寫一個 info.phpphpinfo();?>把文件存放到網站…

數據庫系統數據庫管理系統_數據庫管理系統介紹

數據庫系統數據庫管理系統數據庫 (Database) A database is a collection of related data. In database any user can efficiently access the data which users want to retrieve. It can be anything from a simple collection of roll numbers, names, addresses and phone…

vba將select的值直接賦給變量

strSql ""strSql strSql & " select max(number) from dbo.#DATA" & vbCrLfrss.Open strSql, cnn numb rss.Fields(0)rss.Close轉載于:https://www.cnblogs.com/zigewb/archive/2013/02/06/2900645.html

set_exception_handler 自定義異常處理

剛才已經說過了set_error_handler這個函數&#xff0c;作用就是自定義錯誤處理&#xff0c; 那么現在就來簡單的說一下set_exception_handler&#xff0c;看名字我們就能發現&#xff0c;這說的是自定義異常處理。 呵呵&#xff0c;我聰明吧&#xff1f;來&#xff0c;先看一下…

如何獲取ubuntu源碼包里面的源碼進行編譯

如何獲取ubuntu源碼包里面的源碼進行編譯 1、在獲取源碼包之前&#xff0c;確保在軟件源配置文件 /etc/apt/sources.list中添加了deb-src項 2、使用如下命令獲取xxx源碼包的詳細信息: sudo apt-cache showsrc xxx 這用來查詢當前鏡像站點中是否有該源碼包。 3、源碼包中通常…

python 示例_帶有示例的Python字典popitem()方法

python 示例字典popitem()方法 (Dictionary popitem() Method) popitem() method is used to remove random/last inserted item from the dictionary. popitem()方法用于從字典中刪除隨機/最后插入的項目。 Before the Python version 3.7, it removes random item and from …

優化算法的意義,之二。

前一篇分析了求質數的兩個算法&#xff0c;在代碼執行效率和系統開銷兩方面進行了比較。 這在通信系統的設計和實現中&#xff0c;是非常重要的兩點。因為需要同時面對的是巨大的用戶群&#xff0c;和復雜的業務應用&#xff0c;通信系統的設計經常要面臨魚與熊掌間的選擇。 用…