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编程 的相关文章

  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • Linux下单个目录下文件过多会怎样?

    如果一个目录中有大约 1 000 000 个单独的文件 大部分大小为 100k 其中没有其他目录和文件 是否会以任何其他可能的方式降低效率或产生缺点 ARG MAX 会对此提出异议 例如 rm rf 在目录中时 会说 参数太多 想要执行某种
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 错误:libXext.so.6:无法打开共享对象文件:没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 运行尝试打开 ods 文件的 java 文件时出现以下错误 线程 main 中出现异常 java lang UnsatisfiedLinkError opt software jdk1 6 0 45 jre li
  • 每个虚拟主机的错误日志?

    在一台运行 Apache 和 PHP 5 的 Linux 服务器上 我们有多个带有单独日志文件的虚拟主机 我们似乎无法分离 phperror log虚拟主机之间 覆盖此设置
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 即使使用 rvm pkg install zlib 后也无法加载此类文件 -- zlib

    我使用 rvm 安装了 zlib 包和 ruby 1 9 3 但是每当我尝试安装时 它说宝石cannot load such file zlib 我用来安装的命令是 rvm install 1 9 3 rvm pkg install zli
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可

随机推荐

  • 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用户 可以操作一切