热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxls不能用_进入Linux世界大门的第二步——HelloWorld

前言上一篇文章(醉卧沙场:进入Linux世界大门的第一步——安装系统),我们让一个从没有用过Linux系统的人安装了系统。那
4e475052ca6ec0ca56d9a603a1576c10.png

前言

上一篇文章(醉卧沙场:进入Linux世界大门的第一步——安装系统),我们让一个从没有用过Linux系统的人安装了系统。那么现在你应该已经boot成功,进入了你的Linux系统。相信很多初次使用Linux的用户,最关心的就是怎么在Linux上编程。可能你是刚刚学C语言的小伙伴,也可能是一个有经验的Windows Visual Studio使用者。不过你是什么,来到一个新世界的第一件事让我们从"Hello World"开始。

本文将:

  1. 讲述基本终端操作,抛砖引玉,为进一步学习做铺垫。
  2. 讲述如何简单的使用编辑器(编辑、保存、退出)。
  3. 讲述如何编译执行一个简单的程序。

以下极其简单,仅适用于第一次打开Linux系统后不知所措的人。

打开终端

Linux系统启动后,第一次登录可能会经过一系列初始化设置(选择语言、输入法等),然后展现在你眼前的是一个全新界面:

f4fb326ee8227c887515afffd8d79909.png

由于我们上一篇文章是以Fedora为例子讲的,那么下面我们继续以此为源,继续讲。我这里是一个Gnome的桌面(其实我喜欢KDE),你也可能面对的是不同的桌面环境,不过这并不重要。我们首先要做的第一步就是找到一个虚拟终端并打开它。针对我当前的环境,我只需要点击左上角“活动”然后在搜索栏里搜索“term"(不用打全了就能找到):

b922d83865024316d8b9ce92ba59a027.png

我们把它拖拽到收藏栏里,以便下次方便直接打开(对于基本的桌面操作,虽然是不同的桌面环境,但是“桌面”的操作都是差不多的,和你在Windows里玩的大同小异。请不要拘泥于形式,要举一反三)。打开终端:

c3e278af9b038f5f2c112e56cf5addba.png

这就是一个虚拟终端。请区别于Windows的命令行,这个比命令行要强大的多,这是从计算机操作系统上古时期Unix诞生的时代,就一直迭代至今的产物,其背后的众多强大工具都遵从Unix思想而设计。初学者尚不能理解其精髓,不过没关系,日后可以慢慢在使用中理解。

我们现在打开了一个虚拟终端,当然你也可以根据自己的喜好安装其它虚拟终端软件。当前的默认的解释器是bash,以后我们的所有操作基本上都在终端上完成,之所以装桌面环境而不用纯终端的原因只是为了:

  1. 方便多窗口。
  2. 方便使用浏览器。
  3. 方便打开pdf等格式文档、图片等。
  4. 其它你个人需要桌面环境来做的事情。

总之桌面对于个人办公而言是有绝对优势的。

基本介绍和基本操作

Linux系统的路经和Windows的看起来不一样。Windows的路经起点是不同的盘符,而Linux的起点是根,即一个斜杠“/”。这个斜杠就是Linux的第一层目录。然后后面每一层目录用一个斜杠分开。

Linux系统的路径写法有两种,一种是相对路径一种是绝对路径。

  • 绝对路径都是以“/”开头的,比如/usr/bin/vi或者/home/test/,代表从根目录"/"开始计算的绝对路径。
  • 相对路径都是不以“/”开头的,不如git/linux/或者work/jobs/test.xml,代表从当前所在目录开始计算的相对路径,如果想知道你现在所在的目录是什么可以借助pwd命令查看。

用户刚刚登陆进来后默认是处在当前用户的家目录的,/home目录下一般存放所有普通用户的家目录(并不是所有的用户都有家目录,也不是限定家目录一定要在/home下)。比如我们在安装系统是创建了一个叫test的用户,那么就会存在一个/home/test/的目录,/home/test目录作为test这个用户的家目录,每次登陆test用户就会默认从这个目录开始:

23864cce2c9b0ef4f2ab672151729d1b.png

Linux最最常用的两个命令:cd和ls。

ls的意思是list directory contents。用法是:

ls [option].... [file]...

在Linux的文档中中括号代表可选项,没有也可以执行,尖括号代表必选项。命令和后面的选项/参数之间都要有至少一个空格隔开。所以ls命令可以这样用:

  • 1、直接执行"ls",代表查看当前所在目录的内容。如:
5a00e229f9cb2ae6e1e990bf0d9f811a.png
  • 2、查看某个目录下的内容则在ls后面跟上路径名,路径名可以是绝对路径以可以是相对路径,如:
6529a21921151fe628b9a3d2dca0fc4d.png
  • 3、想看更详细一点的信息则可以用"-l"(注意是小写的L前面有个减号),linux系统下命令的选项一般都有减号跟着。如下图,可以看到除了内容名字外还有访问权限,属主属组,修改日期等信息。以"d"开头的代表是目录,以"-"开头的代表是普通文件。Linux下有几大文件类型,普通文件和目录是其中最常见的两种,其它的请自行去了解。
3672298e9b62cf3cf7dc0adbc3c918f7.png

ls命令还有很多用法,比如-d选项,还有很多别的。具体请运行“man ls”查看,退出查看可按q键。

cd是一个内建命令,它不是一个单独的可执行文件,它是命令行解释器自带的。cd的用法很简单,就是cd后面接路径名,可以是绝对路径也可以是相对路径,代表进入这个路径。进入某个路径其实就是把这个路径作为当前所在路径,也就是相对路径的起点变了。

关于路径还有两个要说的地方,那就是"."和".."。“.”代表当前路径,".."代表当前路径的上一级目录的路径。比如执行“cd ..”就是退到上一级目录,如果是"cd ../.."就是当前路径退两级。"ls ../test"就是查看上一级目录的test的内容。

cd和ls不是任何路径都能进入和查看的,会有访问控制的限制。这个以后再说。

还有几个常用的,touch可用于创建一个普通文件,mkdir可用于创建目录,less可以以只读方式打开一个文件。具体的可参考相应的man文档。

本文并没有太多篇幅来介绍所有基本命令,欲进一步学习,可以此为基础书籍和文档。

编辑器

Linux下有很多编辑器,常用的两个是vi和emacs。不要小看这两大编辑器,它们的功能远远比你一般理解上的编辑器强太多太多倍了。不过本文仅仅讲如何简单使用它们编写代码、修改代码并保存。想了解更多配置和使用这两个编辑器的知识,可自行查阅书籍和网上的公开资料。

  • vi编辑器

vi是Unix的传统编辑器,现在传承到了Linux下。常听到的vim可以理解为vi的升级版,一般你装了vim,那么你执行vi的时候实际上就是执行了vim。

第一步:安装

如果你当前是一个管理员用户(有sudo的权限),那么在终端上执行:

sudo yum install vim

如果网络良好,软件源配置正确,yum会帮你计算安装包依赖然后给你一个需要安装的包列表,你只需要输入“y”回车就行了。如果一切顺利vim就已经安装到系统中了。

如果你当前不是一个管理员用户,你需要先切换到root用户,执行

su - root

输入root密码,成功后你就变成root用户了。再执行"yum install vim"即可。安装后按"Ctrl + D"退出root用户,返回到之前的普通用户。

第二步:编辑

在终端执行:

vi hello-vi-world.c

就会进入vi的界面,开始编辑hello-vi-world.c这个文件:

be06fe56e873045c7603435e02cbb119.png

现在还不能编辑,要想进入编辑模式需要按"i"键,按下之后进入插入内容的模式,会看到最下方出现“插入”或"INSERT"的字样:

e544fc417e61c5c396a5276b167234c8.png

然后就可以开始编辑了,怎打字就不用多说了吧,比如写一个最简单的C程序:

5156cc149fe07a1bd782b22cda45f497.png

现在还内容还没有被写到文件里,如果想要保存则按照如下步骤进行:

1、按Esc键退出编辑模式。

2、输入一个":"冒号键,在左下角出现一个冒号。

3、输入一个"w"键,然后回车。你会看到下方提示已经written,说明保存成功了,这个文件也被自动创建。

如果要退出vi编辑器则把第三步的w换成q回车就退出了。

如果第三步想要保存并且退出,冒号后面写"wq"回车就行了,代表保存然后退出。或者直接写"x"回车也代表保存退出。

  • emacs编辑器

emacs是另一款常用的编辑器,安装emacs编辑器可以执行:

sudo yum install emacs

参考上面安装vim的过程。emacs编辑器是由开源软件的精神领袖Richard Stallman编写的,功能也非常强大。

安装成功后,在终端输入

emacs hello-em-world.c &

结尾的“&”并不重要,仅仅是让这个进程不占用终端的前端而已,可以不写。

然后你就会看到emacs启动后的界面:

2d3e6fe2518ebfe70cc5f1e42491bbcf.png

看到上下两部分,上部分是编辑的地方,下面是一个欢迎界面(可以通过配置默认去掉它)。可以把光标放到上半部分,然后按Ctrl+x,然后松手后再敲击“1”,这样就保留当前光标所在的编辑缓冲区关闭其它的了(注意Ctrl+x是一个常用的前缀组合键)。

现在开始编辑,编辑一个简单的C程序,如下:

71a4d771654636a43b4d9e391610d3c1.png

现在内容还是在缓冲区中,如果要保存可以使用组合键Ctrl+x然后再输入Ctrl+s(按住Ctrl,依次连续输入x和s即可),保存当前文件。

如果要退出则按:Ctrl+x然后再按Ctrl+c(按住Ctrl,依次连续输入x和c即可)。这样就退出emacs了。

编译执行

Linux下的常用编译器就是gcc系列,C++的是g++。如果你还没安装gcc则需要安装:

sudo yum install gcc

安装完后我们尝试对上面两个程序分别进行编译,如果要将hello-vi-world.c编译成可执行二进制文件,则执行:

gcc -o hello-vi-world hello-vi-world.c -Wall

如果没有语法错误就编译好了,我们用ls看一下:

96db2e4940cf7d0ced864faea3ebe560.png

看到一个带"x"权限(可执行权限)的绿色文件(不一定会显示颜色)。下面尝试执行一下试试,执行谁只要在终端上输入要执行的文件的路径名即可,比如输入./hello-vi-world(注意前面一个点),代表执行当前路径下的hello-vi-world文件:

7ca9f3b1731aadef1523de30e8f41b60.png

注意这里没有"./"是不行的,点"."代表当前路经,./hello-vi-world代表当前路经下的hello-vi-world文件,如果直接写hello-vi-world,则终端会尝试从默认的一些路经(如/bin, /usr/bin)下查找有没有这个可执行文件,一般情况下找不到当前路经。

现在可以自己尝试编译并执行hello-em-world.c

……

……

……

gcc其实有很多很多功能,比如要想预编译hello-em-world.c文件可以执行

gcc -E -o hello-em-world.i hello-em-world.c

执行成功后就会出现一个hello-em-world.i的文件,可以用less,vi或emacs查看一下它的内容,就是经过预编译后的内容。

如果要进行编译,这里说的编译是纯粹的编译,就是把c代码编译成汇编代码,则可以执行:

gcc -S -o hello-em-world.s hello-em-world.i

把.i文件写为hello-em-world.c也行,就是跳过手动预编译直接完成预编译和编译两个过程。这时会得到一个hello-em-world.s文件,打开看一下,里面是编译好的使用于当前体系结构的汇编代码。

把汇编代码进行汇编可以执行:

gcc -c -o hello-em-world.o hello-em-world.s

把.s文件换成.c也行,就是自动完成预编译、编译和汇编三个过程。现在得到一个hello-em-world.o文件,这一个二进制文件,但不是最后的可执行二进制文件,因为它还缺少最后一步连接处理。

最后对.o文件进行连接,我们这里就一个.o文件所以简单,经常是需要有多个.o文件需要连接。连接执行:

gcc -o hello-em-world hello-em-world.o

如果把最后的.o文件写成.c,那就和最开始我们用hello-vi-world.c编译时示范的那样了。实际上那样是完成了预编译、编译、汇编和连接一连串的过程。

好了,现在执行一个最后的编译结果吧。

7f6206238d47caa3821a62ac5ebb3f0e.png

gcc可以支持很多平台,刚才示范的是通用PC下的gcc编译,你还可以交叉编译,使用gcc针对ARM或者AVR或者其它平台的版本。这个就自己去研究吧。

想了解更多gcc的只是可以到GNU的网站上去看看其文档。顺带提一下gdb是常用的调式软件,如何使用gdb调式gcc编译出来的程序请自行学习。

结语

本文就到此为止,全在抛砖引玉。想学习就自己去深入了解吧,编辑器不用两个都很熟,选择其中一个用熟了就行了。建议从终端命令的使用开始学习,将Linux的使用方式融会贯通。



推荐阅读
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 求助高手:下载的压缩包中包含CMake文件,如何在Windows环境下使用已安装的CMake GUI进行运行?
    从GitHub仓库 `https://github.com/vonmax007/RobotSimulation` 下载的代码包含多种算法,其中算法1的文件目录中包含了CMake文件。为了在Windows环境下使用已安装的CMake GUI运行这些文件,需要先确保CMake已正确安装,并按照以下步骤操作:打开CMake GUI,设置源代码路径和构建路径,点击“Configure”配置项目,然后点击“Generate”生成构建文件。最后,在生成的构建目录中使用命令行或IDE进行编译和运行。 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 深入解析:Android开发进阶之Vim编辑器基础操作与应用
    本文深入探讨了Android开发中使用Vim编辑器的基础操作与应用。通过详细解析Vim的基本命令、配置文件和常用插件,帮助开发者提高代码编写效率。文章还介绍了如何在Android开发环境中高效利用Vim,包括集成开发环境(IDE)的配置和常见问题的解决方法。适合初学者和有经验的开发者参考。 ... [详细]
  • 深入解析 Spring MVC 的核心原理与应用实践
    本文将详细探讨Spring MVC的核心原理及其实际应用,首先从配置web.xml文件入手,解析其在初始化过程中的关键作用,接着深入分析请求处理流程,包括控制器、视图解析器等组件的工作机制,并结合具体案例,展示如何高效利用Spring MVC进行开发,为读者提供全面的技术指导。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
  • 在Linux/WSL环境中,本文对Shell任务的并行处理进行了详细的测试与分析。通过多种并行处理技术,如GNU Parallel和xargs,探讨了如何有效提升任务执行效率和系统资源利用率。实验结果表明,合理配置并行参数能够显著缩短任务完成时间,提高系统整体性能。此外,文章还介绍了Shell脚本编写的基本原则和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 如何配置计算机以指定下载文件的默认保存位置?
    如何配置计算机以指定下载文件的默认保存位置? ... [详细]
author-avatar
hongxiaochen8847_106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有