linux命令實現的
『壹』 linux命令形式實現下面功能
root許可權下:
dd if=/dev/zero of=/var/swap bs=1024 count=2048000
;of後的路徑自定,過一段時間會在/var下建一個文件swap
mkswap /var/swap ;格式化這個文件
swapon /home/swap ;啟用這個swap文件
再用
free看一下你的swap是不是漲了.
如果要啟動後還有的話,得改文件
vi /etc/fstab
加一行
/var/swap swap swap defaults 0 0
最好在根目錄分區,在別的分區好像會自動掛載不上,有可能是根目錄的分肯定先掛載,其它的就不一定比這個swap分區先掛載了,如果要是先掛載這個分區,就掛不上的,所以最好把這個文件放在根目錄所在的分區.
『貳』 Linux 如圖的命令如何實現的
這個就是補全鍵(Tab)的作用,比如/testdir下有兩個文件分別是123456和1234567如果你輸個cat /testdir/123多按幾次Tab鍵那麼下面就會顯示123456和1234567
『叄』 linux裡面命令都是干什麼用的
linux命令有內部命令和外部命令之分。內部命令實際上是shell程序的一部分,其中包含的是一些比較簡練的linux系統命令,這些命令由shell程序識別並在shell程序內部完成運行,通常在linux系統載入運行時shell就被載入並駐留在系統內存中。外部命令是linux系統中的實用程序部分,因為實用程序的功能通常都比較強大,所以它們包含的程序量也會很大,在系統載入時並不隨系統一起被載入到內存中,而是在需要時才將其調進內存。通常外部命令的實體並不包含在shell中,但是其命令執行過程是由shell 程序控制的。shell程序管理外部命令執行的路徑查找、載入存放,並控制命令的執行。
『肆』 linux基本命令
Linux 對我們的生活產生了巨大的沖擊。至少你的安卓手機使用的就是 Linux 核心。盡管如此,在第一次開始使用 Linux 時你還是會感到難以下手。因為在 Linux 中,通常需要使用終端命令來取代 Windows 系統中的點擊啟動圖標操作。但是不必擔心,這里我們會介紹 10 個 Linux 基本命令來幫助你開啟 Linux 神秘之旅。
幫助新手走出第一步的 10 個 Linux 基本命令
當我們談論 Linux 命令時,實質上是在談論 Linux 系統本身。這短短的 10 個 Linux 基本命令不會讓你變成天才或者 Linux 專家,但是能幫助你輕松開始 Linux 之旅。使用這些基本命令會幫助新手們完成 Linux 的日常任務,由於它們的使用頻率如此至高,所以我更樂意稱他們為 Linux 命令之王!
讓我們開始學習這 10 條 Linux 基本命令吧。
1. sudo
這條命令的意思是「以超級用戶的身份執行」,是 SuperUserDo 的簡寫,它是新手將要用到的最重要的一條 Linux 命令。當一條單行命令需要 root 許可權的時候,sudo命令就派上用場了。你可以在每一條需要 root 許可權的命令前都加上sudo。
$ sudo su
2. ls
跟其他人一樣,你肯定也經常想看看目錄下都有些什麼東西。使用列表命令,終端會把當前工作目錄下所有的文件以及文件夾展示給你。比如說,我當前處在 /home 文件夾中,我想看看 /home 文件夾中都有哪些文件和目錄。
/home$ ls
在 /home 中執行ls命令將會返回類似下面的內容:
imad lost+found
3. cd
變更目錄命令(cd)是終端中總會被用到的主要命令。它是最常用到的 Linux 基本命令之一。此命令使用非常簡單,當你打算從當前目錄跳轉至某個文件夾時,只需要將文件夾鍵入此命令之後即可。如果你想跳轉至上層目錄,只需要在此命令之後鍵入兩個點 (..) 就可以了。 舉個例子,我現在處在 /home 目錄中,我想移動到 /home 目錄中的 usr 文件夾下,可以通過以下命令來完成操作。
/home $ cd usr
/home/usr $
4. mkdir
只是可以切換目錄還是不夠完美。有時候你會想要新建一個文件夾或子文件夾。此時可以使用 mkdir 命令來完成操作。使用方法很簡單,只需要把新的文件夾名跟在 mkdir 命令之後就好了。
~$ mkdir folderName
5. cp
拷貝-粘貼-and-paste是我們組織文件需要用到的重要命令。使用 cp命令可以幫助你在終端當中完成拷貝-粘貼操作。首先確定你想要拷貝的文件,然後鍵入打算粘貼此文件的目標位置。
$ cp src des
注意:如果目標目錄對新建文件需要 root 許可權時,你可以使用 sudo命令來完成文件拷貝操作。
6. rm
rm 命令可以幫助你移除文件甚至目錄。如果不希望每刪除一個文件都提示確認一次,可以用-f參數來強制執行。也可以使用-r參數來遞歸的移除文件夾。
$ rm myfile.txt
7. apt-get
這個命令會依據發行版的不同而有所區別。在基於 Debian 的發行版中,我們擁有 Advanced Packaging Tool(APT)包管理工具來安裝、移除和升級包。apt-get 命令會幫助你安裝需要在 Linux 系統中運行的軟體。它是一個功能強大的命令行,可以用來幫助你對軟體執行安裝、升級和移除操作。
在其他發行版中,例如 Fedora、Centos,都各自不同的包管理工具。Fedora 之前使用的是 yum,不過現在 dnf 成了它默認的包管理工具。
$ sudo apt-get update
$ sudo dnf update
8. grep
當你需要查找一個文件,但是又忘記了它具體的位置和路徑時,grep命令會幫助你解決這個難題。你可以提供文件的關鍵字,使用grep命令來查找到它。
$ grep user /etc/passwd
9. cat
作為一個用戶,你應該會經常需要瀏覽腳本內的文本或者代碼。cat命令是 Linux 系統的基本命令之一,它的用途就是將文件的內容展示給你。
$ cat CMakeLists.txt
10. poweroff
最後一個命令是 poweroff。有時你需要直接在終端中執行關機操作。此命令可以完成這個任務。由於關機操作需要 root 許可權,所以別忘了在此命令之前添加sudo。
$ sudo poweroff
總結
如我在文章開始所言,這 10 條命令並不會讓你立即成為一個 Linux 大拿,但它們會讓你在初期快速上手 Linux。以這些命令為基礎,給自己設置一個目標,每天學習一到三條命令,這就是此文的目的所在。
『伍』 linux wc命令如何實現
wc命令主要是統計行數,使用比較簡單
如 wc -l abc則返回abc文件的行數
也可以通過管道來使用wc
如 ls / | wc -l
則返回list跟下目錄和文件的個數
『陸』 怎麼用C語言實現linux的命令
命令是查詢當前登錄的每個用戶,它的輸出包括用戶名、終端類型、登錄日期及遠程主機,在Linux系統中輸入who命令輸出如下:
我們先man一下who,在幫助文檔里可以看到,who命令是讀取/var/run/utmp文件來得到以上信息的。
我們再man一下utmp,知道utmp這個文件,是二進制文件,裡面保存的是結構體數組,這些數組是struct utmp結構體的。
struct utmp {
short ut_type;
pid_t ut_pid;
char ut_line[UT_LINESIZE];
char ut_id[4];
char ut_user[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
struct {
int32_t tv_sec;
int32_t tv_usec;
} ut_tv;
/***等等***/
};
要實現who只需要把utmp文件的所有結構體掃描過一遍,把需要的信息顯示出來就可以了,我們需要的信息有ut_user、ut_line、ut_tv、ut_host。
老師給的初始代碼:who1.c運行結果如下:
需要注意的是utmp中所保存的時間是以秒和微妙來計算的,所以我們需要把這個時間轉換為我們能看懂的時間,利用命令man -k time | grep 3搜索C語言中和時間相關的函數:
經過搜索發現了一個ctime()函數,似乎可以滿足我們的需求,於是對代碼中關於時間的printf進行修改:
printf("%s",ctime(&utbufp->ut_time));
編譯運行發現出來的結果雖然已經轉換成了我們能看懂的時間格式,但是很明顯這個時間是錯的:
搜索一下ut_time這個宏,發現它被定義為int32_t類型:
但是ctime()函數中要求參數的類型是time_t類型,所以重新定義一下類型,編譯運行之後,發現時間已經改成了正確的,但是發現()中的內容被換行了,猜想ctime()函數的返回值可能自動在最後補了一個字元\n:
一開始想通過\r\b來實現「退行」,但實踐後發現並不可取,最後考慮到直接修改字元串中最後一個字元為\0,讓其字元串結束,使輸出達到與系統who命令一樣的效果,即在輸出語句前添加如下代碼:
cp[strlen(cp)-1] = '\0'
最後編譯執行效果,發現解決了該問題:
雖然能看出基本上和who指令的執行結果一致,但是並非完全一樣,主要在兩點,第一是時間格式不一樣,第二個是比who執行的結果多了幾條,需要注意的是utmp中保存的用戶,不僅僅是已經登陸的用戶,還有系統的其他服務所需要的「用戶」,所以在顯出所有登陸用戶的時候,應該過濾掉其他用戶,只保留登陸用戶。我們可以通過ut_type來區別,登陸用戶的ut_type是USER_PROCESS。
先用if語句對執行結果進行過濾,效果如下:
接著解決時間格式問題,利用man命令收到了兩個非常有用的函數:localtime()和strftime(),localtime()是把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間,strftime()則是用來定義時間格式的,如:年-月-日,利用這兩個函數對時間進行修改後,結果顯示終於和系統中who命令一模一樣:
最終完整的代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#define SHOWHOST
void show_time(long timeval){
char format_time[40];
struct tm *cp;
cp = localtime(&timeval);
strftime(format_time,40,"%F %R",cp);
printf("%s",format_time);
}
int show_info( struct utmp *utbufp )
{
if(utbufp->ut_type == USER_PROCESS){
printf("%-8.8s", utbufp->ut_name);
printf(" ");
printf("%-8.8s", utbufp->ut_line);
printf(" ");
show_time(utbufp->ut_time);
printf(" ");
#ifdef SHOWHOST
printf("(%s)", utbufp->ut_host);
#endif
printf("\n");
}
return 0;
}
int main()
{
struct utmp current_record;
int utmpfd;
int reclen = sizeof(current_record);
if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){
perror( UTMP_FILE );
exit(1);
}
while ( read(utmpfd, ¤t_record, reclen) == reclen )
show_info(¤t_record);
close(utmpfd);
return 0;
}
『柒』 linux常用的命令有哪些
Linux所能提供的功能通常是通過繁多的各類命令來實現的,每個命令又會有很多細分功能的選項,而每個命令後接的作用對象參數也有所不同,因此有必要詳細闡述一下Linux命令的常見分類方式。
常見的命令分類方式包括:1、按照命令所在系統中的位置,2、按照命令所能提供的功能。
按照命令所在系統中的位置,Linux命令可以分為內部命令和外部命令。內部命令是在磁碟目錄中找不到的命令是shell解釋器的一部分,當用戶連接登錄系統時就會運行系統與用戶的交互程序shell,我們常用的命令如:cd、pwd、jobs、kill等幾十個內部命令就會調入到內存中供登錄用戶使用;而外部命令是放置於磁碟中的命令,如果一個命令能在磁碟中找到其存放路徑,該命令就是外部命令。
按照命令所能提供的功能,Linux常用命令可以分為目錄操作命令、文件操作命令、文件內容查看命令、登錄用戶查看命令、歸檔壓縮命令、系統管理命令等等。例如常見的目錄操作命令有cd、pwd、ls、mkdir、rmdir等;常見的文件操作命令有touch、cp、mv、rm等;文件內容查看命令有cat、tac、more、less、head、tail等,也包括查看文件屬性信息的file和stat等命令;常見的登錄用戶查看命令有w和who;常見的歸檔壓縮命令有zip、unzip、tar、gzip、gunzip、bzip2、bunzip2等;系統管理命令常見有關機命令shutdown、系統重啟命令reboot等。
『捌』 linux下的命令都是干什麼用的
前三個和最後一個是兩個類型。前三個主要是Linux用來創建新的進程(線程)而設計的,exec()系列函數則是用來用指定的程序替換當前進程的所有內容。所以exec()系列函數經常在前三個函數使用之後調用,來創建一個全新的程序運行環境。Linux用init進程啟動其他進程的過程一般都是這樣的。
下面說fork、vfork和clone三個函數。這三個函數分別調用了sys_fork、sys_vfork、sys_clone,最終都調用了do_fork函數,差別在於參數的傳遞和一些基本的准備工作不同。可見這三者最終達到的最本質的目的都是創建一個新的進程。在這里需要明確一下,Linux內核中沒有獨立的「線程」結構,Linux的線程就是輕量級進程,換言之基本控制結構和Linux的進程是一樣的(都是通過struct task_struct管理)。
fork是最簡單的調用,不需要任何參數,僅僅是在創建一個子進程並為其創建一個獨立於父進程的空間。fork使用COW(寫時拷貝)機制,並且COW了父進程的棧空間。
vfork是一個過時的應用,vfork也是創建一個子進程,但是子進程共享父進程的空間。在vfork創建子進程之後,父進程阻塞,直到子進程執行了exec()或者exit()。vfork最初是因為fork沒有實現COW機制,而很多情況下fork之後會緊接著exec,而exec的執行相當於之前fork復制的空間全部變成了無用功,所以設計了vfork。而現在fork使用了COW機制,唯一的代價僅僅是復制父進程頁表的代價,所以vfork不應該出現在新的代碼之中。在Linux的manpage中隊vfork有這樣一段話:It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics of vfork() as it will, in that case, be made synonymous to fork(2)."
clone是Linux為創建線程設計的(雖然也可以用clone創建進程)。所以可以說clone是fork的升級版本,不僅可以創建進程或者線程,還可以指定創建新的命名空間(namespace)、有選擇的繼承父進程的內存、甚至可以將創建出來的進程變成父進程的兄弟進程等等。clone和fork的調用方式也很不相同,clone調用需要傳入一個函數,該函數在子進程中執行。此外,clone和fork最大不同在於clone不再復制父進程的棧空間,而是自己創建一個新的。
關於Linux命令的介紹,看看《linux就該這么學》,具體關於這一章地址3w(dot)linuxprobe/chapter-02(dot)html
『玖』 Linux中的命令是什麼
linux本身就是擁有強大的shell的一個系統,命令自然是最核心的部分,比如說關機開啟或者關閉服務,讀寫文件,更換文件許可權,增加刪除用戶,用戶組管理等等等都可以在純命令行下進行。
就像Windows用滑鼠在圖形化界面操作,Windows也有命令行叫cmd你可以在開始中運行他,但是它並不是像linux裡面那麼強大,linux的命令是萬能的,而Windows可能做不到或者說不受歡迎。
還有linux中你可以很輕易獲取到root許可權,這時候命令就都是至高無上的了,你有著和系統一樣高的許可權,你還可以用命令把系統刪掉,當然程序員可不敢這事hhh
希望我的回答對你有幫助!望採納!!