什么是Linux?Linux与Windows的相同点和不同点?

什么是Linux?Linux与Windows的相同点和不同点?,第1张

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX *** 作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。(1)不同的使用费用Linux是一项开源的项目,所以编程爱好者可以免费使用它而Windows则是需要购买的一款系统。(2)适用对象不同Linux适用于企业服务器系统架构,而Windows则适用于公众使用。(3) *** 作方式不同Windows是面向普及的,所以它的 *** 作更符合普通人的 *** 作习惯,其中大部分是通过界面 *** 作实现的。另一方面,在许多情况下,Linux需要从命令行 *** 作。(4)支持软件不同Windows由于使用人数较多,所以支持Windows的软件在数量和质量上都比Linux有优势。Linux平台只有开发者维护,缺少资金的大量支持,所以软件方面的数量和质量比较缺乏。(5)不同的文件格式Windows *** 作系统的内核是NT,Linux是shell。(6)安全性不同Windows系统常常受攻击目标,有必要安装一些安全保护软件来保护计算机的安全。Linux比Windows安全得多,使用Linux根本不需要额外的安全软件。(7)程序可移植性不同Windows的程序是不可移植的,该程序基本上与Linux不兼容。Linux程序是可移植的,不仅在不同的Linux之间,而且在Windows上也是如此。

首先说一下什么是数据流重定向,所谓数据流重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件,命令,程序,或者脚本。

谈到数据流重定向,我们首先需要了解文件描述符的概念。对于linux内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程等返回一个文件描述符。按照惯例,unix系统shell把文件描述符0与进程的标准输入关联,文件描述符1与标准输出关联,文件描述符2与标准错误关联。总结如下:

标准输入:文件描述符0,通常指键盘的输入 。使用符号<或<<

标准输出:文件描述符1,通常指命令执行所回传的正确信息 ,默认输出到屏幕u。使用符号>或>>

标准错误:文件描述符2,通常指命令执行失败后,所回传的信息,也是默认输出到屏幕。试用符号2>或2>>

默认情况下>和>>分别表示1>或1>>,<和<<与0<和0<<等价。

标准输出重定向: 

#ls

表示列出当前目录条目,并将结果输出到屏幕。

#ls 1>file1

以上命令会把命令的标准输出重新定向到一个文件file,而不是显示到屏幕上,如果不指明文件标识符,系统默认的就是1, 因此1可以省略。

即这个命令等同于

#ls >file1

如果file1不存在,则系统会自动创建。如果已经存在,那么系统首先会把这个文件清空,然后再将数据写入该文件。也就是说>输出到一个已存在的文件,那么会覆盖这个文件。如果不想覆盖,可以使用>>。表示将重定向数据追加到file1文件的末尾。

标准错误重定向:

#ls -qw 2>errorfile

表示将错误信息不输出到屏幕,而是写入errorfile。注意这里的2不能省略。因为>与1>等同,默认是标准输出重定向。所以这里要写成2>,表示标准错误重定向。-qw用来产生错误信息。

把标准错误和标准输出写入同一个文件:

#./a.out &>outfile

这个命令把./a.out的标准输出和标准错误重定向到outfile。&在这里表示标准错误和标准输出。下面是另一种写法:

#./a.out >outfile 2>&1

下面是一个错误的例子:

#./a.out >outfile 2>outfile

标准输入重定向:

#grep search-world <filename 或 grep search-world 0<filename

还有下面这种方式:

cat >catfile <~/.bashrc

它代表将~/.bashrc的内容作为输入,然后将这些内容写入catfile

关闭文件:

"&-"表示关闭文件标识符

有关关闭文件标识符的 *** 作请参考下面

n<&- 关闭输入文件标识符n

0<&-或<&- 关闭标准输入stdin

n>&- 关闭输出文件标识符n

1>&-或>&-关闭标准输出stdout

屏蔽标准输出或标准错误:

./a.out >/dev/null #等同于./a.out 1>dev/null 表示屏蔽标准输出

./a.out 2>/dev/null #表示屏蔽标准错误

./a.out >/dev/null 2>/dev/null#表示同时屏蔽标准输出和标准错误

打开文件:

#exec 3<>filename 把文件filename打开,并指定文件标识符为3

命令j<>filename表示把文件打开,并指明文件标识符为j

我们什么时候需要重定向:

1.屏幕输出的信息很重要,而且我们需要将它存下来的时候。

2. 后台执行中的程序,不希望它干扰屏幕正常的输出结果时。

3. 一些系统的例行命令。(例如写在/etc/crontab中的文件)的执行结果时,希望它可以存下来。

4. 一些执行命令的可能已知错误信息时,想以“2>dev/null"将它丢掉

5. 错误信息与正确信息需要分别输出时

常用重定向命令:

cmd >file 把 stdout 重定向到 file 文件中;

cmd >>file 把 stdout 重定向到 file 文件中(追加);

cmd 1>fiel 把 stdout 重定向到 file 文件中;

cmd >file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;

cmd 2>file 把 stderr 重定向到 file 文件中;

cmd 2>>file 把 stderr 重定向到 file 文件中(追加);

cmd >>file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);

cmd <file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;

cat <>file 以读写的方式打开 file;

cmd <file cmd 命令以 file 文件作为 stdin;

cmd <<delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。

>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;

<&n 标准输入复制自文件描述符 n;

<&- 关闭标准输入(键盘);

>&- 关闭标准输出;

n<&- 表示将 n 号输入关闭;

n>&- 表示将 n 号输出关闭;

与重定向相关的题目:

此题来自《unix环境高级编程》(第3版)P73 3.5

在Bourne shell、Bourne-again shell 和Korn shell中,digit1>&digit2表示将描述符digit1的重定向至描述符digit2的同一文件。请说明下面两条命令的区别。

./a.out >outfile 2>&1

./a.out 2>&1 >outfile

答:因为shell从左到右处理命令行,所以:

./a.out >outfile 2>&1 等同于./a.out 1>outfile 2>&1

首先执行 >outfile 设置标准输出到outfile,然后执行2>&1,即调用dup将标准输出复制到描述符2(标准错误上),其结果是将标准输出和标准错误设置为同一个文件,即描述符1和2指向同一个文件表项。而对于命令行

./a.out 2>&1 >outfile

首先执行dup,所以描述符2成为终端(假设命令是交互执行的),标准输出重定向到outfile。结果是描述符1指向outfile的文件表项,描述符2指向终端的文件表项。

参考资料:

1.http://os.51cto.com/art/201003/187688.htm

2.http://blog.csdn.net/ljianhui/article/details/9262737

3.https://www.ibm.com/developerworks/cn/linux/l-iotips/

4.《unix环境高级编程》

Linux 是什么 ?

Linux 是一套 Unix-like 的 *** 作系统,是 Unix 的一种,它控制整个系统基本服务的核心程序 (kernel) 是由 Linus 带头开发出来的,「Linux」这个名称便是以「Linus's unix」来命名,Linus 选择用「大众公有版权」 (GPL)的方式来发行这份程序,这个版权允许任何人以任何形式复制与散布 Linux 的原始程序,换句话说,Linux 实际上是「免费的」,使用者在网络上就可以抓到 Linux 的原始程序代码,随心所欲的复制与更改 Linux 的原始程序,在因特网的日渐盛行以及 Linux 开放自由的版权之下,吸引了无数计算机高手投入开发、改善 Linux 的核心程序,使得 Linux 的功能日见强大,所以今日我们可以在网络上免费下载 Linux 使用,或者花很少的一点费用就可以取得 Linux 光盘,这都是因为 Linux 是 GPL 版权的缘故。

除了核心程序以外,一个 *** 作系统还需要其它的系统程序跟应用程序才有实用性,Linux 系统中常用的系统程序大部份是美国自由软件基金会 (Free Software Foundation) 开发出来的软件,而且也有不少机构或个人为 Linux 开发应用程序,这些程序一样大多都是自由软件,任何人都可以免费的在网络上取得,不过自行去取得这些程序再一一安装非常不便,于是有些公司或团体就会去搜集、整合 Linux 上的程序,把「核心-系统程序-应用程序」总合起来构成一个完整的 *** 作系统,让一般使用者可以简便的安装完整个系统,这就是所谓的「安装软件包」(distribution),我们一般讲的 Linux 系统便是针对这些安装软件包而言,同样是 Linux 系统,却分成不同公司、机构整合出来的不同安装软件包,这就是大家常常在网络上看到 Linux 有那么多「种」的原因。

Linux 具有 Unix 系统的程序接口跟 *** 作方式,也继承了 Unix 稳定有效率的特点。网络上安装 Linux 的主机连续运做一年以上而不曾当机、不必关机是稀松平常的事,不过 Linux 却不象一般 Unix 要负担庞大的版权费用,也不需要在专属的昂贵硬件上才可以使用;Linux 可以在一般的 i386 PC 上执行,效能又高,自然而然的接收了过去几十年来在 Unix 上累积的程序资源跟使用者,加上 GPL 的版权允许大家自由散布 Linux 的原始码,并针对自己的需求修改程序,使得 Linux 在目前已经成为非常受人欢迎的一个多人多任务、免费、稳定、效率高、可以在包括 i386、Sparc、Alpha、Mips、PPC 等众多不同计算机系统平台上执行的 *** 作系统。

Linux支持多种硬件装置,诸如x86、Motorola 68k、Digital Alpha、Sparc、Mips、Motorola PowerPC和ARM等等。由于程序代码公开,硬件厂商无须多付额外的版权费用,便得以替自行生产的硬件装置开发适用于Linux的驱动程序,提高产品销售率。

软 体方面,如X,为窗口系统的工业标准;另外,由理察·史托曼主导的Emacs,提供窗口版和文字版的文书编辑环境,功能复杂强大,有一套完整的在线说明档 案;而众人合作开发的SpreadSheet,是窗口版的电子表格,任何熟稔Lotus 1-2-3的人,看到这样丰硕的成果,都会有莫名的感动的。当然,最为人称道的,是Linux的网络能力,不论是SLIP、PPP、NetBEUI、 DDP、X.25还是ISDN等等,Linux都有相应的软件供应;而稳定的服务器功能,适用于架设Intranet和Internet。

一般用户受益于GNU GPL和LGPL的保护,可以不同的管道取得完整的Linux,故而Linux可以是「免费的(gratis)」。相对于Unix昂贵的版权费用,Linux称得上是物美价廉。

除此以外,Linux还具有如下的特色∶

· 具备多人多任务∶这表示Linux可以在同一段时间内服务许多人各别的需求。形象一点讲,你可以一边听铁达尼号的原声CD,一边编辑文书,一边又在打印档案,还可以随时玩X版的俄罗斯方块。

· 支持多CPU∶这绝对不是NT的专利,Linux也支持这种硬件架构,代表着更快速的运算和革命性的算法即将成为时代的主流。

· RAM保护模式∶程序(processes)之间不会互相干扰,保证系统能常久运作无误。根据许多人下载系统评量程序(benchmarks)以测试 Linux的执行效能,结果发现单单是配备486CPU的PC,效能便足堪媲美升阳(Sun)或是迪吉多的中级工作站了。

· 动态加载程序∶当程序加载RAM执行时,Linux仅将磁盘中相关的程序模块加载,有效地提升了执行的速率和RAM的管理。

· 动态连结共享程序馆∶这表示执行档的大小大量地减少,有助于节省磁盘空间。

· 支持多种档案系统∶如Minix、Xenix、System V等等著名的 *** 作系统。将来NT的NTFS也会列入支持的。

· 看得见DOS∶这是所谓的透明化(transparency);把DOS的FAT档案系统视为特殊的远程档案系统,不需任何特别的指令便可以灵活运用,就如同一个在Linux底下存在的目录一样。

Linux的发展

近几年的发展,已使得Linux成为微软、升阳的另一大敌手。Linux挟其价格低廉、品质良好与稳定的竞争优势,正无形无影地扩散至众多以PC为主的工作 平台上。早期因缺乏商业性应用软件,单凭学术味道浓厚的工具程序,是无法打入一般商家的主流 *** 作系统的。然而,今日的Linux已非吴下阿蒙,KDE、 Gimp、Gnome等计划相继地开展,为X提供了更多图形接口的桌面 *** 作环境和应用软件。

约1993年左右,Linux首先以发行软 体(distribution)的型态出现。这是一群完整的软件,包含安装程序、核心、应用软件、X、驱动程序等的软件包,经由Internet下载至磁 盘片进行安装。那时的安装程序简陋,难以成功地安装妥当,接口亲和力不足和硬件支持不良是最大的障碍。

后来出现了光驱,光盘片的传播媒体也应运而生,现今Linux厂商所制作的发行软件也都是以此为主要的发行媒介。国内常见的有Red Hat、Slackware和Debian这三种。其中以Debian算是至今仍维持非商业型态的重量级发行软件了,FSF曾经以基金援助过其初阶段的发展。任何人都可以从Debian的FTP站上下载整套的发行软件。当然,象Red Hat这样的商业组织,Red Hat发行软件一样也可以从FTP站上下载,不过如果花一点小钱买光盘片的话,就可以得到额外的技术支持和有用的说明档案。

要得到这些光盘片,最简单的方法便是买有关Linux的书籍,不论中文版或是英文版的书本,书背面都会附上一片载有该公司或组织所制作的发行软件。一般书内多会有专章讲解安装和设定的过程,读者可善加利用。不同的发行软件有不同的安装机制,然而都是Linux。

对国内用户而言,最关切的莫过于Linux中文技术的发展情况了。X窗口系统已有稳定的中文版问世,各种中文输入法和中文仿真窗口也已进入成熟的阶段,相信未来会朝向应用软件中文化的层面发展,使X的 *** 作环境符合国内用户的需求。

Linux的应用

没有商业活动,就没有Linux;没有信息自由的自觉,更不可能有Linux。

Linux除了是优良的软件开发平台之外,也是工作、家居的好伙伴。有人说∶「有了Linux,就等于有了阿拉神灯。」此言不假矣。又有人说∶「到现在还没有移植到Linux的软件,肯定是一点价值也没有的。」这话也不差呀。

Linux的发展证实了信息会愈来愈便宜的趋势;因为便宜,市场便无限扩张。商业活动也转向为以服务为导向的型态。最直接的案例便是ISP的应用。

Linux可以用来架设ISP!

Linux Journal的发行人SSC(Specialized System Consultants)便是以Linux做为网络拨接服务平台的。要成为ISP业者,需要有连接至因特网的能力,多序列阜拨接服务(如 Cycades、Maxspeed、Gtek等公司所提供的软件系统),PPP和SLIP的服务,Usenet新闻群组(如INN),邮件递送(如 sendmail),网页服务器(如Apache),备份功能(如tar、cpio)等等的应用软件。由此观察,主要的控制成本会落在因特网的通讯租费 上,投资Linux的费用是非常低的。

本文摘录自「 Official CLE 0.8 — 中文 Linux 延伸软件包使用指南

大力发展linux软件事业,有助于我国自主软件的开发,保护国家信息安全,并且在国际竞争中赢得一点份额


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7887907.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存