搜索
查看: 10769|回复: 131
收起左侧

[讨论] Hello , Linux(一):初入Linux的世界

  [复制链接]
root1605
发表于 2017-11-5 02:14:31 | 显示全部楼层 |阅读模式
本帖最后由 root1605 于 2017-12-2 02:13 编辑
Hello , Linux(一):
初入Linux的世界




                                              目录

                                              Ⅰ 前言&提醒
                                              Ⅱ Linux的传奇之路
                                              Ⅲ Linux的桌面环境
                                              Ⅳ 什么是Shell
                                              Ⅴ对Linux认识的一些常见误区

By root1605
来自bbs.kafan.cn



第二篇:Hello , Linux(二):Let's Start !
http://bbs.kafan.cn/thread-2109639-1-1.html

评分

参与人数 10原创 +1 人气 +13 收起 理由
hstmodo + 1 版区有你更精彩: )
走丢啦 + 1 精品文章
4毛5的诺顿 + 3 版区有你更精彩: )
翼风Fly + 1 版区有你更精彩: )
snakebone + 1 版区有你更精彩: )

查看全部评分

root1605
 楼主| 发表于 2017-11-5 02:14:32 | 显示全部楼层
本帖最后由 root1605 于 2017-12-28 17:57 编辑
Ⅰ 前言&提醒
     Linux是什么?在电影中的“黑底白字”的命令行?“黑客”的专用系统?在很多人看来,有很多“大神”用Linux作为操作系统,所以也“向往”Linux,但“有大神用Linux不代表用Linux的都是大神”,如果真正学到一些知识,无论Windows还是Linux,都可以当“大神”(当然,指的是了解一些基础知识,熟练的使用,加懂些操作系统的简单原理)。如果想要接触一项新事物,就要谦虚的学习,使用Linux而反过来鄙视其他操作系统没有任何意义,在Linux上听音乐和在Windows上听音乐并不存在高下。你可以在Linux上学到很多东西,但是同时,Windows上也可以学到很多东西。
     本系列文章主要涉及Linux的基础知识,主要面向对象是对Linux感兴趣的系统爱好者,。折腾没有错,但正确的理论必不可少,否则你可能是反复卸载安装系统,从一个发行版到另一个发行版,从一个桌面环境到另一个桌面环境,费力地配置Wine环境,结果最后连“挂载点”这样的基础概念也不知道。
     这些文章并不局限于某一Linux发行版本,不会涉及架设网站服务器,配置群集等等,更不会涉及所谓黑客技术,主要是面向个人桌面端相关的只是。并没有哪一本书可以让你从入门到精通,这些文章同样没有神奇的本领,但你可以因此对Linux有基本的了解,并能够在日常场景中熟练使用它。
     友情提示,对于Linux的文件系统,启动引导等内容会在以后讲述,如果现在就想安装Linux操作系统,建议使用虚拟机或者一台空闲的计算机,Linux安装本不危险,但可怕的是所谓“实践中学习”,尤其你在Windows就有随便执行网上流传的命令行而不管懂不懂,或者任意修改关键配置文件的习惯。随意操作,你的数据很可能会丢失(而且不像Windows上那么容易通过软件恢复),也可能经常导致系统无法引导,一遍又一遍重装,最终丧失学习的热情。各个常用的发行都可以使用,比如Deepin,Ubuntu,Linux Mint,Cent OS等等(排名没有顺序)。

     楼主不是Linux爱好者,也不是所谓“软粉”,如果有任何问题,会尽可能地改正。有问题我会尽力回答,但关于“Linux和Windows哪个好”,“怎样配置Windows和Ubuntu双系统”,“哪里有破解版的CrossOver”,“怎样在Linux下运行英雄联盟”之类的问题一概不予解答,还请谅解。


Ⅱ Linux的传奇之路
     可能之前你也试着了解过Linux的历史,但却因各种词汇而感到无所适从,什么UNIX,BSD,GNU,FSF,GCC之类的术语,半天也理不出它们之间的关系。虽然不知道这些内容暂时不影响你使用Linux,但就像使用Windows不知道它是Microsoft的产品一样,所以这里有一个简单的介绍(肯定不是复制百度百科之类的,那样也真看不懂)。
     提到Linux不能不提到UNIX,不要惧怕众多的名词,它们之间的关系并不复杂,而且你无需一次性理解它们。
     在1969年,有一个叫做Multics的操作系统项目失败了,于是AT&T公司的Bell实验室聘请Ken Thompson与Dennis Ritchie开始编写一种新的操作系统,这个操作系统就是UNIX操作系统,其设计目标之一就是“移植性”,即在不同的硬件平台上都能运行,但是早期的UNIX大部分用汇编语言编写,要想做到可移植很难,经过一系列的努力,Dennis Ritchie和Brian Kernighan设计了大名鼎鼎的C语言,在1973年,UNIX由C语言重新编写。至于为什么可以移植,这里做个简单的说明,因为汇编语言是平台相关的,各个平台的指令可能有差异或者压根不通用,而C语言程序不能直接被计算机执行,需要经过编译器(把人写的代码转换为机器码),而编译器可以根据不同的平台生成不同的机器码。
     在早期,UNIX操作系统是在一个公共社区中逐渐发展壮大的。在1975年,UNIX V6成为Bell实验室之外被推广使用的UNIX版本,这个版本源代码也是公开的,加利福尼亚大学根据这些代码编写了一个UNIX的变体,被称为BSD(Berkeley Software Distribution),在以后的十年中,BSD和UNIX都在发展着,从1979年Unix的版本V7开始,UNIX禁止大学使用Unix的源码,这意味着UNIX已经被AT&T商业化,而BSD并没有,它依然是以自由流动,代码共享的方式发展着(和之前的UNIX版本一样)。在1980年,与UNIX源代码和商标等的诉讼案件非常多(与主题关系不太大,所以不长篇讲述了),这种局面促成了一个新的组织:Free Software Foundation(自由软件基金会,以下简称FSF)。
    FSF的一个很重要的工作就是执行GNU计划,GNU(GNU's Not UNIX的缩写)计划的主要目的是编写UNIX操作系统,使其变得自由使用分发等。刚开始,GNU计划并没有实现一个用的了的内核(虽然有一个GNU Hurb项目,但它没能成功),但它却编写了很多免费的软件,用来替代UNIX上的一些专有软件,虽然是免费的,但不意味着它们质量很差,反而是,有些时候比原始的UNIX版本更好。
    随着开源软件的不断发展,GNU软件项目也创建了GNU Public License,即GPL协议,有关于开源协议的内容,此处暂不展开讨论。
    1991年,Linus Torvalds还在芬兰上大学的时候,正在使用Minix(类似于UNIX的一种操作系统),但他想“超越Minix标准许可证”所规定的内容,于是决定自己实现一个操作系统内核,他在comp.os.minix新闻组张贴了以消息,大意就是编写一个免费的不受任何限制的操作系统,实际上,第一版的Linux没有可移植性,因为使用了大量的汇编代码。而Linux 0.02版中,由于很多其他的开发人员致力于Linux的可移植性,使用了C语言改掉了原始版本中的大量汇编代码,这样就可以移植到其他计算机中了。Linux内核实在GPL协议下的一个类似于UNIX的开源操作系统内核,当然,类似并不意味着抄袭,它不受UNIX的种种羁绊,而可以由任何人自由的分发使用,但是对软件进行重新修改,修改版本必须也遵循GPL协议(GPL协议强制要求修改衍生GPL协议下的软件也必须开源,但并不是禁止作为商业软件发售,只是没人这么干而已,因为不能限制用户自由分发)。GPL协议不是“君子协定”,在中国依然有法律效力,有些公司,机构,个人违反GPL协议没有追究不代表不能追究。
    从技术上讲,Linux只是一个内核,但是通常也可以用来指代各种发行版。因为光光一个内核并不能直接帮你完成一些工作,所以就有了各种Linux发行版,可以理解为利用了Linux内核构建的可直接使用的操作系统。


   Ⅲ Linux的桌面环境
     你可能觉得操作系统有一个图形化窗口是在正常不过的了,但是有些Linux操作系统没有图形化界面,比如文件服务器或者Web服务器,因为它们根本不需要图形化界面,为了节省资源,降低维护成本,只提供了命令行模式的操作,比如,如果你使用了Ubuntu Server,默认状态下是没有图形化界面的,但可以自行安装。
      但是在个人应用领域,常见的Linux发行版都有图形化界面,而且还包含了大量的实用桌面软件,即使没有预装所需要的软件,依然可以通过各种渠道安装。一般来说,每一个提供了图形化界面的Linux操作系统都是基于 X Window,暂时把它当作桌面的 “核心”(实际上它不是Linux内核的一部分),它管理着窗口功能和显示,以及接受键盘,鼠标等设备的信号再处理。
X Window 以一种Client/Server的模式在运转。它仅仅是一个服务端(不要总认为就是网站服务器),桌面的表现形式不是它来决定的。我们使用的Linux桌面应用,如FireFox,QtCreator之类的,都叫做“X客户端”,它们会连接到“X服务端”,并请求服务端显示(绘制)窗口。当然,仅仅这样还不够,X 服务器会把用户的信号递交给客户端,让其做出相应的处理(实际上X客户端并不一定是窗口应用,但目前不需要了解为什么)。
      X Window不是直接的桌面环境,在Windows上,一般只会有一种桌面环境,但是在Linux不一样,你可以安装很多个桌面环境,它们的风格也各不相同(不过不要真的同时安装多个,可能会冲突)。
     常见的桌面环境有GNOME,KDE,MATE等,以及较轻量的Xfce,LXDE等,这些桌面环境和X Window的关系是,它们是基于X Window。一般安装常见的Linux发行版后,系统已经帮你配置好了桌面环境,在安装系统前,应该选择好镜像,比如想使用有KDE桌面的Ubuntu,就可以选择Kubuntu(这不是绝对的,安装好后如果想使用GNOME桌面环境,配置是很简单的)。


Ⅳ 什么是Shell
      不要害怕“Shell”这个词语,把它和“黑客”“入侵”之类的内容联系在一起。在很久以前,在图形化界面还没有占领计算机的时候,需要输入文本格式的命令与计算机交互。在UNIX中,有一种解释命令的程序,被称做Shell,在Linux中也是。
如果简单的把系统分为内核(Kernel)和外壳(Shell),那么外壳是负责接收用户的指令并传递给内核的处理的,如果需要处理后的数据传出,也得经过外壳。有时候我们所说的Shell也可以指图形化的用户界面,毕竟它也算是外壳(这句话不是十分严谨,此处仅作理解只用),但更多的时候谈到Shell,不包括图形化的界面。
Shell接受来自用户的指令,经过解析后,传递给系统执行,之后系统在反馈给用户信息,这就是Shell。不光是Linux上有Shell,Windows上也有,比如Windows PowerShell。Linux各个发行版一般都包含了很多种类的Shell,比如C Shell,Korn Shell,Bash Shell等,因为它们功能类似(不是所有的Shell都功能类似,这里指的是常用的),所以只介绍Bash Shell一种,使用方法其实都大同小异,熟悉一种的话,稍加学习即可切换到另一种。

      在你的Linux发行版上,打开“终端”(不同的发行版可能名称不一样),就会出现一个文本命令窗口,这个窗口一般默认接受Bash Shell的命令。如需要切换到自己喜欢的Shell,比如Python,输入python即可,如果没有安装相关的Shell,可以自行下载安装,由于怎样安装软件这篇文章不会介绍,所以请自行搜索方法,或者先使用Bash Shell。

      可能你觉得使用Shell是多此一举,因为已经有桌面环境了,还对着这个黑窗口干什么?当然,你只是拿Linux听音乐,看电影,一般就不需要Shell了,可当进行系统管理的时候,如果该发行版没有提供某项设置的图形界面,就需要Shell,一些功能在图形界面很难或无法实现,比如,筛选出/home文件夹中所有名称满足“数字+一个英文单词+日期”且修改日期在2017年9月1日之后的文件并列表,这对于仅使用图形化桌面几乎是不可想象的任务,一般只能通过人工筛选,或者借助第三方软件(如果有的话)。Shell中可以使用编程语言中的各种结构,比如选择,循环等等,还可以调用一些第三方的库,十分方便而简洁。借助Shell,可以很轻松完成一些自动化的工作等。
其实“命令行恐惧症”是没必要的,它不是混乱邪恶的C++(开个玩笑),用法很简单,不要担心背命令,楼主认为这没有必要,常用的命令,用的多了自然会记下来,不常用的,用的时候再查就行了,反正帮助系统十分发达,至少不需要你去查图书馆某项命令怎么用。
虽然在终端中输入命令,输一条执行一条,下一次再打开终端就没有以前的命令了,但是假如一些命令需要重复执行,不想每次都输一遍,怎么办呢?其实把命令保存成文本文件,每次运行这个文本文件就可以了,这个文件称为脚本。下图是一个Perl语言写的脚本,用来安装VM Tools。
     如果你此时有Linux发行版,可以尝试着执行以下的命令(不会修改系统配置,仅是演示),现在不需要看懂它,最后一个是Python脚本。
  1. #/bin/bash
  2. i=0
  3. for  name in *.*
  4. do
  5.      b=$(ls -l $name | awk '{print $5}')
  6.     if test $b -ge $a
  7.     then i=$b
  8.          namemax=$name
  9.      fi
  10. done
  11. echo "the max file is $namemax"
复制代码
  1. #/bin/bash
  2. echo "No Password User are :"
  3. echo $(cat /etc/shadow | grep "!!" | awk 'BEGIN { FS=":" }{print $1}')
复制代码
  1. #!/bin/bash
  2. echo  "please enter three number:"
  3.   read -p "the first number is :" n1
  4.   read -p "the second number is:" n2
  5.   read -p "the third number is:" n3
  6. let MAX=$n1
  7. if [ $n2 -ge $n1 ]; then
  8.     MAX=$n2
  9. fi
  10. if [ $n3 -ge $MAX ]; then
  11.      MAX=$n3
  12. fi
  13. echo "the max number is $MAX."
复制代码
  1. #!bin/bash
  2. read –p "please input a username:"  USER
  3. if cut –d:-f1  /etc/passwd | grep "^$USER[        DISCUZ_CODE_3        ]quot; &> /dev/null ;then
  4. MYBASH=`grep  "^$USER:"  /etc/passwd | cut –d :  -f7`
  5. echo "${USER}'s shell is $MYBASH"
  6. else
  7.   echo "$USER not exists."
  8.   exit  4
  9. fi
复制代码
  1. #!/usr/bin/python
  2. import re
  3. line = "Cats are smarter than dogs";
  4. matchObj = re.match( r'dogs', line, re.M|re.I)
  5. if matchObj:
  6.    print "match --> matchObj.group() : ", matchObj.group()
  7. else:
  8.    print "No match!!"
  9. matchObj = re.search( r'dogs', line, re.M|re.I)
  10. if matchObj:
  11.    print "search --> matchObj.group() : ", matchObj.group()
  12. else:
  13.    print "No match!!"
复制代码


Linux认识的常见误区
1.Linux是用来编程的,Windows不适合拿来编程
      首先要看你是怎样”编程“,举个例子,你要学习C++语言,是一个从cout<<hello world<<endl;开始的人,这两个平台并没有什么大的差异,想学习命令行编译,这两个平台都有,想使用IDE的话,Windows上有强大的IDE Visual Studio,只是你可能暂时没有能力接触很多的高级功能。有人说Windows屏蔽了”代码是如何生成的,makefile怎么写“,其实只是Visual Studio给你封装好了加快你的工程进度而已,想看的话也完全可以看到。在Linux下如果使用IDE,也可能不会直接看到”。
      如果你是某一领域里的编程人员,选择哪个平台,往往是工作性质所决定的,比如,从事Windows内核驱动开发相关职业,去用Linux是自找麻烦,如果是专门编写Linux桌面应用的人员,也许选择Linux会方便一点,至于有些人说的“Windows 配置开发环境没有Linux下方便”之类的问题,有些情况下也存在,有些东西不是Windows上不能做,而是太麻烦,Linux亦然,Linux和Windows都作为工具,都应该为人所利用,如果Linux能够提高你的效率,那么你就适合Linux,如果你的工作在Windows 下完成更为简便,那么就选择Windows,本来很简单的道理,让Windows似乎成了编程的禁地,那么,数量那么庞大的Windows应用程序是怎么出来的?
      如果你想学习操作系统原理之类的课程,那么Linux可能更适合你去研究,不过,在学习之前,必须要有相关专业知识的储备,并不是你有Linux内核的代码,你就可以读懂,并成为熟悉操作系统内核的人,指望着光看源代码来学习操作系统,很难。Windows也有一些代码在传播,比如WRK(Windows Research Kernel),仅仅是学习操作系统原理的话,已经够了。当然,在有能力学习操作系统内核原理时,Linux是一个更好的平台。
2.关于Ubuntu Kylin
      Ubuntu Kylin不是国产操作系统,开发人员也从没有说过这是国产操作系统,它只是一个普通的Linux发行版本(Ubuntu官方的一个中国定制版),但是融入了一点中国元素,考虑了下中国人的使用习惯而已。至于其他”麒麟“系统,这里不多说,请自行搜索相关信息。

3.Linux的安全性稳定性比Windows好
     这个结论又很武断了。Linux内核的稳定性也许比Windows好,但不代表Linux的各个发行版都比Windows好,而且不同版本的Windows和Linux稳定性都不一样。稳定性有时候不光靠操作系统,也得看使用的人。     给普通用户感觉Linux比Windows安全的原因是很少听到Linux病毒的爆发,也很少有所谓流氓软件。有一个原因是桌面端用户Windows占了绝大部分份额,不是因为Linux的安全性。如果国内有一半的个人电脑用Linux,那么在Windows上出现的同样会上演。

    由于这系列文章才刚刚开头,所以有些对Liunx的误解暂时无法在这里解答,会在以后讲述相关知识后再提。虽然本文的内容不多,但对于第一次接触Linux系统的人来说,已经有大量的信息需要去理解。本文到此结束。



风之咩~
发表于 2017-11-5 02:53:53 | 显示全部楼层
本帖最后由 风之咩~ 于 2017-11-5 04:40 编辑

对linux了解不多 偶尔手机终端用用基础命令
以网上看到的大多数人和现象 好像并不是为了用而用 大多都是纯属觉得高端
刚换上的人 除了最初的狂热 还会演化出几个不同派系



一种是纯粹以Win的思维 不管是操作 使用习惯 或者是软件 全是找Win下知名的
使用习惯或者遇到问题也以Win的眼光来评判 觉得明明Win怎么怎么样 你这怎么怎么不样
Linux是不输于Win的等量级系统 都是各有优点的存在 如果只是尝鲜 玩玩就行了 没必要太过计较
刚开始不习惯依旧可以继续用Win完成生产和娱乐 偶尔切进去尝试Linux换换使用风格也不错
而真心想探索Linux的世界则更该丢掉固有的思维 尝试接纳
不要觉得Linux就该靠近Win进行发展 它们本就是不同的 用先入为主的思维拿来比较没意义

而当这一类接触到以贴近Win使用习惯 可使用Win下的exe为宣传的国产皮Linux版本 那可算是找到窝了
就和我上面说的一样 做Linux为啥就要以仿Win为卖点的? 用户间的交流和推广语全是"这个版本不错的 可以装QQ 有搜狗 也可以xxx清理加速"
全是以Win的标准 能干Win下的什么什么 操作习惯界面和Win下一样云云
这种总能让我联想到很多在外发展多年 本来挺好的些玩意 一到我们这 就会演化出成自有我国情在的本土特色版本
为了迎合那些想要显得高端 与众不同 又不愿意真正投入改变的 打出"类Win操作" "可运行exe"标语
成效挺不错 时不时能在Win求助贴里看到有人来上那么几句"早就不用Win了 转用xx好久了 可以用QQ 搜狗 WPS 能运行exe 操作习惯也一样"



还有一种则和上面相反 一开始就会非常积极的用Linux下已有应用来接替自己曾在Win下的使用环境 这当然是没什么问题的
有些不计后果的 抛弃QQ 抛弃微信 否定Win系的一切 划清界限 觉得用Win就是低端的极端主义
网上谈起一点和系统或者软件方面擦边的东西就"不不不 我不用Win的 不开源的系统和不开源的软件 坚决抵制"
我指的并不是Linux的正统使用者们 也不是说离开了这些社交软件不行

针对用一个“装”字就能贯彻 打肿脸也要表现的和常人不一样 我现在已经改用Linux了 我和你们不一样了 你们这些用Win的弱鸡
同学 咱这样硬撑累不累啊 大家都等着你上线开撸恰鸡呢 差不多就得了 你那youtube页面都快被你上下滑烂了也没见你整出啥核心价值观视频呀






插个题外话 对以上类型看法是我个人观点 我属于比较爱较真的类型 通俗点说就是闲的撑的
就拿个例子说 端游的FPS或者MOBA 纯粹为了移植而移植 丢掉大多数细节转化而来的手游 我都会觉得玩的人emmm 总之就是那方面的意思
而每次当我尝试给她们讲解自己的观点看法 希望别什么货都接受的了的时候 换来的大都是不以为意或者一脸看蛇精病的表情
也许我属于是少数派或者真的是有病吧 这观点大家看看就好 仁见仁 智见智
语言没怎么整理 我自己思路都没能太理顺 里面的意思能出个几分... 随缘吧

评分

参与人数 6经验 +10 人气 +5 收起 理由
hstmodo + 1 版区有你更精彩: )
翼风Fly + 1 版区有你更精彩: )
绯色鎏金 + 10 版区有你更精彩: )
随便注册 + 1 用××装逼,有的是会这个,有的是只会这个
pal家族 + 1 神马都是浮云

查看全部评分

为你心碎
发表于 2017-11-5 08:59:19 | 显示全部楼层
又出精品了

评分

参与人数 1人气 +1 收起 理由
root1605 + 1 版区有你更精彩: )

查看全部评分

翼风Fly
发表于 2017-11-5 09:18:00 | 显示全部楼层
本帖最后由 翼风Fly 于 2017-11-5 09:38 编辑

对楼上两位的发帖时间表示担忧...

对于操作系统这种工具,如果只是喜欢折腾着玩倒也不错;但是不要忘了,工具只是工具,最主要是用来解决问题。离开实际场景,事倍功半。
并不是给你一把屠龙刀你就会有屠龙术,也并不是你会Ps就会懂设计。

工具、方法、手段,这些要尽可能拆解开,并考虑应用场景与解决什么样的问题,否则可能只是工具的奴隶
有个好玩的小故事:
https://www.zhihu.com/question/24904298


对了,这里呼叫一下:
@ubuntu2011

@woodelf  

一双拖鞋
发表于 2017-11-5 09:59:44 | 显示全部楼层
学知识需要自制力、专注力、培养习惯。
binghe3337
发表于 2017-11-5 10:11:26 | 显示全部楼层
看到讲桌面环境我就进来了,至今还没碰过桌面环境。
我最初学Linux是为了维护一台服务器。当时借了一本«Unix和Linux权威指南»,里面讲的全都是命令行下的操作。后来别人送了个树莓派,我也只是在shell环境下折腾。今天看到楼主分享桌面环境的经验,我也好好学习一下。
hjq447285628
发表于 2017-11-5 10:17:54 | 显示全部楼层
在首页看到这篇文章还以为什么时候加了Linux区
woodelf
发表于 2017-11-5 10:40:52 | 显示全部楼层
围观,花里胡哨的背景加各种颜色的字体,很想知道LZ现在多大

评分

参与人数 1人气 +1 收起 理由
翼风Fly + 1 淡定....

查看全部评分

root1605
 楼主| 发表于 2017-11-5 10:46:25 | 显示全部楼层
本帖最后由 root1605 于 2017-11-5 10:50 编辑
woodelf 发表于 2017-11-5 10:40
围观,花里胡哨的背景加各种颜色的字体,很想知道LZ现在多大

去问翼风好了…………@翼风Fly
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛|优惠券| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2018-2-26 11:07 , Processed in 0.133005 second(s), 23 queries .

快速回复 返回顶部 返回列表