linux命令行题目 linux命令填空题( 五 )


如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式 。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的 。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然 。
由于安全上的考虑 , 在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码 。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘) 。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置 。
例如,如果丢失了root口令,那么可以让机器启动进入单用户状态 。在启动后的 lilo 提示符下输入:
init=/bin/sh rw 使机器进入运行级1,并把 root 文件系统挂为读写 。他会跳过所有系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级
求 linux下 c++高手 , 命令行传参数的题 , GNU/Linuxlinux命令行题目的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符
。比如有一个命令:
$ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt
在GNU/Linux系统,对这种情况的一种合理解释是:
a是短选项,带一个参数vvlinux命令行题目;
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中 。

推荐阅读