Linux操作系统与Shell编程

2023-11-15

Linux是自由、开源的操作系统,安装在计算机的硬件之上,是用来操作计算机硬件和软件资源的系统软件,一般应用于专业的web服务器上,具有以下特性

  • Linux注重系统的安全性,对文件访问权限有严格设定,最高权限账户为root用户,可以操作一切,详见第三章

  • 自由和可定制性非常高,可以根据需求对Linux 核心内核进行修改

  • 可视化界面相对较差,不太符合普通人使用习惯,软件支持欠缺

文章目录

一、Linux入门

Linux:开源的操作系统的不同发行版

开源资料推荐

由于开源,Linux也有了很多的发行版本,下面简单介绍一下常用的Linux发行版,相对社区活跃,软件资源丰富

Ubuntu

  • UI好看,但是相对不稳定,适合自用或者Windows开始转用Linux系统
  • 包管理工具:apt
  • 性能略差于CentOS

centos

  • 开源、大腕、稳定
  • 包管理工具:rpmyum

搭建一个Linux学习环境

两种方式搭建Linux学习环境

  • 通过VMware等软件安装虚拟机,再安装CentOS镜像
  • 从云服务器提供商租赁云服务器

云服务器搭建Linux环境(推荐)

注:

  • 云服务器的方式更接近真实开发,并且本地虚拟机配置较为繁琐
  • 我们需要用到以下两个工具来连接和管理远程虚拟机
    • Xshell:用于连接远程机,连接后可用命令行操控远程机
    • Xftp:用于本机和远程机传输文件时使用
  1. 购买云服务器

    分享几点个人意见

    • 前期学习,购买轻量应用服务器和云服务器均可

    • 善用Google找到当前最合适的优惠

    几个常见的优惠

    • 腾讯云教育优惠地址

    • Amazon会有时间很长的试用,但是有一定门槛

    • 阿里云免费试用1个月的活动

  2. 进入云服务器控制台,进行以下操作,之后我们可以用Xshell(会话管理工具)连接到这个服务器

    • 重置实例密码,用做与XShell连接时的登录密码
    • 记住公网ip,用作填写新建会话时的主机号
    • 进行安全组配置,开放端口号(例:22端口号就是Xshell远程登录端口号)
  3. Xshell新建会话,连接远程服务器

    需要修改几点

    • 名称:自定义,可以修改为过期时间
    • 主机:刚刚购买的公网ip地址
    • 端口号:默认22端口
    • 密码:重置后的实例密码
  4. 点击连接,默认用户名是root,密码就是你重置的密码

使用Xftp进行文件管理和传输

image-20220103160503744

至此,一个远程Linux环境搭建完毕

VMWare搭建一个Linux虚拟机

前置操作

步骤如下

  1. VMware Workstation创建一个新的虚拟机,通过自定义方式安装,注意以下设置
    • 硬件兼容性:默认
    • 资源分配:根据自己电脑配置
    • 网络类型:网络地址转换NAT
    • IO控制器、磁盘类型:默认
    • 选择磁盘:创建新的虚拟磁盘
  2. 选择下载好的Iso镜像文件,然后开启虚拟机,根据提示安装即可
  3. VMWare搭建好虚拟机后,需要进行网络配置,才可以在外网使用Xshell连接并管理这台主机,详情请参考Xshell连接VMware虚拟机中的CentOS

图:Kubuntu系统在虚拟机中安装成功

image-20220619140740929

使用docker在windows上搭建Linux环境

详情请参考这篇文章

Linux系统目录结构以及功能

登录系统后,在当前命令窗口下输入命令

ls / 

image-20220619011237336

注:

  • 下图中的箭头指向该文件夹的的实际位置,可以理解为Windows中的快捷方式,Linux通过**挂载**实现这个功能

img

以下是对这些目录的解释:

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

  • /etc

    上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

  • 值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里

Linux系统开关机

Linux系统在开机时会自启动许多程序。它们在Windows叫做服务(service) , 在Linux就叫做守护进程 (daemon)

启动后,用户的登录方式有三种:

  • 命令行登录
  • SSH登录远程操作
  • 图形界面登录(GHOME桌面)

关机

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令为 shutdown,默认不是马上关机,需要等待一分钟,这样做是为了在关机前执行一个sync操作

sync #将数据由内存同步到硬盘中,这个操作可以防止断电丢失数据
shutdown #关机指令,你可以man shutdown 来看一下 帮助文档。例如你可以运行如下命令关机:
shutdown -h 10 #这个命令告诉大家,计算机将在10分钟后关机
shutdown -h now#立马关机
shutdown -h 20:25 #系统会在今天20:25关机
shutdown -r now #系统立马重启,也会执行sync操作
shutdown -r +10 #系统十分钟后重启
reboot #就是重启,等同于shutdown -r now
halt #停机不断电,内存中数据还在,这样可以使系统处于一个低功耗状态

总结:不管是重启还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,执行命令之后没有返回消息则表明运行成功

Vim:文本编辑器

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,由于Linux操作系统通常为了性能考量,没有图形化界面,所以文本的编辑就需要用到Vim了

Vim编辑器有三种模式

  • 一般模式
  • 编辑模式
  • 命令模式

一般模式:用户刚刚启动 vi/vim,便进入了一般模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux操作系统与Shell编程 的相关文章

  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐

  • Linux常用操作指令

    Linux操作系统 linux基础指令 命令 解释 命令 解释 ps ef aux 查看进程 history 查看历史命令 whatis 一句解释 2 把编号为2的历史命令再来一次 man 查看解释 uname hostnam clear
  • H2数据库使用

    H2最完整的资料下载地址 http download csdn net detail yixiaoping 5956595 H2数据库使用 H2数据库介绍 常用的开源数据库 H2 Derby HSQLDB MySQL PostgreSQL
  • MySQL 通用查询日志与慢查询日志

    MySQL中的日志包括 错误日志 二进制日志 通用查询日志 慢查询日志等等 这里主要介绍下比较常用的两个功能 通用查询日志和慢查询日志 1 通用查询日志 记录建立的客户端连接和执行的语句 2 慢查询日志 记录所有执行时间超过long que
  • python制作飞机大战代码_python实现飞机大战完整代码,可运行

    我发现很多python代码飞机大战在互联网上 但几乎没有一个是完整的 所以我做了一个完整的人 python代码分为两个文件 工具类和主类 python版本 pygame模块需要安装 完整的代码如下 1 工具类plane import ran
  • android 自定义RadioButton样式

    上面这种3选1的效果如何做呢 用代码写 其实有更简单的办法 忘了RadioButton有什么特性了吗 我就用RadioButton实现了如上效果 其实很简单的 首先定义一张background 命名为radio xml 注意该backgro
  • webdriver用法

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 webdriver是什么 百度搬运 二 使用步骤 1 引入库 2 基本调用 总结 前言 webdriver库 本片文章主要记录webdriver一些常用的
  • Ubuntu下python环境搭建

    一般ubuntu系统会自带安装python2 x 和python3 x两个版本 我使用的ubuntu16 04自带python2 7和python3 5 我们只需要安装pip以及virtualenv 管理python环境 多项目部署时pyt
  • 清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么

    类型 系统其它大小 21 5M语言 中文 评分 10 0 标签 立即下载 电脑用久了是会堆积一些系统垃圾的 这类垃圾不好清理 很多小伙伴选择使用cmd清理垃圾命令代码来清理 cmd清理垃圾命令代码是什么 西西小编来为大家介绍 cmd清理垃圾
  • 操作系统、驱动和硬件的关系的思考

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 这些问题是困扰一个人理解整个电脑架构的难点 比如 操作系统和驱动是什么关系 为什么需要驱动 cpu 内存需要驱动吗 为什么操作系统可以先装到电脑上 然后再去安装其它驱动 比
  • 23个最有用的ES检索技巧(Java API实现)

    前言 本文是对 23个最有用的Elasticseaerch检索技巧 一文提到的ES检索技巧进行 Java API 的简单实现 但仅限于简单实现 并不考虑包括参数校验 异常处理 日志处理 安全等问题 仅供参考 代码见 UsefullESSea
  • WebService_HelloWorld_笔记

    创建服务端步骤 1 定义服务接口和实现类 2 给接口和实现类加上注解 3 发布服务 http localhost 8888 ns wsdl http localhost 8888 ns xsd 1 package biz codeworm
  • 社区的代码规范及e2e测试

    golangci lint 静态代码检查工具 是对golint gofmt的集成 速度更快 1 安装 go install github com golangci golangci lint cmd golangci lint v1 38
  • c语言 寻找素数对

    寻找一个偶数的最邻近的素数对
  • 菜鸟式教程:Idea上传代码到Gitee

    点击File settings Plugins 在搜索栏中输入gitee 点击安装 安装完成之后 点击OK 即完成gitee 如下图所示 安装完成之后 重启Idea 然后点击File settings Plugins 找到Gitee 如下图
  • 机器学习实战之CART

    理论 CART Classification and Regression Tree 是决策树的一种 决策树是每次以某个属性为准 将数据集划分为几个类 最终数据集中的元素都被划分到相应的类中 典型的决策树算法是ID3 ID3与CART不同之
  • 天梯赛复盘

    昨天刚比完天梯赛 以为有了大一以来的积累 可以轻轻松松国三 结果 题确实感觉不难 全是模拟题 但还是寄了 结合我朋友和我的状况 总结一下教训 一 刷题阶段 1 天梯赛的题L1 L2不难 所以我前期犯得错误就是 只刷题不找题解 这其实是不太好
  • Java 开发环境配置----JDK配置

    下载JDK 首先我们需要下载java开发工具包JDK 下载地址 Java Downloads Oracle 点击如下下载按钮 在下载页面中你需要选择接受许可 并根据自己的系统选择对应的版本 本文以 Window 64位系统为例 下载后JDK
  • 物联网--思科模拟器--简单风力发电

    参考视频入口 实验拓扑图 需要注意的是ioe7连的是d1口 ioe5连的d0 服务器配置ip 电脑 风力发电 电显示器配置ip 电脑上注册 服务器上查看 为ioe6 ioe7个设置控制的账号密码 电脑上查看控制 效果图
  • lambda中sorted排序

    准备工作 新建一个User类 使用stream排序操作 默认ASC排序 stream倒序排序操作 sorted Comparator reverseOrder 代码例子 lambda sorted排序 Test public void te
  • Linux操作系统与Shell编程

    Linux是自由 开源的操作系统 安装在计算机的硬件之上 是用来操作计算机硬件和软件资源的系统软件 一般应用于专业的web服务器上 具有以下特性 Linux注重系统的安全性 对文件访问权限有严格设定 最高权限账户为root用户 可以操作一切