当前位置:首页 » 编程软件 » linux编程入门

linux编程入门

发布时间: 2023-06-09 10:01:51

A. linux快速入门第八章:Shell基础

我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面。Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。当一个用户登录 Linux 之后,系统初始化程序 init 就根据 /etc/passwd 文件中的设定,为每个用户运行一个被称为 Shell(外壳)的程序。

确切地说,Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至编写一些程序。

Shell 处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用。图 1 是 Linux 系统层次结构图,Shell 接收用户输入的命令,并把用户的命令从类似 abed 的 ASCII 码解释为类似 0101 的机器语言,然后把命令提交到系统内核处理;当内核处理完毕之后,把处理结果再通过 Shell 返回给用户。

换句话说:

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 与其他 Linux 命令一样,都是实用程序,但它们之间还是有区别的。一旦用户注册到系统后,Shell 就被系统装入内存并一直运行到用户退出系统为止;而一般命令仅当被调用时,才由系统装入内存执行。

与一般命令相比,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 /etc/rc.d 目录下)都是使用 Shell 脚本编写的。

同传统的编程语言一样,Shell 提供了很多特性,这些特性可以使 Shell 脚本编程更为有用,如数据变量、参数传递、判断、流程控制、数据输入和输出、子程序及中断处理等。

说了这么多,其实我们在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我们的图形界面是 Shell 吗?其实从广义讲,图形界面当然也是 Shell,因为它同样用来接收用户的操作,并传递到内核进行处理。不过,这里的 Shell 主要指的是 Bash。

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell的分类

目前 Shell 的版本有很多种,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它们各有特点,下面简要介绍一下。

最重要的 Shell 是 Bourne Shell,这个命名是为了纪念此 Shell 的发明者 Steven Bourne。从 1979 年起,UNIX 就开始使用 Boume Shell。Bourne Shell 的主文件名为 sh,开发人员便以 sh 作为 Bourne Shell 的主要识别名称。

虽然 Linux 与 UNIX 一样,可以支持多种 Shell,但 Boume Shell 的重要地位至今仍然没有改变,许多 UNIX 系统中仍然使用 sh 作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在 Linux 中,用户 Shell 主要是 Bash,但在启动脚本、编辑等很多工作中仍然使用 Bourne Shell。

C Shell 是广为流行的 Shell 变种。C Shell 主要在 BSD 版的 UNIX 系统中使用,发明者是柏克莱大学的 Bill Joy。C Shell 因为其语法和 C 语言类似而得名,这也使得 UNIX 的系统工程师在学习 C Shell 时感到相当方便。

Bourne Shell 和 C Shell 形成了 Shell 的两大主流派别,后来的变种大都吸取这两种 Shell 的特点,如 Korn、 tcsh 及 Bash。

Bash Shell 是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容,所以许多早期开发出来的 Bourne Shell 程序都可以继续在 Bash 中运行。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。

Bash 于 1988 年发布,并在 1995-1996年推出Bash 2.0。在这之前,广为使用的版本是1.14,Bash 2.0增加了许多新的功能,以及具备更好的兼容性。表 2 中详细列出了各版本的具体情况。

注意,Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的语法)。

本章讲述的脚本编程就是在 Bash 环境中进行的。不过,在 Linux 中除了可以支持 Bash,还可以支持很多其他的 Shell。我们可以通过 /etc/shells 文件来査询 Linux 支持的 Shell。命令如下:

在 Linux 中,这些 Shell 是可以任意切换的,命令如下:

用户信息文件 /etc/passwd 的最后一列就是这个用户的登录 Shell。命令如下:

大家可以看到,root 用户和其他可以登录系统的普通用户的登录 Shell 都是 /bin/bash,也就是 Linux 的标准 Shell,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录 Shell 是 /sbin/ndogin,所以不能登录系统。

笔记:

sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

B. linux软件开发如何入门

1、首先应该熟悉计算机概论与硬件相关知识,提高自己的电脑操作水平;2、掌握linux系统安装,掌握linux系统安装可以更好地了解命令、硬件和软件设备、操作系统、进程等对于操作系统作用凳兆;3、熟记linux常用命令,linux命令是编写编程的基础,熟记linux常用命令可为以耐粗渗后linux学习的进一昌脊步深入打下基础。KaoJiaZhao.Com

C. 新手入门Linux的步骤

很多Linux初学者不知从何处开始学起,怎么学,感觉很茫然。Linux菜鸟要成为Linux高手,要有一个好的学习计划和规划,参加正规培训班,要不然时间花了很多,却没有效果。这里介绍学习Linux的步骤和建议,也可以咨询老男孩教育,希望对初学者有帮助。
准备阶段:(1)了解Linux是什么,有什么优缺点,发展历史和现状,应用领域;(2)赶快找一部计算机,赶快安装一个 Linux 发行版本,要自己亲手安装一遍Linux操作系统(包括虚拟机的Linux环境和完整真实的Linux环境);(3)熟悉Linux环境和Linux基本操作
菜鸟阶段之选教程:选择一本好的工具书工具书对于学习者而言是相当重要的。如:跟老男孩学Linux运维,linux就该这样学等。
菜鸟阶段之系统命令:Linux命令是必须好好学习和经常使用,而不要经常去使用菜单操作。一定要养成在命令行下工作的习惯
中级阶段之命令行习惯:养成在命令行下工作:一定要养成在命令行下工作的习惯,要不然没法成为高手
中级阶段之Linux系统结构理解、语言编程与英语:C语言、C++,QT,shell,makefile,java,vi编辑器使用。这些至少要精通一两门编程语言吧
高级阶段之网络编程:Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。要增加自己Linux 的技能,只有通过实践来实现了。所以学习Linux也一样,如果你无法经常学习的话,学了后面的,前面的忘了。你对Linux命令熟悉后你可以开始搭建一个小的Linux网络,这是最好的实践方法。 当然你不需搭建所有服务,可以慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可。学好了学好学精了Linux的网络编程,可以肯定的告诉你,你已经是一个非常优秀的Linux人才或者“Linux高手”了
高级阶段之嵌入式编程、底层驱动编程与内核源码:成为Linux高手的重要的方向

D. 如果想学Linux,应该怎么学

学嵌入式Linux要先学以下几点:
1.C语言。要有C语言的基础,当然越熟练越好,不熟也没关系,具备基本技能就可以:比如写一个数组排序、输入数字求和什么的。C语言的学习就是多些多练。
2.Linux基础
Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell、 Makefile脚本编写等知识,嵌入式开发环境的搭建。
3.Linux系统编程
重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
4.Linux网络编程
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
5.数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
6.Cortex A8 、Linux 平台开发
通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
7.驱动开发
驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。

E. Linux 该怎么入门呢

入门的话找本不用太厚,你能看懂的书来学习,再厚你看不懂,掌握不了方法也是白搭。
我看过同事以前培训教材,某某青鸟的linux书,里面是关于Centos6系统的一些介绍,
基本上都是简单易学,学习一些方法还是可以的。

但是要注意Centos7以后的命令语法,有部分改变了不少,甚至完全不太一样,
建议从7开始学吧。

另外就是对着书不停地练习,不管是学习使用命令,还是修改配置文档,过程中会遇到各种各样的问题,
遇到问题解决问题,不管是翻书还是网上网络,直到把问题解决了,掌握的知识点要做好笔记,不断
地积累,学习一段时间,你就会感觉即使用遇到新问题都有办法解决。

linux种类有不少,Centos是跟redhand有点类似的,其它的还有ubuntu,debian,
国产的还有UOS,deepin等等,基本命令都差不多,也有些是自身系统特定的格式,
不过都差不多。看你只是学习,还是以后工作也要使用的,找一个适合自己的来入门。

F. 零基础该如何入门学习Linux

零基础学习Linux有两种方式,一种是自学,另一种是系统学习。无论哪种方式学会掌握Linux知识都不是一件容易的事,以下是老师对入门Linux同学的几点建议:
1、想要学习好Linux就要将它当成兴趣,兴趣才是最好的老师。良好的兴趣才是学习成功好的开始,想要学习好首先就要足够喜欢它。我们要了解市场上Linux的发展势头,了解Linux的相关情况,相信学习好Linux一定要是非常不错的选择。
2、学习合适的Linux发行版本,在开始学习Linux之前,首先就是选择一个适合自己的版本,Linux旗下发行版本有服务器版本以及桌面版本,而且桌面版本也可以做服务的,为了以后找工作需要的。常见的Linux发行版本有centos redhat ubuntu等。
3、选择好Linux学习版本之后,还需要合适的学习资料以及内容,可以寻求专业人员的学习机器以及学习手册,了解真正相关的知识。
4、学习Linux架构以及命令,linux下都是通过命令来执行的,要学会用man和命令帮助,熟悉各种常见命令的操作。
5、学习shell脚本,对于专业的Linux人员来说,shell脚本是必须要掌握的。shell脚本是linux下强大的工具,可以通过各种命令组合完成自己的工作,提升自己的工作效率。

G. linux入门先学什么

随着网站承载量需求越来越大,很多都将空间搬入了云空间。从而让云计算工程师的受热程度呈直线上升,IT从事者或者学生都想进行学习linux云计算,不过很多人还是对于云计算学习属于摸黑境界。今天给大家科普下:如何入门学习linux云计算?

Linux操作系统相比于十年前的普及程度已经有了大大提高,但是由于其桌面操作系统上的可视化窗口操作模式并不像Windows操作系统那样直观、完美,对于一些刚接触Linux的人或者初学者来说入手还是有一定的难度,所以其发展并不是那么迅速。

但是近年来Linux已经越来越受到重用,它不再仅仅是一些开源发烧友们之间炫耀资本,而且已经在多方面价值得到了体现,尤其在服务器操作系统方面,已经成为资深运维工程师的首选的操作工具。

随着计算机行业的迅速发展,相信Linux操作系统将不仅仅只停留在平台应用上,他将会在更广的空间展现他那独有的优势与魅力。

现在对于大多数中国的电脑用户,很少有人自己用Linux操作系统的,而且还有相当一部分人甚至是第一次听说Linux。但这并不奇怪,即使在很多大学生眼里也大都如此。在你们眼里只有Windows,只有微软,比尔盖茨是你们大多数人的偶像。那是微软先入为主的观念造成的,就如我们学习英语一样,如过我们生下来就用英语讲话,周围的人说的也都是英语,那么英语也就自然而然的学会了。而且像汉语一样受我们喜欢。下面尚观教育小编给同学们好好聊一聊。

1.忘掉Windows的思维方式

我也看过很多有关学习Linux的方法,第一部分基本都是告诉你怎么安装双系统,怎么便利学习。我也是如此,在自己台式机上安装了双系统,但是学习效果并不明显,百思不得其解,一次看到破釜沉舟的故事颇有启发,项羽前锋军救巨鹿,初战少利,项羽便率大军渡过漳河,破釜沉舟以激厉士气。终于杀苏角,虏王离,大败秦军于巨鹿之野。 楚霸王当初能够战胜并不是说他占了多么有利的优势,而是他那一往无前,义无反顾的决心。

当装了双系统以后,只要遇到一些问题,就会快速切换到Windows操作系统来查资料,这样虽然便利了我们学习,但是我们的大脑却对问题缺少了思考,基本都是去网络知道,问问什么的查,虽然当时解决问题了,但是过后在回忆当时是怎么解决问题的,脑海却是一片空白。我们装的双系统给自己带来便利的同时也给自己找了太多的借口,到头来却没了学习下去的勇气。

所以后来我把我自己的电脑只安装了Linux操作系统,做什么都从上面去做,逼迫自己学安装浏览器,播放器,文档编辑器,等自己一步步的走过来,才发现,有的时候不是我们没能力去办好一件事,而是我们再没办事之前就给自己想好了各种退路。彻底忘记Windows思维方式,在一个只有Linux操作系统环境下生活。

如果你想系统的学习Linux,你必需清楚的认识到这一点。如果你真正想系统的学习linux,想用Linux有所作为,那么请忘记Windows的思维方式,思想性的转变比暂时性的技术提高更有用, 而思想上的改变往往是受到我们行动所影响的,有不懂的问题就自己思考,查资料, 实在不会再去找别人的电脑去查,这样就加深了我每次对问题的理解,慢慢感受和习惯Linux的操作方式,总有一天你会真正体验到他的奥妙所在,从而从自己内心深处喜欢他,使用他,而不是为了赶时髦或向人炫耀而使用他。

2.眼要精、笔要动、手要勤

a.多看一些学习Linux方面的书。要抓住精髓,不要贪多嚼不烂。

b.多做笔记,好记性不如烂笔头。

c.实践出真知。很多时候我们都是嘴上功夫,而到了真正自己搭建的时候就会发现自己其实一无所知。

3.要用心学习Linux。

经常看到有人问用什么版本的Linux好,其实只要你认真学习无论什么版本都挺好的。要知道,开发Linux发行版的人都是通读过Linux内核代码,对Linux原理极其精通的人,而且每一个开发团队都对他的发行版做过测试后放出的。那些国际知名的大品牌更是如此。

因此,讨论什么版本好并无意义,关键是你是不是真心想学。不过,为了避免曲高和寡,最好选用的人多的版本,比如RedHat CentOS等等。学习Linux不是逛自由市场,选定版本就要静下心来学习。不要今天换版本明天要升级。这样对你没有好处。例如有些人号称用过十几种甚至几十种Linux,向人谈论起来头头是到,好像懂的很多,但是如果你让他去用Linux搭建一个Web服务器,他就什么都不会了。他们把时间都浪费在了版本的转换上了。

4.不能盲目学习

要熟悉了计算机专业英语,高中毕业的水平就可以轻松的阅读计算机文档了。如果你的英语实在太差了,连最简单的计算机英语文档都看不懂,那么在学习Linux的同时,请赶紧学习英语。

如果你想深入学习Linux,看不懂英文文档实在是太难了。写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。你去看看各大软硬件生产商的官方网站,有哪一个不是用英语作为其主站的?长期用Windows的人会很不习惯这一点,装个软件还要看半天文档,因为Windows用起来实在太简单了。但是如果你想学习Linux就必须学会看各种文档,而大部分的文档都是用英语写的。

现很多人甚至连man文档都不会看,有什么命令不会用了就跑到论坛上来问,还装出一副可怜相,乞讨一个命令的用法。有这些时间还不如自己看看man文档,即使你一个一个单词的翻译成中文再自己看都比问别人强,因为别人的回答再怎么详尽都比不上man文档详尽。安装一个新的软件时先看Readme,再看Install然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。否则,说明文档都不看,结果出了问题再来找答案反而浪费时间! 古人说欲速则不达就是这个道理!

5.多记Linux命令

当你经过一段时间的学习后就应该扩充自己的知识,多学习Linux命令,但是不要在初学阶段就系统的学习Linux命令,初学阶段只要把上课时候学习过的命令练熟就可以了。

这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的。

在Linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大。通过学习Shell编程,能让你掌握大量的Linux命令。另外,买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比查man文档快。特别适合英语不好,看不懂man文档的人。

在Linux中,命令可分为系统基本命令和应用程序命令。系统基本命令是所有的Unix类系统都支持的命令,走到哪都不变,只要是Unix类系统上就肯定有。

6.深究Linux系统结构以及Linux系统的管理

等你对Linux有了一定的认识后,知道了/etc下那些配置文件有什么用,就可以去了解系统结构了。了解系统结构不是要你去看什么文件夹放什么内容,而是要学习一些原理性的东西。比如系统是如何引导的,引导后启动了那些东西。系统中哪些是最基本的库文件,有什么用等等。

接下来就可以进一步学习管理系统。比如学习配置各种网络服务器,用Linux搭建网络,这些都是学习Linux系统管理和网络管理的好方法。 到了这个阶段就可以经常上网查查资料,看看论坛精华区文章,论坛可以让你学到一些小知识,小技巧。

7.多看看关于计算机相关的专业课程

如果你不是计算机专业的,而想把linux学好,就一定要学习专业课程。学习微机原理,操作系统,计算机网络等等专业课程是必需的。为什么同时开始学习linux,有些人学的非常快,不到半年就成了高手,有些人玩来玩去还玩不出名堂,玩了一两年还是菜鸟? 因为那些学得快的人有基础,他们都学过专业课程。同样一篇文档,没有基础的人可能看了三遍还不明白,基础扎实的眼睛扫两下就懂了! 这就是专业和非专业的差别! 因此,要想达到更高的境界就一定要学习基础的专业课程。

8.保持虚心的学习态度

天外有天,人外有人!保持虚心的学习态度不仅能让你学到更多知识,而且会让你受人尊重。

保持这八点,配合马哥教育梳理linux学习路线进行学习,避免走弯路,从而先人一步进行学习。

热点内容
腾讯云服务器购买网址 发布:2025-02-11 21:37:46 浏览:60
安卓电话视频怎么投电视上 发布:2025-02-11 21:32:27 浏览:18
易签到源码 发布:2025-02-11 21:31:03 浏览:498
编程班会 发布:2025-02-11 21:27:19 浏览:738
ubuntu编译fortran 发布:2025-02-11 21:21:59 浏览:201
云服务器宽带单位 发布:2025-02-11 20:48:11 浏览:538
安卓数据线公头是哪个 发布:2025-02-11 20:45:42 浏览:812
网址原始密码是什么 发布:2025-02-11 20:33:52 浏览:72
怎么创建服务器我的世界网易 发布:2025-02-11 20:18:36 浏览:467
服务器电脑与客户端的连接 发布:2025-02-11 20:18:32 浏览:36