Linux(一)操作系统基础知识

Linux(一)操作系统基础知识Linux 操作系统基础知识 1 Linux 简介与程序开发环境 1 1 什么是 Linux Linux 是一个可以自由发布的类 UNIX 内核实现 它是一个操作系统的底层核心 Linux 是由芬兰赫尔辛基大学的 Linus 开发 期间得到了网上广大 UNIX 程序员的帮助 它最初是受其教授的 Minix 一个小型的类 UNIX 系统 启发而开发的程序 纯属个人的爱好 但是后来它自身逐步发展成为一个完整的系统 要理解什么是 Linux 首先要了解在 Linux 之前诞生的系统和应用程序 UNIX 和 GNU 软件 1 1 1 什么是 UNI

Linux操作系统基础知识

1、Linux简介与程序开发环境

1.1 什么是Linux?

1.1.1 什么是UNIX?
1.1.2 GNU项目和自由软件基金会

1.2 程序开发环境

工欲善其事必先利其器,想要进行Linux程序开发需要先搭建开发环境。

1.2.1 Linux环境安装

进行 Linux 开发需要安装一个 linux 系统环境,一般使用 VMWare 安装Ubuntu 系统进行开发。具体安装过程大家可以参考以下帖子https://zhuanlan.zhihu.com/p/这里我就不做过多介绍。

1.2.2 SSH
1)安装ssh

sudo apt update

sudo apt install openssh-server

2)启动ssh

sudo service ssh start

3)使用ip addr show命令查看 ubuntu 系统 ip

在这里插入图片描述

可以看出,当前 ubuntu IP 地址为 192.168.176.148

4)测试 ssh 登录

通过这种方法,确定主机和开发板之间网络通讯正常后,即可以登录到开发板上。

5)安装 Visual Studio Code
常用的有如下插件需要安装: C/C++。 C/C++ Snippets,即 C/C++重用代码块。 C/C++ Advanced Lint,即 C/C++静态检测 。 Code Runner,即代码运行。 Include AutoComplete,即自动头文件包含。 Rainbow Brackets,彩虹花括号,有助于阅读代码。 One Dark Pro, VSCode 的主题。 GBKtoUTF8,将 GBK 转换为 UTF8。 ARM,即支持 ARM 汇编语法高亮显示。 Chinese(Simplified),即中文环境。 vscode-icons, VSCode 图标插件,主要是资源管理器下各个文件夹的图标。 compareit,比较插件,可以用于比较两个文件的差异 DeviceTree,设备树语法插件。 Markdown Preview Enhanced, markdown 预览插件。 Maridown pdf,将.md 文件转换成其他格式。 

2、Linux常用命令

Linux的命令有几百个,对于初学者来说,常用的并不多,并不需要全部掌握。在平时的学习和工作过程中,遇到了陌生的Linux命令,多查资料,日积月累,自然就记住了。下面为大家介绍Linux最基础的17个命令。

1、清屏

clear

2、查看服务器ip地址

ip addr

3、查看时间

date

4、目录和文件
1)Linux 根目录(/)
2)Linux /usr目录
3)Linux /var 目录
5、查看当前目录

pwd

6、改变当前工作目录

cd 目录名

示例:

1)进入/tmp目录

cd /tmp

2)进入上一级目录

cd ..

3)进入用户的主目录

cd

7、列出目录和文件信息

ls是list的缩写,通过 ls 命令不仅可以查看目录和文件信息,还可以查看目录和文件的权限、大小、主人和组等信息。
选项 -l 列出目录和文件的详细信息。
示例:




1)列出当前工作目录下全部的目录和文件名信息

ls
在这里插入图片描述

2)列出当前工作目录下全部的目录和文件名详细的信息

ls -l
在这里插入图片描述

3)正则表达式

正则表达式又称规则表达式、通配符,目录和文件名都支持正则表达式,正则表达式的规则比较多,在这里我们只需要掌握最常用的两种:星号 “*” 。

星号 “*” :匹配任意数量的字符。 

例如:ls open*.zip
在这里插入图片描述

8、创建目录
1)在当前工作目录下创建aaa目录

mkdir aaa

2)在当前工作目录下创建aaa目录,并在aaa目录下创建bbb目录

mkdir aaa/bbb -p

9、删除目录和文件

rm [-rf]目录或文件

选项-r可以删除目录,如果没有-r只能删除文件。

选项-f表示强制删除,不需要确认。

1)删除aaa目录

rm aaa -r

2)强制删除当前工作目录下的ccc.c文件

rm -f ccc.c

9、移动目录和文件

mv 旧目录或文件名 新目录或文件名

1)把当前工作目录中的 book.c 文件重命名为 book1.c

mv book.c book1.c

2)如果OPC/test3是一个已经存在的目录,以下命令将把当前工作目录下的 book.c 文件移动到 OPC/test3 目录中。

mv book.c OPC/test3

3)如果 OPC/test3目录不存在,以下命令将把当前工作目录下的 book.c 文件改名为 OPC/test3。

mv book.c OPC/test3

10、复制目录和文件

cp [-r] 旧目录或文件名 新目录或文件名

注:-r 是递归的意思,英文 recursion 

选项-r可以复制目录,如果没有选项-r只能复制文件。

示例:

1)把当前工作目录下的book1.c文件复制为book2.c

cp book1.c book2.c

2)把当前工作目录下的aaa目录复制为bbb

cp aaa bbb -r

3)把当前工作目录下的book1.c文件复制为aaa/book1.c

cp book1.c aaa/book1.c

cp book1.c aaa/.

以上两个命令的效果相同。

4)把当前工作目录下的aaa目录复制为/tmp/aaa

cp -r aaa /tmp/aaa

cp -r aaa /tmp/.

以上两个命令的效果相同。

11、判断网络是否连通

ping -c 包的个数 ip地址或域名

ping用于确定本地主机是否能与另一台主机成功交换数据包,判断网络是否通畅。

1)向本地主机(127.0.0.1)ping五个包

ping -c 5 127.0.0.1
在这里插入图片描述

2)向百度 www.baidu.com.cn 的服务器ping五个包

ping -c 5 www.baidu.com.cn
在这里插入图片描述

可以看出百度的服务器是可以ping通的。

3)向谷歌 www.google.com 的服务器ping五个包。

ping -c 5 www.google.com
在这里插入图片描述

可以看出谷歌的服务器是ping不通的。

12、显示文本文件的内容

显示文本文件的内容有三个命令:catmoretail

1)cat 命令

cat 文件名

cat命令一次显示整个文件的内容。

cat main.cpp

2)more 命令

more 文件名

为了方便阅读,more命令分页显示文件的内容,按空格键显示下一页,按b键显上一页,按q键退出。

3)tail 命令

tail -f 文件名

tail -f用于显示文本文件的最后几行,如果文件的内容有增加,就实时的刷新。对程序员来说,tail -f极其重要,可以动态显示后台服务程序的日志,用于调试和跟踪程序的运行。

13、统计文本文件的行数、单词数和字节数

wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出

wc 文件名
在这里插入图片描述

14、搜索文件中的内容

grep "内容" 文件名

注意,如果内容中没有空格等特殊字符,可以不用双引号括起来。 

示例:

1)在main.cpp文件中搜索signal

grep signal main.cpp
在这里插入图片描述

15、搜索文件
1)find

find 目录名 -name 文件名

find OPC -name *.cpp

2)locate

locate 文件名

locate open62541.c
在这里插入图片描述

注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了. 

find多用于在某个目录下进行模糊搜索,而locate则是进行全盘准确定位。

16、chmod命令

用于改变linux文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。

举例:ls -l example
在这里插入图片描述

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

 常用参数: -c 当发生改变时,报告处理信息 -R 处理指定目录以及其子目录下所有文件 权限范围: u :目录或者文件的当前的用户 g :目录或者文件的当前的群组 o :除了目录或者文件的当前用户或群组之外的用户或者群组 a :所有的用户及群组 权限代号: r :读权限,用数字4表示 w :写权限,用数字2表示 x :执行权限,用数字1表示 - :删除权限,用数字0表示 s :特殊权限 

示例:

1)删除文件 example 所有用户可执行权限

chmod a-x example
在这里插入图片描述

2)给 example 的属主分配读、写、执行(7)的权限,给 example 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod 751 example -c
在这里插入图片描述

3)将aaa目录及其子目录所有文件添加可读权限

chmod u+r,g+r,o+r -R text/ -c
在这里插入图片描述

17、查看系统磁盘空间

df [-h] [-T]

选项-h以方便阅读的方式显示信息:

df -h
在这里插入图片描述

选项-T列出文件系统类型:

df -h -T
在这里插入图片描述

3、Linux环境变量讲解

3.1 环境变量的概念

3.1.1 什么是环境变量?

程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。

3.1.2 环境变量的分类
1)按生效的范围分类。

系统环境变量:公共的,对全部的用户都生效。

用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。

2)按生存周期分类。

永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。

临时环境变量:使用时在Shell中临时定义,退出Shell后失效。

3)Linux环境变量

Linux环境变量也称之为Shell环境量变,以下划线和字母打头,由下划线、字母(区分大小写)和数字组成,习惯上使用大写字母,例如PATH、HOSTNAME、LANG等。

3.2 常用的环境变量

3.2.1 查看环境变量
1)env命令

上图只截取了部分环境变量,并非全部。

注:用env命令的时候,满屏显示了很多环境变量,不方便查看,可以用grep筛选。 

env|grep 环境变量名

例如查看环境变量名中包含PATH的环境变量。

env|grep PATH
在这里插入图片描述

2)echo命令

echo $环境变量名

例如:echo $LANG

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6M1NFwy-94)(/uploads/knowledge-space/images/m_6fb13bcc6dea633f2797e848c6424e72_r.png)]

注意,符号$不能缺少,Linux系统就像人类社会,给钱就给你看信息,哈哈。 
3.2.2 常用的环境变量
1)PATH

可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序,PATH变量的具体用法本文后面的章节中有详细的介绍。

2)LANG

Linux系统的语言、地区、字符集。

echo $LANG
在这里插入图片描述

3)HOSTNAME

服务器的主机名。

echo $HOSTNAME

4)SHELL

用户当前使用的Shell解析器。

echo $SHELL
在这里插入图片描述

5)HISTSIZE

保存历史命令的数目。

6)USER

当前登录用户的用户名。

echo $USER

7)HOME

当前登录用户的主目录。

echo $HOME

8)PWD

当前工作目录。

echo $PWD
在这里插入图片描述

9)LD_LIBRARY_PATH

C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。

3.3 设置环境量

export 变量名='值'

如果环境变量的值没有空格等特殊符号,可以不用单引号包含。

示例:

export PATH=$PATH:.

以上命令为当前shell的环境变量PATH添加.目录(是.) 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

以上命令为当前shell的环境变量LD_LIBRARY_PATH添加.目录 

采用export设置的环境变量,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在登录脚本文件中配置。

3.3.1 系统环境变量

系统环境变量对全部的用户生效,设置系统环境变量有三种方法。

1)在/etc/profile文件中设置。

用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环境变量。

2)在/etc/profile.d目录中增加环境变量脚本文件,这是Linux推荐的方法。

/etc/profile在每次启动时会执行 /etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护,不想要什么变量直接删除 /etc/profile.d下对应的 shell 脚本即可。

/etc/profile.d目录下有很多脚本文件,例如:

ls /etc/profile.d
在这里插入图片描述

3)在/etc/bashrc文件中设置环境变量。

该文件配置的环境变量将会影响全部用户使用的bash shell。但是,Linux也不建议在/etc/bashrc文件中设置系统环境变量。

3.3.2 用户环境变量

用户环境变量只对当前用户生效,设置用户环境变量也有多种方法。

在用户的主目录,有几个特别的文件,用ls是看不见的,用ls .bash*可以看见。
在这里插入图片描述

1).bash_profile(推荐首选)

当用户登录时执行,每个用户都可以使用该文件来配置专属于自己的环境变量。

2).bashrc

当用户登录时以及每次打开新的Shell时该文件都将被读取,不推荐在里面配置用户专用的环境变量,因为每开一个Shell,该文件都会被读取一次,效率肯定受影响。

3).bash_logout

当每次退出系统(退出bash shell)时执行该文件。

4).bash_history

保存了当前用户使用过的历史命令。

3.3.3 环境变量脚本文件的执行顺序

环境变量脚本文件的执行顺序如下:

/etc/profile->/etc/profile.d->/etc/bashrc->用户的.bash_profile->用户的.bashrc

同名的环境变量,如果在多个脚本中有配置,以最后执行的脚本中的配置为准。

3.4 重要环境变量的详解

1、PATH环境变量

可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录。

1)PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。

export PATH=目录1:目录2:目录3:…目录n:.

2)PATH缺省包含了Linux系统命令所在的目录(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。

示例:

ls /bin/ls 可以查看到ls命令位于/bin目录下
在这里插入图片描述

此时我们执行命令 export PATH= 将PATH变量清空,再执行ls命令,系统会提示找不到ls命令。
在这里插入图片描述

采用绝对路径就可以使用,/bin/ls
在这里插入图片描述

为环境变量PATH添加/bin目录后,ls也可以执行了。
在这里插入图片描述

3)如果PATH变量中没有包含圆点.,执行当前目录下的程序需要加./或使用绝对路径。

将圆点.添加到环境变量PATH之后,便可以执行了。

export PATH=$PATH:.
在这里插入图片描述

2、LD_LIBRARY_PATH环境变量

C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。

LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。

export LD_LIBRARY_PATH=目录1:目录2:目录3:......目录n:.

这个环境变量我们会在下次课讲解Linux静态库与动态库时详细介绍。

3.5 环境变量的生效

1)在Shell下,用export设置的环境变量对当前Shell立即生效,Shell退出后失效。

2)在脚本文件中设置的环境变量不会立即生效,退出Shell后重新登录时才生效,或者用source命令让它立即生效,例如:

source /etc/profile

3.6 应用经验

虽然设置环境变量的方法有多种,但是建议大家系统环境变量在/etc/profile.d目录中配置,用户环境变量在用户的.bash_profile中配置,不建议在其它脚本文件中配置环境变量,会增加系统运维的麻烦,容易出错。

4、课后作业

5、参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201753.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:41
下一篇 2026年3月20日 上午8:42


相关推荐

  • Vim复制粘贴_vim复制粘贴命令

    Vim复制粘贴_vim复制粘贴命令原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry内容:用vim这么久了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不爽;上次论坛上有人问到了怎么在vim中使用系统粘贴板,印象里回复很多,有好几

    2026年2月17日
    5
  • html5开发环境有哪些(ios开发环境搭建)

    跨平台移动开发实际上就是基于HTML5开发软件界面和主要的业务逻辑,因此一套完善的基于移动平台的HTML5开发环境是非常有必要的。这里我主要的关注点是以下四点:Javascript和Jquerymobile的编辑器HTML5的各个元素的InspectorJavascript远程断点debug移动平台Javascript开发模式1)Javascript和Jquerymobile的

    2022年4月14日
    198
  • python发邮件脚本详解_Python发邮件脚本

    python发邮件脚本详解_Python发邮件脚本收集的一个 Python 发邮件脚本 实现在不搭建邮件服务器的环境下 通过调用其它邮箱发送邮件 vimmail py 内容如下 usr bin envpython coding UTF 8 importos sysreload sys sys setdefaulten utf8 importgetopt MIM

    2025年7月23日
    6
  • 舆情监测系统 源码_2017年舆情大事件

    舆情监测系统 源码_2017年舆情大事件importbreeze.linalgimportorg.apache.spark.ml.Pipelineimportorg.apache.spark.ml.classification.MultilayerPerceptronClassifierimportorg.apache.spark.ml.evaluation.MulticlassClassificationEva…

    2026年2月4日
    3
  • AI泡沫论调下,月之暗面用460万美元训练了一款万亿参数模型

    AI泡沫论调下,月之暗面用460万美元训练了一款万亿参数模型

    2026年3月12日
    2
  • python爬虫的4个实例

    python爬虫的4个实例文章目录1、京东商品页面的爬取2、亚马逊商品页面的爬取3、百度、360搜索关键字提交1、京东商品页面的爬取爬虫具体流程可以参照前一篇博客:https://blog.csdn.net/weixin_42515907/article/details/87932185importrequestsurl="https://item.jd.com/3112072.html"try:…

    2022年5月7日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号