进行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系统中,有临时和永久两种方法启用转发功能。