Linux有趣的人命令,好玩的Linux命令

linux下有哪些常用的命令呢?

1.列出文件清单命令:ls

目前成都创新互联已为成百上千家的企业提供了网站建设、域名、网站空间、网站改版维护、企业网站设计、康县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

ls命令能够列出当前目录下的所有内容。ls 命令的执行方式为:

# ls [-选项] [文件名或者目录名]

进入到Linux命令行中后,我们至少要知道当前所处的位置有哪些内容,这些信息就可以使用ls命令来获得。

在Linux中,ls命令是最常使用的命令之一,因为在命令行下要随时查看目录内容。如果不加任何选项的话,ls命令仅列出当前目录下的文件和目录名,例如,想要查看/etc目录下的内容,可以使用下列命令:

# ls /etc

如果想要列出当前目录下所有文件,则可以使用下列命令:

# ls -a

2、cat命令

功能:在标准输出上显示文件。

语法:cat [-vTEuAte] 文件

例子: cat example.txt

cat -A exam2.txt

cat file1 file2 file2

3、more命令

功能:在终端屏幕按屏显示文本文件。

语法: more [-pcdls] 文件

例子: more example.c

more -dc example.c

more -c -10 example.c

4、less命令

less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既

可以向前又可以向后翻阅文件。

5、head命令

功能:显示指定文件的前若干行。缺省设置为显示10行

语法:head [-n] 文件

例子: head example.c

head -3 example.c

6、tail命令

功能:显示指定文件的末尾若干行。缺省设置为显示10行

语法:tail [+ / - num ] [参数] 文件

+num 从第num行以后开始显示。- num 从距文件尾num行处开始显示。

例子: tail example.c

tail -4 example.c

7、grep、fgrep和egrep命令

功能:

这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。

语法:

grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……]

egrep [选项] [查找模式] [文件名1,文件名2,……]

fgrep [选项] [查找模式] [文件名1,文件名2,……]

例子: grep "text file" example

grep data *

grep goto *.c

为什么每个月的天数不一样?

现行的公历是格利戈里历法,这个历法的是1582年教皇格利戈里根据恺撒大帝引进的算法改进的。它采用的是闰年制也就是现行的制度,不过有一个需要注意的地方就是,这个历法并不是连续的,中间缺少了11天。1752年9月2日之后的那一天并不是1752年9月3日,而是1752年9月14日。也就是说,从1752年9月3日到1752年9月13日的11天并不存在。抹掉这11天是由英国议会做出的决定。所以要计算某年每个月的天数的,除了要考虑是否是闰年以外,还要考虑1752年的9月。

-------------------------

公元元年的第一天,也就是公元1年1月1日。具体:公元1年1月1日是星期六。

---------------------

太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。太阳历的历年近似等于回归年,一年12个月,这个“月”,实际上与朔望月无关。阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦。

如今世界通行的公历就是一种阳历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年。公历的历年平均长度与回归年只有26秒之差,要累积3300年才差一日。

现行公历的产生、变化和发展

目前通行世界的公历,是我们大家最熟悉的一种阳历。这部历法浸透了人类几千年间所创造的文明,是古罗马人向埃及人学得,并随着罗马帝国的扩张和基督教的兴起而传播于世界各地。

公历最早的源头,可以追溯到古埃及的太阳历。尼罗河是埃及的命根子,正是由于计算尼罗河泛滥周期的需要,产生了古埃及的天文学和太阳历。七千年前,他们观察到,天狼星第一次和太阳同时升起的那一天之后,再过五、六十天,尼罗河就开始泛滥,于是他们就以这一天作为一年的开始,推算起来,这一天是7月19日。 最初一年定为360天,后来改为365天。这就是世界上第一个太阳历。后来他们又根据尼罗河泛滥和农业生产的情况,把一年分为三季,叫做洪水季、冬季和夏季。每季4个月,每月30天,每月里10天一大周,五天一小周。全年12个月,另加5天在年尾,为年终祭祀日。

这种以365天为一年的历年,是由于观测天狼星定出来的,叫天狼星年。 它和回归年相差约0.25天,因而在日历上每年的开始时间越来越早,经过1461个历年,各个日期再次与原来的季节吻合,以后又逐渐脱离。看起来,天狼星年好象在回归年周期左右徘徊,因而又叫它为徘徊年、游移年,1461年的循环周期被称为天狼周期。

后来,埃及人通过天文观测,发现年的真正周期是365.25日,但僧侣们为了使埃及的节日能与祭神会同时举行,以维护宗教的“神圣”地位,宁愿保持游移年。后来出土了一块石碑,上面有用埃及文和希腊文所写的碑文,记载了欧吉德皇帝在公元前238年发布的一道命令: 每经过四年,在第四年的年末五天祭祀日之后、下一年元旦之前,再加一天,并在这天举行欧吉德皇帝的节日庆祝会,以便让大家记住。欧吉德皇帝校正了以前历法的缺陷,这增加一天的年叫定年,其它年叫不定年。

古罗马人使用的历法经历了从太阴历到阴阳历、阳历的发展过程。罗马古时是意大利的一个小村,罗马人先是统一了意大利,而后又成为地跨欧、亚、非三洲的大帝国。最早,古罗马历全年10个月,有的历月30天,有的历月29天(这十分类似太阴历),还有70几天是年末休息日。罗马城第一个国王罗慕洛时期,各月有了名称,还排了次序。全年10个月,有的月30天,有的月31天,共304天,另外60几天是年末休息日。以罗马城建立的那一年,即公元前753年作为元年,这就是罗马纪元。某些欧洲历史学家直到17世纪末还使用这个纪年来记载历史事件。

第二个国王努马,参照希腊历法进行了改革,增加了第十一月和第十二月,同时调整各月的天数,改为1、3、5、8四个月每月31天,2、4、6、7、9、10、11七个月每月29天, 12月最短,只有28天。根据那时罗马的习惯,双数不吉祥,于是就在这个月里处决一年中所有的死刑犯。这样,历年为355天,比回归年少10多天。 为了纠正日期与季节逐年脱离的偏差,就在每四年中增加两个补充月,第一个补充月22天,加在第二年里,另一个23天加在第四年里,所增加的天数放在第十二月的24日与25日之间。这实际上就是阴阳历了,历年平均长度为366.25天,同时用增加或减少补充月的办法来补救历法与天时不和的缺点。但这样却更增加了混乱:月份随意流转。比如,掌管历法的大祭司长在自己的朋友执政的年份,就硬插进一个月,而当是仇人执政,就减少补充月,来缩短其任期。民间契约的执行也受到影响,祭祀节与斋戒日都在逐渐移动,本该夏天的收获节竟跑到了冬天举行。

当儒略·凯撒第三次任执政官时,指定以埃及天文学家索西琴尼为首的一批天文学家制定新历,这就是儒略历。

儒略历的主要内容是:每隔三年设一闰年,平年365天,闰年366天,历年平均长度为365.25日。以原先的第十一月1日为一年的开始,这样,罗马执政官上任时就恰值元旦。 儒略历每年分12个月,第1、3、5、7、9、11月是大月,大月每月31天。第4、6、8、10、12月为小月,小月每月30天。第二月(即原先的第十二月)在平年是29天,闰年30天,虽然月序不同于改历前,可是仍然保留着原来的特点,是一年中最短的月份。

儒略历从罗马纪元709年,即公元前45年1月1日开始实行。 这一年,为了弥补罗马历与太阳年的年差,除了355天的历年和一个23天的附加月外, 又插进两个月,其中一个月为33天,另一个月为34天。这样,这一年就有355+23+33+34=445天。这就是历史上所称的“乱年”。

西方历法从儒略历实施开始,终于走上正轨。滑稽的是,那些颁发历书的祭司们,有本事从乌鸦的争斗预卜吉凶,却把改历命令中的“每隔三年设一闰年”误解为“每三年设一闰年”。这个错误直到公元前9年才由奥古斯都下令改正过来。

“奥古斯都”是神圣、庄严、崇高的意思。在古罗马,这个尊号过去只是在举行宗教仪式上才授予的。在公元前27年,元老院把它授给了屋大维。他是儒略·凯撒姐姐的儿子,是凯撒遗嘱的第一继承人。

想当年,伟大的凯撒大帝南征北战,东讨西伐,雄才大略,不可一世,后来更成为事实上的独裁者。树大招风,遭到许多人嫉妒。公元前44年,当凯撒意图公开称帝时,却在元老院的议事厅遭到刺杀。此时屋大维还不满20岁,但他却颇具智力和手腕,逐渐积蓄力量,到公元前30年,击败所有对手,成了罗马“第一公民”。屋大维实际上就是唯一具有无限权力的统治者,他结束了罗马共和时期。因此,历史上把从公元前27年开始的罗马,称为罗马帝国。

当奥古斯都准备改正闰年错误时,已经多闰了三次,于是他下令从公元前8年到公元4年停止闰年,即公元前5年、公元前1年和公元4年仍是平年,以后又恢复为每四年一闰了。 为了纪念他的这一功绩,罗马元老院通过决议,把儒略历的第八月改称为“Augustus”,即奥古斯都月,因为他在这个月里曾取得过巨大的军事胜利。但这个月是小月,未免有点逊色,何况罗马人以单数为吉,而30天却是个双数,于是就从2月份拿出一天,加到奥古斯都月里,8月就31天了,可怜的2月在平年只有28天,碰上四年一次的闰年也不过29天。7、8、9月连续三个月都是大月,看起来很不顺眼,使用也不方便, 就把9月改为30天,10月为31天,11月为30天,12月为31天。这样,大小月相间的规律破坏了,一直到两千年后的今天还受到影响。

奥古斯都修改过的历法格式与现行公历一模一样了,但它的纪元,即计算年代的起算点还不是公元元年,它的闰年方法与现行公历还不完全一致。这两点差别与基督教的起源和发展有密切的关系。

基督教产生于公元一世纪的巴勒斯坦,“基督”一词是古希腊语的译音,意为“救世主”。传说基督教的创始人是耶稣,他作为救世主,许诺穷人死后升入天堂,而富人要进入天堂比骆驼穿过针眼还难。由于拨动了社会下层人民的心弦,基督教逐渐传播开来,引起罗马统治者不安,在提庇留皇帝时代,罗马派驻犹太的总督,将耶稣钉死在十字架上。但是第三天,耶稣从坟墓中复活过来,并升了天,他将来还要对所有的死人、活人施行末日审判。后来,基督教徒把这些传说和耶稣言行记录下来,编写了《新约圣经》。

早期的基督教,因为打破了罗马帝国的神权统治,而多次遭到镇压。后来,罗马帝国日渐衰落,奴隶制日趋瓦解,原来的社会上层分子在彷徨中纷纷加入基督教,并逐步控制了它,努力寻求统治者对教会的支持。统治者对教会转而采取怀柔政策,到四世纪末,罗马帝国终于宣布基督教为其国教。

公历的纪元,就是从“耶稣降生”的那年算起的。这与基督教的兴盛密切相关。

此后,儒略历被认为是准确无误的历法, 于是人们把3月21日固定为春分日,却带来了未曾料想到的麻烦。随着时间的推移,人们发觉,真正的春分不再与当时的日历一致,这个昼夜相等的日期越来越早,到16世纪末已提前到3月11日了。 春分逐渐提前,是由于儒略历并非最精确的历法,它的历年平均长度等于365.25日,还是比回归年长了11分14秒,这个差数虽然不大,但累积下去,128年就差一天,400年就差三天多。

为了不违背宗教会议的规定,满足教会对历法的要求,罗马教皇格里高利十三世设立了改革历法的专门委员会,比较了各种方案后, 决定采用意大利医生利里奥的方案,在400年中去掉儒略历多出的三个闰年。

1582年3月1日,格里高利颁发了改历命令,内容是:

一、1582年10月4日后的一天是10月15日,而不是10月5日,但星期序号仍然连续计算,10月4日是星期四,第二天10月15日是星期五。这样,就把从公元325年以来积累的老账一笔勾销了。

二、为避免以后再发生春分飘离的现象,改闰年方法为: 凡公元年数能被4整除的是闰年,但当公元年数后边是带两个“0”的“世纪年”时,必须能被400整除的年才是闰年。

格里高利历的历年平均长度为365日5时49分12秒,比回归年长26秒。虽然照此计算,过3000年左右仍存在1天的误差,但这样的精确度已经相当了不起了。

由于格里高利历的内容比较简洁,便于记忆,而且精度较高,与天时符合较好,因此它逐步为各国政府所采用。我国是在辛亥革命后根据临时政府通电,从1912年1月1日正式使用格里高利历的。

西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的。他采用的四年一闰的闰年方式。由于一个太阳年不刚好是365.25天,而是 365.242199…天。到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天。于是教皇格利戈里八世进行了一次校正。他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正。经过校正的历法叫格利戈里历法,也就是我们现在用的公历。1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日。”

----------------

如何求某一天是星期几?

请注意这样一个事实,即从公元元年一月一日开始到现在,每一天都是连续的,而每个星期有7天,也是连续的,也就是说日期和星期是一对一的,没有断档现象。我的基本思想是计算出当前天是从公元元年一月一日开始的第几天,再利用星期的周期性来计算公元任何一天是星期几。

假设当前年份为y,并忽略闰年,则从公元元年一月一日到y-1年共有365*(y-1)天,加上闰年多出来的天数,即加上1*((y-1)/4-(y-1)/100+(y-1)/400),"/"为整除,得:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)。我们再补上从当前1月1日开始到当前天的天数e,即为所求。即:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e。它的值即为当前天是从公元元年一月一日开始算起的第几天。补上一个x(x是与公元元年一月一日是星期几有关的一个0~6的整数),并将这个表达式赋给变量t,即:t=x+365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e再用t除以7,余几即为星期几(余0为星期日)。

下面讨论x的求法,如果知道公元元年一月一日是星期几,就可以直接得到x的值,但现在公式还没有求出来,不知道公元元年一月一日是星期几。不过没关系,毕竟知道最近的日期是星期几。不妨看一下2001年1月1日是星期几,结果是星期一,代入公式得t=x+730516,用730516除以7,得104355,余数是1,则为了保证2001年1月1日是星期一,取x 为0,所以公元元年一月一日也是星期一。至此,得到了完整的公式:

t=365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e

再将它做一下改进,我们将公式变形为:

t=(52*7+1)*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e

利用星期的周期性,将52*7+1从公式中删除,得:

t=(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e

以下是这种算法的C语言程序:

#includestdio.h

char *name[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

void main(void)

{

int d,m,y,e,t,f;

printf("请输入日:");

fflush(stdout);

scanf("%d",d);

printf("请输入月:");

fflush(stdout);

scanf("%d",m);

printf("请输入年:");

fflush(stdout);

scanf("%d",y);

switch(m)

{

case 1:e=d;break;

case 2:e=31+d;break;

case 3:e=59+d;break;

case 4:e=90+d;break;

case 5:e=120+d;break;

case 6:e=151+d;break;

case 7:e=181+d;break;

case 8:e=212+d;break;

case 9:e=243+d;break;

case 10:e=273+d;break;

case 11:e=304+d;break;

case 12:e=334+d;break;

default:return;

}

if(y%4==0y%100!=0||y%400==0)

if(m2)

++e;

--y;

t=y+y/4-y/100+y/400+e;

f=t%7;

printf("这一天是 %s\n",name[f]);

}

再谈星期的计算

“让我们看看1752年9月14号这个星期四吧,我们的公式最远只能推算到这里了。”

——Kim S. Larsen

“从公元元年1月1日开始到现在,每一天都是连续的。”

——于鹏

“西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的。他采用的四年一闰的闰年方式。由于一个太阳年不刚好是365.25天,而是 365.242199…天。到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天。于是教皇格利戈里八世进行了一次校正。他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正。经过校正的历法叫格利戈里历法,也就是我们现在用的公历。1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日。”

日期的限制是Kim S. Larsen算法的问题吗?不。

公元元年1月一日开始到现在,每一天都是连续的吗?不。

一个简单的方法就可以证明上述事实——用Linux的cal命令。启动你的Linux在#提示符下输入

cal 9 1752

你会看到:

September 1752

Su Mo Tu We Th Fr Sa

1 2 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

有趣吧一个只有19天的九月。

让我们来看看这两个算法,Kim S. Larsen博士的算法和于鹏同学的算法在本质上其实是相同的。只不过在实现的细节上略有不同。如果让两个算法去计算同一天(无论在1752年9月14日之前还是之后)是星期几,二者的答案肯定是相同的。让我们来分析一下吧。

首先,他们把日期对星期的决定作用都分为年、月、日三个决定因素。对于年的因素,从两者的计算公式 就能看出是相同的;对于日的因素,两者都是直接计入,故也是相同的;而对于月的因素,Kim S. Larsen博士构造了一个公式,(一个非常巧妙的公式,)通过以月份为自变量算出的函数值作为对星期的影响量。而于鹏同学采用了查表的方法,即先构造好一个以月份为索引的表对于相应的月份,通过查表得出其对星期的影响量。(以switch语句实现)不妨作如下演算:(为了一致起见,采用一、二月作为上年的十三、十四月。这是一个非常聪明的方法。)用于鹏同学的方法建表,并对7取模(表一)。再建立Kim S. Larsen函数 的函数值表(表二)。很显然二者是相同的。

三月 0 0 三月 0

四月 31 3 四月 3

五月 61 5 五月 5

六月 92 1 六月 1

七月 122 3 七月 3

八月 153 6 八月 6

九月 184 2 九月 2

十月 214 4 十月 4

十一月 245 0 十一月 0

十二月 275 2 十二月 2

十三月 306 5 十三月 5

十四月 337 1 十四月 1

表一 表二

其次,在处理闰年2月29日的问题上,两者的做法略有不同,但效果还是相同的。Kim S. Larsen博士采用的方法相当高明,他把二月排在一年的最后,管他闰不闰,反正是最后一天。而于鹏同学加了一个if分支,直观有效。

大师不愧为大师,设计的算法简洁、优美;而于鹏同学的算法,简单易懂,并且效率并不差。

好了,该解决这个“历史遗留问题”了。其实,并没有什么数学公式能算出指定日期是星期几,我们可以试着拼凑一个,不过何必呢?加个if分枝不就解决问题了吗?(Kim S. Larsen算法+于鹏思想)对Kim S. Larsen 博士的程序作一些必要的添加,可得到突破1752年9月14日日期限制的C语言程序。

/*C++Builder5下编译通过*/

/*假设输入的是正确的日期*/

#include stdio.h

char *name[] = { "Monday",

"Tuesday",

"Wednesday",

"Thursday",

"Friday",

"Saturday",

"Sunday"

};

void main(){

int D,M,Y,A;

printf("Day: "); fflush(stdout);

scanf("%d",D);

printf("Month: "); fflush(stdout);

scanf("%d",M);

printf("Year: "); fflush(stdout);

scanf("%d",Y);

if ((M == 1) || (M == 2)){/*一月、二月当作前一年的十三、十四月*/

M += 12;

Y--;

}

if ((Y 1752)||((Y == 1752)(M 9))

||((Y == 1752)(M == 9)(D 3)))/*判断是否在1752年9月3日前*/

A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 +5) % 7;/*1752年9月3日前的公式*/

else A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 - Y/100 + Y/400) % 7;/*1752年9月3日后的公式*/

printf("It's a %s.\n",name[A]);

}

另外:

1.公元1年1月1日是星期六。

2.如果有朋友对这个问题感兴趣,或是有什么好的算法,欢迎和我联系。我的联系方法是:andrew80@163.net。

3.据说现行公历2800年左右还会有一天的误差,那时程序又要修正了。:)

高斯--泽勒公式:

A=(y+[y/4]-[y/100]+[y/400]+x ) mod 7

星期几:A

(A=0 为星期 天!)

公元年: y

天数 :x ( 由当年月份和日期定,即距离当年初的天数。例:2001/3/1 x=31+28+1 )

linux必学的60个命令

Linux常用的命令可以分为以下几类:安装和登录命令、文件处理命令、系统管理相关命令、网络操作命令、系统安全相关命令、其它命令。

安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last。

文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。

系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab。

网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup。

系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who。

其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

Linux简介

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。

它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。

Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。

linux常用的命令有哪些

Linux运维人员必会的120个命令

来自《跟老男孩学Linux运维:核心系统命令实战》一书

前言

第1章 Linux命令行简介 / 1

1.1Linux命令行概述 / 1

1.2在Linux命令行下查看命令帮助 / 4

1.3Linux shutdown reboot halt / 9

关机:

shutdown -h now

halt

init 0

第2章 文件和目录操作命令 / 13

2.1pwd:显示当前所在的位置 / 13

2.2cd:切换目录 / 16

2.3tree:以树形结构显示目录下的内容 / 18

2.4mkdir:创建目录 / 22

2.5touch:创建空文件或改变文件的时间戳属性 / 27

2.6ls:显示目录下的内容及相关属性信息 / 30

2.7cp:复制文件或目录 / 39

2.8mv:移动或重命名文件 / 42

2.9rm:删除文件或目录 / 45

2.10rmdir:删除空目录 / 48

2.11ln:硬链接与软链接 / 49

2.12readlink:查看符号链接文件的内容 / 54

2.13find:查找目录下的文件 / 55

2.14xargs:将标准输入转换成命令行参数 / 68

2.15rename:重命名文件 / 71

2.16basename:显示文件名或目录名 / 72

2.17dirname:显示文件或目录路径 / 72

2.18chattr:改变文件的扩展属性 / 73

2.19lsattr:查看文件扩展属性 / 75

2.20file:显示文件的类型 / 76

2.21md5sum:计算和校验文件的MD5值 / 77

2.22chown:改变文件或目录的用户和用户组 / 80

2.23chmod:改变文件或目录权限 / 81

2.24chgrp:更改文件用户组 / 85

2.25umask:显示或设置权限掩码 / 86

2.26老男孩从新手成为技术大牛的心法 / 90

第3章 文件过滤及内容编辑处理命令 / 91

3.1cat:合并文件或查看文件内容 / 91

3.2tac:反向显示文件内容 / 103

3.3more:分页显示文件内容 / 104

3.4less:分页显示文件内容 / 107

3.5head:显示文件内容头部 / 109

3.6tail:显示文件内容尾部 / 111

3.7tailf:跟踪日志文件 / 114

3.8cut:从文本中提取一段文字并输出 / 115

3.9split:分割文件 / 117

3.10paste:合并文件 / 118

3.11sort:文本排序 / 123

3.12join:按两个文件的相同字段合并 / 127

3.13uniq:去除重复行 / 129

3.14wc:统计文件的行数、单词数或字节数 / 131

3.15iconv:转换文件的编码格式 / 133

3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134

3.17diff:比较两个文件的不同 / 135

3.18vimdiff:可视化比较工具 / 138

3.19rev:反向输出文件内容 / 139

3.20tr:替换或删除字符 / 140

3.21od:按不同进制显示文件 / 143

3.22tee:多重定向 / 145

3.23vi/vim:纯文本编辑器 / 147

3.24老男孩逆袭思想:做Linux运维的多个好处 / 152

第4章 文本处理三剑客 / 153

4.1grep:文本过滤工具 / 153

4.2sed:字符流编辑器 / 159

4.3awk基础入门 / 165

第5章 Linux信息显示与搜索文件命令 / 176

5.1uname:显示系统信息 / 176

5.2hostname:显示或设置系统的主机名 / 178

5.3dmesg:系统启动异常诊断 / 179

5.4stat:显示文件或文件系统状态 / 181

5.5du:统计磁盘空间使用情况 / 183

5.6date:显示与设置系统时间 / 186

5.7echo:显示一行文本 / 190

5.8watch:监视命令执行情况 / 193

5.9which:显示命令的全路径 / 195

5.10whereis:显示命令及其相关文件全路径 / 196

5.11locate:快速定位文件路径 / 197

5.12updatedb:更新mlocate数据库 / 199

5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200

第6章 文件备份与压缩命令 / 201

6.1tar:打包备份 / 201

6.2gzip:压缩或解压文件 / 208

6.3zip:打包和压缩文件 / 211

6.4unzip:解压zip文件 / 212

6.5scp:远程文件复制 / 214

6.6rsync:文件同步工具 / 216

6.7老男孩逆袭思想:新手如何高效地提问 / 220

第7章 Linux用户管理及用户信息查询命令 / 222

7.1 useradd:创建用户 / 222

7.2usermod:修改用户信息 / 227

7.3userdel:删除用户 / 229

7.4groupadd:创建新的用户组 / 230

7.5groupdel:删除用户组 / 231

7.6passwd:修改用户密码 / 232

7.7chage:修改用户密码有效期 / 237

7.8chpasswd:批量更新用户密码 / 238

7.9su:切换用户 / 240

7.10visudo:编辑sudoers文件 / 242

7.11sudo:以另一个用户身份执行命令 / 244

7.12id:显示用户与用户组的信息 / 248

7.13w:显示已登录用户信息 / 249

7.14who:显示已登录用户信息 / 250

7.15users:显示已登录用户 / 252

7.16whoami:显示当前登录的用户名 / 253

7.17last:显示用户登录列表 / 253

7.18lastb:显示用户登录失败的记录 / 254

7.19lastlog:显示所有用户的最近登录记录 / 255

第8章 Linux磁盘与文件系统管理命令 / 257

8.1fdisk:磁盘分区工具 / 257

8.2partprobe:更新内核的硬盘分区表信息 / 265

8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266

8.4parted:磁盘分区工具 / 268

8.5mkfs:创建Linux文件系统 / 272

8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274

8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275

8.8fsck:检查并修复Linux文件系统 / 278

8.9dd:转换或复制文件 / 281

8.10mount:挂载文件系统 / 284

8.11umount:卸载文件系统 / 288

8.12df:报告文件系统磁盘空间的使用情况 / 289

8.13mkswap:创建交换分区 / 293

8.14swapon:激活交换分区 / 294

8.15swapoff:关闭交换分区 / 295

8.16sync:刷新文件系统缓冲区 / 296

第9章 Linux进程管理命令 / 298

9.1ps:查看进程 / 298

9.2pstree:显示进程状态树 / 305

9.3pgrep:查找匹配条件的进程 / 306

9.4kill:终止进程 / 307

9.5killall:通过进程名终止进程 / 310

9.6pkill:通过进程名终止进程 / 311

9.7top:实时显示系统中各个进程的资源占用状况 / 313

9.8nice:调整程序运行时的优先级 / 320

9.9renice:调整运行中的进程的优先级 / 323

9.10nohup:用户退出系统进程继续工作 / 324

9.11strace:跟踪进程的系统调用 / 325

9.12ltrace:跟踪进程调用库函数 / 332

9.13runlevel:输出当前运行级别 / 334

9.14init:初始化Linux进程 / 335

9.15service:管理系统服务 / 335

第10章 Linux网络管理命令 / 338

10.1ifconfig:配置或显示网络接口信息 / 338

10.2ifup:激活网络接口 / 343

ifup eth0

10.3ifdown:禁用网络接口 / 343

ifdown eth0

service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。

10.4route:显示或管理路由表 / 344

10.5arp:管理系统的arp缓存 / 350

10.6ip:网络配置工具 / 351

10.7netstat:查看网络状态 / 358

10.8ss:查看网络状态 / 362

10.9ping:测试主机之间网络的连通性 / 363

10.10traceroute:追踪数据传输路由状况 / 366

10.11arping:发送arp请求 / 367

10.12telnet:远程登录主机 / 369

10.13nc:多功能网络工具 / 370

10.14ssh:安全地远程登录主机 / 373

10.15wget:命令行下载工具 / 376

10.16mailq:显示邮件传输队列 / 379

10.17mail:发送和接收邮件 / 381

10.18nslookup:域名查询工具 / 386

10.19dig:域名查询工具 / 389

10.20host:域名查询工具 / 393

10.21nmap:网络探测工具和安全/端口扫描器 / 394

10.22tcpdump:监听网络流量 / 398

第11章 Linux系统管理命令 / 407

11.1lsof:查看进程打开的文件 / 407

11.2uptime:显示系统的运行时间及负载 / 411

11.3free:查看系统内存信息 / 411

11.4iftop:动态显示网络接口流量信息 / 413

11.5vmstat:虚拟内存统计 / 415

11.6mpstat:CPU信息统计 / 419

11.7iostat:I/O信息统计 / 420

11.8iotop:动态显示磁盘I/O统计信息 / 423

11.9sar:收集系统信息 / 425

11.10chkconfig:管理开机服务 / 430

11.11ntsysv:管理开机服务 / 433

11.12 setup:系统管理工具 / 434

11.13ethtool:查询网卡参数 / 436

11.14mii-tool:管理网络接口的状态 / 437

11.19rpm:RPM包管理器 / 443

11.20yum:自动化RPM包管理工具 / 446

top命令

第12章 Linux系统常用内置命令 / 450

12.1Linux内置命令概述 / 450

12.2Linux内置命令简介 / 450

12.3Linux常用内置命令实例 / 452

在linux下,NetworkManager是怎么工作的? 能否告诉我他的工作方式和工作原理.

什么是NetworkManager?

NetworkManager由几个部分组成:一个管理系统网络连接、并且将其状态通过D-BUS进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。开发NetworkManager的初衷是简化网络连接的工作,让桌面本身和其他应用程序能感知网络。

绝大部分用户不必关心NetworkManager的后台服务,他们只通过GUI的applets来管理网络连接。对于GNOME和Xfce那就是 nm-applet工具,而对于KDE用户来说就是KNetworkManager了。

许多Linux用户不记得,甚至根本不曾认识到在早期Linux里面管理网络连接时的那种折腾与痛苦。尤其是对于笔记本用户这种需要连接到两个甚至更多网 络的情况。虽然早期版本的NetworkManager用起来也是一种痛苦(那个时候曾经有个外号叫NetworkMangler,即网络磨肉机),不过现在它已经成为了一个强大的工具,让管理网络不再痛苦。

比如说吧,我记得两年前我把我的Verizon无线EV-DO卡装入openSUSE 11.0的时候,NetworkManager根本不需要任何设置。它识别了这张卡,并且出现在GNOME工具栏的下拉菜单里面,唯一须要进行的操作就是 点击“连接”。这是这些年来我碰到的最简单的配置无线网卡的方式。

不过总是有需要改进的地方,因此NetworkManager也在继续发展。即将到来的0.8.1版本已经可以在Fedora 13中找到,带来了许许多多的改进和新功能。

0.8.1的新功能

最新版本的NetworkManager包括了许多新的特征,其中绝大部分都跟支持更多的的网络设备有关。移动用户将会很喜欢这个版本,因为 0.8.1增加了用于GSM、UMTS和CDMA卡等移动宽带设备ModemManager的支持。使用ModemManager也有新的功能,比如信号强度显示和选择2G/3G模式的功能。最后(当然并不止这些),你还可以关掉漫游功能以避免产生额外的连接费用。

0.8.1还支持使用蓝牙,不仅支持个人区域网络(PAN)上网,也支持老的蓝牙拨号网络(DUN)协议。所有(或者说最多)支持的设备可以在 wiki上找到。

如果你是为数不多的使用IPv6联网的用户之一(事实上他们发誓以后每个人都会用上),你会很高兴地发现现在NetworkManager支持 IPv6的自动配置和静态IP了。0.8.1版本还会带来IPv6的DHCP支持。

尽管大多数最近的改变都是增强设备或者协议的支持,可0.8.1也同样给我们代来了一个新的漂亮的客户端界面。

命令行接口

在我看来,0.8.1中最有趣的特征是nmcli,一个NetworkManager的命令行接口。虽然NetworkManager在管理网络连接方面有着巨大的飞跃,但是有一点倒退到老风格的管理方式的是忽略了命令行接口。只用GUI配置网络有错吗?

有几个问题。一部分用户可能没有使用能够方便地支持NetworkManager的applet的桌面环境或者窗口管理器。有些人或者根本就没有使用GUI环境。用户也有可能想通过编写脚本的方式来管理网络接口,如果唯一可用的控制器是GUI的话这会变得非常困难。

终于,NetworkManager有了自己 的CLI工具,nmcli。使用nmcli用户可以查询网络连接的状态,也可以用来管理。这个工具依然有点原始,不过其语法相对简单,并且对于那些真正需 要在CLI中使用NetworkManager的人来说并不太难掌握。比如,列举系统中的网络接口只需要运行:

nmcli dev list就会显示一些类似于下面的输出:

- Device: eth0 -----------------------------------------------------------------

Type 802-3-ethernet

Driver pcnet32

State connected

Default no

HW Address 00:0C:29:C3:87:30

Capabilities:

Carrier Detect yes

Wired Properties

Carrier on

IPv4 Settings:

Address 172.16.146.140

Prefix 24 (255.255.255.0)

Gateway 172.16.146.2

DNS 172.16.146.2

如果你想要关闭一个连接,你可以使用诸如nmcli con down id id的东西, 这里id是某个连接的ID。nmcli现在还不像ifconfig那样灵活和功能完善,不过这仅仅是一个开始。

展望未来

毫无疑问,NetworkManager尚未完成,或许永远也不可能完成。总有新的设备需要支持,新的功能需要增加。另外,NetworkManager在让许多用户在使用主流、标准的网络配置时变得简便,但未必适应那些不常见的配置。

比如,很有可能在0.8.2或者以后版本中出现的功能有 网络接口bonding 和为一个以太网接口 同时分配一个PPPoE地址和本地地址。

不管怎么说,NetworkManager已经成为Linux桌面的一项杀手级功能。如果你不曾想过管理家里,办公室和旅途中的各种网络连接是多么的复杂,那么你可以感谢NetworkManager,是它让你的生活变得更加轻松。


当前名称:Linux有趣的人命令,好玩的Linux命令
本文链接:http://azwzsj.com/article/hescjg.html