Linux 终端入门

简介

这个教程是 Linux 基础知识系列中的第一篇,涵盖了如何开始使用终端、Linux 命令行以及执行命令。如果你是 Linux 新手,你需要熟悉终端,因为它是与 Linux 服务器交互的标准方式。

这个教程是针对 Ubuntu 22.04 服务器编写的,但一般原则适用于任何其他 Linux 发行版。

让我们开始学习什么是终端仿真器。

终端仿真器

终端仿真器是一个允许在图形环境中使用终端的程序。由于大多数人在日常计算机使用中使用带有图形用户界面(GUI)的操作系统,所以对于大多数 Linux 服务器用户来说,使用终端仿真器是必不可少的。

以下是一些免费常用的终端仿真器,按操作系统分类:

  • Mac OS X: Terminal(默认)、iTerm 2
  • Windows: ConEmu、Windows Terminal、PuTTy
  • Linux: Gnome Terminal、Konsole、XTerm

每个终端仿真器都有自己的一套功能。一般来说,你应该期望一个现代终端仿真器支持选项卡窗口和文本高亮显示。

Shell

在 Linux 系统中,shell 是一个命令行界面,用于解释用户的命令和脚本文件,并告诉服务器的操作系统如何处理它们。有几种广泛使用的 shell,比如 Bourne-Again shellbash)和 Z shellzsh)。每种 shell 都有自己的功能集和关于如何解释命令的复杂性,但它们都支持输入和输出重定向、变量和条件测试等功能。

这个教程是使用 Bourne-Again shell 编写的,通常简称为 bash,它是大多数 Linux 发行版(包括 Ubuntu、Fedora 和 RHEL)的默认 shell。

命令提示符

当你第一次登录服务器时,通常会看到 Message of the Day(MOTD),这通常是一个包含杂项信息的信息消息,比如服务器运行的 Linux 发行版的版本。在 MOTD 之后,你将进入命令提示符或 shell 提示符,这是你可以向服务器发出命令的地方。

命令提示符呈现的信息可以被用户自定义,但以下是默认 Ubuntu 20.04 命令提示符的示例:

sammy@webapp:~$

以下是命令提示符的组成部分的解释:

  • sammy:当前用户的用户名
  • webapp:服务器的主机名
  • ~当前目录。在 bash 中,这是默认 shell,~ 是一个特殊字符,它会扩展为当前用户的主目录的路径;在这种情况下,它代表 /home/sammy
  • $:提示符符号。这表示命令提示符的结束,在这之后用户的键盘输入将会出现

以下是作为 root 用户登录并位于 /var/log 目录时命令提示符的示例:

root@webapp:/var/log#

请注意,结束命令提示符的符号是 #,这是 root 的标准提示符符号。在 Linux 中,root 用户是超级用户账户,它是一个特殊用户账户,可以执行服务器上的任何任务。

执行命令

可以通过在命令提示符处指定可执行文件的名称来发出命令,这可以是二进制程序或脚本。有许多标准的 Linux 命令和实用程序安装在操作系统中,允许你浏览文件系统、安装软件包和配置系统和应用程序。

正在运行的命令的一个实例被称为进程。当在前台执行命令时(这是默认的执行方式),用户必须等待进程完成,然后才能返回到命令提示符,此时可以继续发出更多命令。

需要注意的是,在 Linux 中几乎所有东西都是区分大小写的,包括文件和目录名称、命令、参数和选项。如果某些东西的工作方式不如预期,要仔细检查命令的拼写和大小写!

以下是一些示例,涵盖了执行命令的基础知识。

没有参数或选项

要运行一个没有任何参数或选项的命令,只需输入命令的名称并按 Enter 键。

如果以这种方式运行命令,它将表现出其默认行为,这取决于命令的不同。例如,如果没有任何参数运行 cd 命令,您将返回到当前用户的主目录。ls 命令将打印当前目录的文件和目录列表。没有任何参数的 ip 命令将打印一条消息,向您展示如何使用 ip 命令。

尝试运行 ls 命令,不带任何参数,以列出当前目录中的文件和目录(可能没有):

ls

带参数

许多命令接受参数,或参数,这些参数可以影响命令的行为。例如,使用 cd 命令的最常见方式是传递一个参数,指定要切换到的目录。例如,要切换到 /usr/bin 目录,其中安装了许多标准命令,您可以发出以下命令:

cd /usr/bin

cd 是命令,/usr/bin 是跟随命令的第一个参数。注意您的命令提示符的当前路径已更新。

尝试运行 ls 命令,查看新当前目录中的文件。

ls
…grub-mkrescue                        sdiff                              zgrepgrub-mkstandalone                    sed                                zipdetailsgrub-mount                           see                                zlessgrub-ntldr-img                       select-editor                      zmoregrub-render-label                    semver                             znewgrub-script-check                    sensible-browser

带选项

大多数命令接受选项,也称为标志开关,可以修改命令的行为。选项跟随命令,并由单个 - 字符后跟一个或多个选项,这些选项由单个大写或小写字母表示。一些多词选项可以以 -- 开头,后跟标志文本。

让我们以 ls 命令为例,看看选项是如何工作的。以下是在使用 ls 时非常有用的一些常见选项:

  • -l:打印“长列表”,其中包括额外的详细信息,如权限、所有权、文件大小和时间戳
  • -a:列出目录的所有文件,包括以 . 开头的隐藏文件

要使用 -l 选项与 ls,使用以下命令:

ls -l

请注意,列表包括与之前相同的文件,但包括有关每个文件的附加信息。

如前所述,选项通常可以分组在一起。如果要同时使用 -l-a 选项,可以运行 ls -l -a,或者像这个命令一样将它们组合在一起:

ls -la

请注意,列表包括了 -a 选项的原因,因为它包括了隐藏的 ... 目录。

带选项和参数

在运行命令时,选项和参数几乎总是可以结合使用。

例如,您可以通过运行以下 ls 命令来检查 /home 的内容,而不管当前目录是什么:

ls -la /home

ls 是命令,-la 是选项,/home 是指示要列出的文件或目录的参数。这应该打印出 /home 目录的详细列表,其中应该包含服务器上所有普通用户的主目录。

环境变量

环境变量是用于更改命令和进程执行方式的命名值。当您首次登录到服务器时,默认情况下将根据一些配置文件设置几个环境变量。

查看所有环境变量

要查看为特定终端会话设置的所有环境变量,请运行 env 命令:

env

可能会有很多输出。查找 PATH 条目:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

PATH 环境变量是一个以冒号分隔的目录列表,当发出命令时,shell 将在其中查找可执行程序或脚本。例如,env 命令位于 /usr/bin,您可以在不指定其完整路径的情况下运行它,因为其路径在 PATH 环境变量中。

查看变量的值

通过在变量名称前加上 $,可以检索环境变量的值。这将展开引用的变量为其值。

例如,要打印 PATH 变量的值,可以使用 echo 命令:

echo $PATH

或者您可以使用 HOME 变量,默认设置为用户的主目录,像这样切换到您的主目录:

cd $HOME

如果尝试访问尚未设置的环境变量,它将被展开为空;一个空字符串。

设置环境变量

现在你已经知道如何查看环境变量,接下来让我们学习如何设置它们。

要设置一个环境变量,你只需要以变量名开头,紧接着一个 = 号,然后是其所需的值:

VAR=value

请注意,如果你设置一个已存在的变量,原始值将被覆盖。如果变量一开始不存在,它将被创建。

Bash 包含一个名为 export 的命令,它可以导出一个变量,以便被子进程继承。这使你能够在当前会话中使用引用导出的环境变量的脚本。

在设置变量时,你也可以引用现有的变量。例如,如果你将一个应用程序安装到了 /opt/app/bin,你可以使用以下命令将该目录添加到你的 PATH 环境变量的末尾:

export PATH=$PATH:/opt/app/bin

现在使用 echo 来验证 /opt/app/bin 是否已被添加到你的 PATH 变量的末尾:

echo $PATH

请记住,以这种方式设置环境变量只会在当前会话中生效。这意味着如果你注销或切换到另一个会话,你对环境所做的更改将不会被保留。有一种方法可以永久更改环境变量,但这将在后续教程中介绍。

结论

现在你已经开始学习 Linux 终端(以及一些命令),你应该已经建立了一个扩展你的 Linux 命令知识的良好基础。阅读本系列的下一个教程,学习如何导航、查看和编辑文件及其权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离散数学截图

二元运算及其性质 二元运算中的特殊元 半群和独异点 代数系统的同态与同构 下确界是最大的下界,而在4、5、6三个下界里面,4和5都比6大。可4和5之间没办法分出大小,所以这个哈斯图没有下确界

操作系统面试问题——说一下什么是零拷贝?

零拷贝是一种IO操作优化技术,主要用于减少CPU在用户态和内核态之间的上下文切换次数以及减少数据拷贝次数,可以显著提高数据传输的效率。 传统的拷贝方式需要频繁的切换状态,读数据时需要将数据从硬盘加载到内核缓冲区,再从内核缓…

Git、github与gitee码云

1.git核心是两个仓库:本地仓库和远程仓库 主要用于团队合作和代码版本控制(个人现有版本代码出错可回溯上个提交版本的代码) 远程仓库国际主流githut,但外网速度问题,国内可使用码云gitee github:https:…

Ping的过程详解

Ping是一种常用的网络工具,用于测试与目标主机之间的网络连接和延迟。下面是Ping的基本过程: 发送ICMP Echo请求: 发起Ping操作的主机(通常是客户端)会构建一个ICMP Echo请求报文,将其发送给目标主机&…

腾讯云4核8G12M轻量应用服务器性能够用吗?支持多少人?

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线?通用型-4核8G-180G-2000G,2000GB月流量,系统盘为180GB SSD盘,12M公网带宽,下载速度峰值为1536KB/s,即1.5M/秒,假设网站内页平均大小为60KB…

备战蓝桥杯---组合数学2

本专题主要介绍容斥原理。 大家高中的时候肯定接触过韦恩图&#xff0c;容斥原理比较通俗的理解就是减去所有可能并加上重叠的部分。 我们直接看公式&#xff1a; 知道后&#xff0c;我们先看道模板题&#xff1a; 下面是AC代码&#xff1a; #include<bits/stdc.h> us…

VMware虚拟机安装openEuler系统(二)(2024)

下面我们进行openEuler系统的一些简单配置。 1. 开启openEuler系统 在VMware Workstation Pro虚拟机软件中找到安装好的openEuler操作系统虚拟机并开启。 等待开启。 2. 安装配置 进入后选择第一个“Install openEuler 20.03-LTS”。 3. 选择系统语言 为虚拟机设置系统语言…

分享94个jQuery特效,总有一款适合您

分享94个jQuery特效&#xff0c;总有一款适合您 94个jQuery特效下载链接&#xff1a;https://pan.baidu.com/s/19AsyTWJUPcCX9DN3am53Sg?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理…

秋招上岸大厂,分享一下经验

文章目录 秋招过程学习过程项目经验简历经验面试经验offer选择总结 秋招过程 今天是除夕&#xff0c;秋招已经正式结束了&#xff0c;等春节过完就到了春招的时间点了。 运气比较好&#xff0c;能在秋招的末尾进入一家大厂&#xff0c;拿到20k的sp offer。 从九月份十月份就开…

大文件上传如何做断点续传?

文章目录 一、是什么分片上传断点续传 二、实现思路三、使用场景小结 参考文献 一、是什么 不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂 文件上传简单&#xff0c;文件变大就复杂 上传大文件时&#xff0c;以下几个变量会影响我们的用…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ImageAnimator组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之ImageAnimator组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、ImageAnimator组件 提供分隔器组件&#xff0c;分隔不同内容块/内容元素…

JAVA-数组查找元素

无序数组查找元素 循环遍历查找 通过对无序数组进行遍历&#xff0c;将数组中的每个元素与指定元素比较&#xff0c;从而确定该数组中是否存在指定元素。 字符串数组 public static void main(String[] args) {String[] arr {"Megatron","s司马铁锤",&q…

HiveSQL——设计一张最近180天的注册、活跃留存表

0 问题描述 现有一个用户活跃表user_active(user_id,active_date)、 用户注册表user_regist(user_id,regist_date)&#xff0c;表中分区字段都为dt(yyyy-MM-dd)&#xff0c;用户字段均为user_id; 设计一张 1-180天的注册活跃留存表&#xff1b;表结构如下&#xff1a; 1 数据分…

ctfshow-php特性(web102-web115)

目录 web102 web103 web104 web105 web106 web107 web108 web109 web110 web111 web112 web113 web114 web115 实践是检验真理的 要多多尝试 web102 <?php highlight_file(__FILE__); $v1$_POST[V1]; $v2$_GET[v2]; $v3$_GET[v3]; $v4is_numeric($v2)and is…

controller-manager学习三部曲之二:源码学习

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 作为《controller-manager学习三部曲》系列的第二篇&#xff0c;前面通过shell脚本找到了程序的入口&#xff0c;接下来咱们来学习controller-mana…

c入门第十一篇——物以类聚(数组)

我&#xff1a;“师弟&#xff0c;看你在发呆&#xff0c;怎么了&#xff1f;” 师弟&#xff1a;“师兄&#xff0c;我喜欢的那个女生给我出了一道题。题目是输入班上学生的成绩&#xff0c;并对学生成绩排序&#xff0c;我在想怎么做。” 我&#xff1a;“哦&#xff1f;这个…

一文彻底搞懂布隆过滤器

文章目录 1. 基本原理2. 布隆过滤器的优点3. 布隆过滤器的缺点4. 布隆过滤器的应用场景 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种空间高效的概率数据结构&#xff0c;用于判断一个元素是否在一个集合中。它使用位数组和一系列哈希函数来实现。 1. 基本原理 首先…

IP和ARP相关问题

1.IP协议的作用&#xff1f; IP协议属于网络层的协议&#xff0c;主要作用是定义数据包的格式&#xff0c;对数据包进行路由和寻址&#xff0c;以便它们可以跨网络传播并到达正确的目的地。目前的IP协议分为两种&#xff0c;分为IPv4和IPv6。 2.IPv4和IPv6的区别&#xff1f;…

综合例题及补充

目录 查询员工的编号、姓名、雇佣日期&#xff0c;以及计算出每一位员工到今天为止被雇佣的年数、月数、天数 计算出年 计算月 计算天数 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 查询员工的编号、姓名、雇佣日期&#xff0c…

项目排期 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 项目组共有N个开发人员&#xff0c;项目经理接到了M个独立的需求&#xff0c;每个需求的工作量不同&#xff0c;且每个需求只能由一个开发人员独立完成&#xff0…