Ubuntu命令
Ubuntu命令
Ubuntu是一個自由、開源、基於Debian的Linux發行版。在ubuntu的基礎上,又衍生其它各具特色的Linux發行版。首先是一個操作系統,操作系統用於管理電腦硬件。要發揮出電腦的作用,還得依靠安裝各種應用軟件。
其相關的簡單命令如下:
(1)查看當前文件夾下的目錄
①、ls (list的縮寫)命令用於列出文件和目錄。默認上,他會列出當前目錄的內容。帶上參數後,可以以不同的方式顯示。如圖:
ls命令可以列出當前目錄的內容。dir命令是ls命令的一個別名,也是directory的縮寫。通常列出的文件會以不同的顏色進行顯示,不同的顏色代表不同的文件類型,下表列出了文件類型與顏色的對應關系:
②、ll會列出該文件下的所有文件信息,包括隱藏的文件,而ls -l只列出顯式文件,說明這兩個命令還是不等同的!如圖:
連個這之間的關系如下可以看到(通過別名alias可以看出,兩者可以等同):
(2)、查看當前路徑的命令
(3)、進入文件夾
進入文件夾:cd
cd # 回到主目錄
cd ~ 回到主目錄
cd HOME回到主目錄cd?回到上次所在目錄cd!HOME回到主目錄cd?回到上次所在目錄cd! 把上個命令的參數做為輸入
cd .. 回到上層目錄
(4)、使用Ubuntu自帶的文本的編輯器編寫文件:gedit fileName
(5)、使用vi去編寫文件: vi filename
vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:
① 命令行模式command mode)
控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode。(按鍵esc即退出插入模式,進入命令模式)
② 插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。(按鍵i即退出命令模式,進入插入模式)
③底行模式(last line mode)
將文件保存或退出vi,也可以設置編輯環境,如尋找字符串……等。
在「命令行模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」。其對應的參數如下:
- : w filename (輸入 「w filename」將文章以指定的文件名filename保存)
- : wq (輸入「wq」,存盤並退出vi)
- : q! (輸入q!, 不存盤強制退出vi)
命令行模式(command mode)功能鍵
1)、插入模式
按「i」切換進入插入模式「insert mode」,按“i”進入插入模式後是從光標當前位置開始輸入文件;
按「a」進入插入模式後,是從目前光標所在位置的下一個位置開始輸入文字;
按「o」進入插入模式後,是插入新的一行,從行首開始輸入文字。
2)、移動光標
vi可以直接用鍵盤上的光標來上下左右移動,但正規的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制光標左、下、上、右移一格。
按「ctrl」+「b」:屏幕往“後”移動一頁。
按「ctrl」+「f」:屏幕往“前”移動一頁。
按「ctrl」+「u」:屏幕往“後”移動半頁。
按「ctrl」+「d」:屏幕往“前”移動半頁。
按數字「0」:移到文章的開頭。
按「G」:移動到文章的最後一行。
按「$」:移動到光標所在行的“行尾”。
按「^」:移動到光標所在行的“行首”
按「w」:光標跳到下個字的開頭
按「e」:光標跳到下個字的字尾
按「b」:光標回到上個字的開頭
4). 刪除文字
「x」:每按一次,刪除光標所在位置的“後面”一個字符。
「#x」:例如,「6x」表示刪除光標所在位置的“後面”6個字符。
「X」:大寫的X,每按一次,刪除光標所在位置的“前面”一個字符。
「#X」:例如,「20X」表示刪除光標所在位置的“前面”20個字符。
「dd」:刪除光標所在行。
「#dd」:從光標所在行開始刪除#行
(6)、apt命令
apt是Advanced Packaging Tool的簡稱,是一款安裝包管理工具。
apt-get -f install 修復安裝”-f = –fix-missing”
具體跟詳細的請參見:Ubuntu系統中apt命令的用法匯總
(7)、sudo命令
在ubuntu裏面用戶角色和權限分的很細也很嚴。如果你不是root用戶,那麽,你在執行一些命令做一些操作時是不允許的,可以在命令前面加上sudo,這樣你的權限就會變大。
在ubuntu下編寫一個C程序,其內容為實現文件拷貝的功能
open的說明:
1 |
int open( const char * pathname, int flags);
|
參數pathname 指向欲打開的文件路徑字符串。下列是參數flags 所能使用的旗標:
O_RDONLY 以只讀方式打開文件
O_WRONLY 以只寫方式打開文件
O_RDWR 以可讀寫方式打開文件。上述三種旗標是互斥的,也就是不可同時使用,但可與下列的旗標利用OR(|)運算符組合。
返回值
若所有欲核查的權限都通過了檢查則返回0值,表示成功,只要有一個權限被禁止則返回-1。
read(由已打開的文件讀取數據)
1 |
read( int fd, void * buf , size_t count);
|
read()會把參數fd 所指的文件傳送count個字節到buf指針所指的內存中。若參數count為0,則read()不會有作用並返回0。
返回值
為實際讀取到的字節數,如果返回0,表示已到達文件尾或是無可讀取的數據,此外文件讀寫位置會隨讀取到的字節移動。
write(將數據寫入已打開的文件內)
1 |
write ( int fd, const void * buf, size_t count);
|
write()會把參數buf所指的內存寫入count個字節到參數fd所指的文件內。當然,文件讀寫位置也會隨之移動。
返回值
如果順利write()會返回實際寫入的字節數。當有錯誤發生時則返回-1,錯誤代碼存入errno中
具體詳細說明參見此文
文件拷貝過程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include <iostream>
#include<stdio.h> //——標準輸入輸出頭文件
#include<string.h> //——字符串處理相關頭文件
#include<unistd.h> //——Linux系統調用頭文件,比如read、write
#include<fcntl.h> //——包含open系統調用
#include<errno.h> //——包含一些調試錯誤時用到的變量
using namespace std;
#define BUFFER_SIZE 1024
//read from the original document
int Copy2File( char fileName[], char goalFile[])
{
int read_bytes, write_bytes;
char buffer[BUFFER_SIZE];
char *ptr;
int oFile,gFile;
// open original document
if ((oFile = open(fileName,O_RDONLY)) == -1) {
printf ( "open %s Error!" , fileName);
exit (1);
}
//open destination document
if ((gFile = open(goalFile, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) == -1) {
printf ( "Open %s Error!" , goalFile);
exit (1);
}
//begin to copy fileName to goalFile
//read()會把參數所指的文件oFile傳送BUFFER_SIZE個字節到buffer指針所指的內存中
while (read_bytes = read(oFile, buffer, BUFFER_SIZE))
{
//the produce of reading is error
if (read_bytes==-1)
break ;
//begin to write chars to destination file
else {
ptr = buffer;
/*
write()會把參數buf所指的內存寫入count個字節到參數fd所指的文件內。
當然,文件讀寫位置也會隨之移動。
返回值:如果順利write()會返回實際寫入的字節數。
當有錯誤發生時則返回-1,錯誤代碼存入errno中。
*/
while (write_bytes = write(gFile, ptr, read_bytes)) {
//the produce of writing is error
if ((write_bytes == -1))
break ;
else if (write_bytes > 0)
{
//make the ptr(the index firstly equals the first address)
//move behind
ptr += write_bytes;
//the bytes(index) you need to write continuely is gong to reduce
read_bytes -= write_bytes;
}
}
}
}
close(gFile);
close(oFile);
return 1;
}
int main()
{
char filePath1[]= "/home/gqxing/Desktop/OperatSystem/Textfile/file.txt" ;
char filePath2[]= "/home/gqxing/Desktop/OperatSystem/Textfile/CopyFile.txt" ;
Copy2File(filePath1,filePath2);
return 0;
}
|
Ubuntu命令