進行Linux系統維護的時候,想要在文本中快速搜索到你需要的東西,grep命令是非常不錯的選擇,它主要用於查找文件里符合條件的字元串,從而節省時間、提高工作效率。那麼Linux系統中grep命令如何使用?我們一起來看看詳細的內容介紹。
Linux grep命令用於查找文件里符合條件的字元串。
grep指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為-,則grep指令會從標准輸入設備讀取數據。
語法
grep
[-abcEFGhHilLnqrsvVwxy][-A<顯示行數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本文件>][--help][範本樣式][文件或目錄...]
參數
-a或--text:不要忽略二進制的數據。
-A<顯示行數>或--after-context=<顯示行數>:除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
-b或--byte-offset:在顯示符合樣式的那一行之前,標示出該行第一個字元的編號。
-B<顯示行數>或--before-context=<顯示行數>:除了顯示符合樣式的那一行之外,並顯示該行之前的內容。
-c或--count:計算符合樣式的列數。
-C<顯示行數>或--context=<顯示行數>或-<顯示行數>:除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。
-d<動作>或--directories=<動作>:當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令將回報信息並停止動作。
-e<範本樣式>或--regexp=<範本樣式>:指定字元串做為查找文件內容的樣式。
-E或--extended-regexp:將樣式為延伸的正則表達式來使用。
-f<規則文件>或--file=<規則文件>:指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。
-F或--fixed-regexp:將樣式視為固定字元串的列表。
-G或--basic-regexp:將樣式視為普通的表示法來使用。
-h或--no-filename:在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱。
-H或--with-filename:在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。
………………
參數較多,就不為大家一一講解了!
2. linux命令 怎麼實現使用參數
#!/bin/bash
echo"Thisisscriptshowtheparamuse:"
echo"Thisisthescriptname:$0"
echo"Thisisthefirstparamis:$1"
echo"Thisisthesecondparamis:$2"
echo"Thisisthethirdparamis:$3"
echo"Thisisthefourthparamis:$4"
echo"Thisisthefifthparamis:$5"
echo"Thisisthesixthparamis:$6"
echo"Thisistheseventhparamis:$7"
echo"Thisistheeighthparamis:$8"
echo"Thisistheninithparamis:$9"
echo"Thistotalparamnumis:$#"
echo"Thistotalparamis:$*"
使用的時候直接把你要參數加到腳本後面例如下面:
[kinyou_xy@localhostshell]$shparam.
Thisisscriptshowtheparamuse:
Thisisthescriptname:param.sh
Thisisthefirstparamis:one
Thisisthesecondparamis:two
Thisisthethirdparamis:thr
Thisisthefourthparamis:good
Thisisthefifthparamis:night
Thisisthesixthparamis:wubi
Thisistheseventhparamis:shell
Thisistheeighthparamis:study
Thisistheninithparamis:last
Thistotalparamnumis:9
Thistotalparamis:
3. 求 linux下 c++高手,命令行傳參數的題,
GNU/Linux的命令行選項有兩種類型:短選項和長選項,前者以 '-' 作為前導符,後者以 '--' 作為前導符
。比如有一個命令:
$ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt
在GNU/Linux系統,對這種情況的一種合理解釋是:
a是短選項,帶一個參數vv;
add是長選項,無參數;
b是短選項,無參數;
file是長選項,帶一個參數a.txt;
b.txt是參數;
-是參數,通常表示標准輸入,stdin;
--是一個指示符,表明停止掃描參數,其後所有部分都是參數,而不是選項;
-e是參數;
c.txt是參數
為了簡化程序設計,有幾個庫函數可以優雅地分析命令行參數,原型如下:
#include <unistd.h>
int getopt(int argc, char * const argv[],
const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
#define _GNU_SOURCE
#include <getopt.h>
int getopt_long(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);
int getopt_long_only(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);
我們先看看用於分析短參數的getopt函數。參數含義如下:
argc, argv是從main函數獲取的參數,原樣傳給getopt;
optstring指示如何分析參數。
關於optstring,還有幾點說明:
如果選項帶參數,該選項後接冒號,比如上例中optstring為"a:b",指示a帶參數,b沒有參數;
如果選項帶可選參數,該選項後接兩個冒號,比如"a::b",表明a可能有參數,也可能沒有;
如果optstring的開頭字元為':',表明如果指明選項帶參數,而實際命令行沒有參數時,getopt返回':'而不是'?'(默認情況下返回'?',和無法識別的參數返回一樣);
如果optstring的開頭字元為'+',表明一但遇到一個無選項參數,馬上停止掃描,隨後的部分當作參數來解釋;
如果optstring的開頭字元為'-',表明如果遇到無選項參數,則把它當作選項1(不是字元'1')的參數
該函數每解析完一個選項,就返回該選項字元。
如果選項帶參數,參數保存在optarg中。如果選項帶可選參數,而實際無參數時,optarg為NULL。
當遇到一個不在optstring指明的選項時,返回字元『?』。如果在optstring指明某選項帶參數而實際沒有參數時,返回字元『?』或者字元『:』,視optstring的第一個字元而定。這兩種情況選項的實際值被保存在optopt中。
當解析錯誤時,如果opterr為1則自動列印一條錯誤消息(默認),否則不列印。
當解析完成時,返回-1。
每當解析完一個argv,optind就會遞增。如果遇到無選項參數,getopt默認會把該參數調後一位,接著解析下一個參數。如果解析完成後還有無選項的參數,則optind指示的是第一個無選項參數在argv中的索引。
函數getopt_long()的工作方式類似於getopt(),不過它還能接收長選項。在接收長選項之前,我們必須定義個一個結構體數組變數longopts,指明我們希望獲取的長選項。
struct option {
const char *name;
int has_arg;
int *flag;
int val;
};
含義如下:
name指明長選項的名稱;
has_arg指明該選項是否帶參數,1為是,0為否,2為可選;
flag指明長選項如何返回,如果flag為NULL,則getopt_long返回val。否則返回0,flag指向一個值為val的變數。如果該長選項沒有發現,flag保持不變;
val指明返回的值,或者需要載入到被flag所指示的變數中。
option數組的最後一個元素必須全部填充0.
getopt_long的最後一個參數longindex在函數返回時指向被搜索到的選項在longopts數組中的下標。longindex可以為NULL,表明不需要返回這個值。
getopt_long_only類似於getopt_long,但是它把'-'開頭的選項當作長選項來處理。如果該選項與長選項不匹配,而與短選項匹配,則可以作為短選項解析。
在短選項找到的時候,getopt_long和getopt_long_only的表現和getopt一樣。如果長選項找到了,如果flag為 NULL,返回val,否則返回0。錯誤情況的處理和getopt一樣,只是返回'?'時還可能是別的情況引起的:選項含糊不明確或者無關參數。
我們拿Linux手冊的一個例子來說事。
#include <stdio.h> /* for printf */
#include <stdlib.h> /* for exit */
#include <getopt.h>
int
main (int argc, char **argv) {
int c;
int digit_optind = 0;
while (1) {
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
{"add", 1, 0, 0},
{"append", 0, 0, 0},
{"delete", 1, 0, 0},
{"verbose", 0, 0, 0},
{"create", 1, 0, 』c』},
{"file", 1, 0, 0},
{0, 0, 0, 0}
};
c = getopt_long (argc, argv, "abc:d:012",
long_options, &option_index);
if (c == -1)
break;
switch (c) {
case 0:
printf ("option %s", long_options[option_index].name);
if (optarg)
printf (" with arg %s", optarg);
printf ("\n");
break;
case 』0』:
case 』1』:
case 』2』:
if (digit_optind != 0 && digit_optind != this_option_optind)
printf ("digits occur in two different argv-elements.\n");
digit_optind = this_option_optind;
printf ("option %c\n", c);
break;
case 』a』:
printf ("option a\n");
break;
case 』b』:
printf ("option b\n");
break;
case 』c』:
printf ("option c with value 『%s』\n", optarg);
break;
case 』d』:
printf ("option d with value 『%s』\n", optarg);
break;
case 』?』:
break;
default:
printf ("?? getopt returned character code 0%o ??\n", c);
}
}
if (optind < argc) {
printf ("non-option ARGV-elements: ");
while (optind < argc)
printf ("%s ", argv[optind++]);
printf ("\n");
}
exit (0);
}
我們用digit_optind和this_option_optind來跟蹤選項012是否在一起,比如選項 -012 和-0 -1 -2 的optind情況是不一樣的,前者返回0、1、2時optind相同,而後者optind的值依次大1。
希望你能看懂。。。
4. linux中設計一個shell腳本程序可以接受命令行輸入的參數執行相應的菜單命令
echo "------------------------"
echo "1、命令1"
echo "2、命令2"
echo "3、命令3"
echo "------------------------"
echo "請輸入要執行的菜單命令(1/2/3):"
read com
case $com in
1)
命令1
;;
2)
命令2
;;
3)
命令3
;;
*)
echo "輸入命令錯誤"
;;
5. Linux系統中,ls命令的參數中,-a -d -F 這三個分別表示什麼啊
a表示顯示所有文件,包含隱藏文件。
d表示顯示目錄自身的屬性,而不是目錄中的內容。
F選項會在顯示目錄條目時,在目錄後加一個。
Linux與其他操作系統相比 ,具有開放源碼、沒有版權、技術社區用戶多等特點 ,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協議棧 ,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。
Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux操作系統不僅僅是被網路運維人員當作伺服器使用,Linux既可以當作伺服器,又可以當作網路防火牆是Linux的 一大亮點。
(5)linux輸入命令的參數擴展閱讀:
系統內核的路由轉發:
Linux操作系統嵌入了TCP/IP協議棧,協議軟體具有路由轉發功能。路由轉發依賴作為路由器的主機中安裝多塊網卡,當某一塊網卡接收到數據包後,系統內核會根據數據包的目的IP地址,查詢路由表。
通過修改Linux系統內核參數ip_forward的方式實現路由功能,系統使用sysctl命令配置與顯示在/proc/sys目錄中的內核參數。首先在命令行輸入:cat/proc/sys/net/ipv4/ip_forwad,檢查Linux內核是不是開啟IP轉發功能。
如果結果為1,表明路由轉發功能已經開啟;如果結果為0,表明沒有開啟。出於安全考慮,Linux內核默認是禁止數據包路由轉發的。在linux系統中,有臨時和永久兩種方法啟用轉發功能。