实验楼Linux基础挑战2答案,实验楼-Linux基础-实验二 Linux的基本概念及操作

一、实验介绍

1.1 实验内容

实验楼环境介绍

常用 Shell 命令及快捷键

Linux 使用小技巧

1.2 实验知识点

Linux 基本命令

通配符的使用

查看帮助文档

二、桌面环境

1.Linux 桌面环境介绍

相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,类似 Windows95 之前的 Windows 的图形界面实则也只是运行在 DOS 环境的一套软件。而 Linux 上的这套软件以前是 XFree86,现在则是 xorg(X.Org),而这套软件又是通过 X 窗口系统(X Window System,也常被称为 X11 或 X)实现的,X 本身只是工具包及架构协议,而 xorg 便是 X 架构规范的一个实现体,也就是说它是实现了 X 协议规范的一个提供图形界面服务的服务器,就像实现了 http 协议提供 web 服务的 Apache 。如果只有服务器也是不能实现一个完整的桌面环境的,当然还需要一个客户端,我们称为 X Client,像如下几个大家熟知也最流行的实现了客户端功能的桌面环境 KDE,GNOME,XFCE,LXDE 。其中就有你看到的,实验楼目前使用的 XFCE 桌面环境,部分老用户可能可以回想起,实验楼之前使用的环境是 LXDE 。这也意味着在 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面。

e91b441bbf2b9740e2c89de24f172946.png

三、Linux终端

3.1 终端的概念

通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal)。 下面是几个比较常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。目前我们的实验中的终端程序是 xfce 桌面环境自带的 xfce-terminal 。不过要注意的是这里所说的终端(Terminal)和控制台(Console)是有区别的。

4c0924c88bd197f6c78af230f23e15b7.png

终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录。在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换,不过在我们的在线实验环境中可能无法切换,因为特殊功能按键会被你的主机系统劫持。当你切换到其中一个终端后想要切换回图形界面,你可以按下[Ctrl]+[Alt]+[F7]来完成。

3.2 Shell

通常在图形界面中对实际体验带来差异的不是上述的不同发行版的各种终端模拟器,而是这个 Shell(壳)。有壳就有核,这里的核就是指 UNIX/Linux 内核,Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe 。普通意义上的 Shell 就是可以接受用户输入命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。同样的 UNIX/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫做“虚拟 shell”或“图形 shell”。

UNIX/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。当然这一点也有别于 Windows 下的命令行,虽然该命令行也提供了很简单的控制语句。在 Windows 操作系统下,有些用户从来都不会直接使用 Shell,然而在 UNIX 系列操作系统下,Shell 仍然是控制系统启动、X11 启动和很多其它实用工具的脚本解释程序。

在 UNIX/Linux 中比较流行的常见的 Shell 有 bash、zsh、ksh、csh 等等,Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME),但我们的环境中使用的分别是 zsh 和 xfce。

3.2.1 命令行操作体验

在linux中,最最重要的就是命令,这就包含了2个过程,输入和输出

输入:输入当然就是打开终端,然后按键盘输入,然后按回车,输入格式一般就是这类的

#创建一个名为 file 的文件,touch是一个命令$ touch file

#进入一个目录,cd是一个命令$ cd /etc/

#查看当前所在目录$ pwd

输出:输出会返回你想要的结果,比如你要看什么文件,就会返回文件的内容。如果只是执行,执行失败会告诉你哪里错了,如果执行成功那么会没有输出,因为linux的哲学就是:没有结果就是最好的结果

开始

如图,双击桌面上的 Xfce 终端 图标打开终端后系统会自动运行 Shell 程序,然后我们就可以输入命令让系统来执行了:

fb1f4865325ddb934bdaad26fd92a753.png

1) 重要快捷键:

真正学习命令行之前,你先要掌握几个十分有用、必需掌握的小技巧:

[Tab]

使用Tab键来进行命令补全,Tab键一般是在字母Q旁边,这个技巧给你带来的最大的好处就是当你忘记某个命令的全称时可以只输入它的开头的一部分,然后按下Tab键就可以得到提示或者帮助完成:

当然不止补全命令,补全目录、补全命令参数都是没问题的:

[Ctrl+c]

想想你有没有遇到过这种情况,当你在 Linux 命令行中无意输入了一个不知道的命令,或者错误地使用了一个命令,导致在终端里出现了你无法预料的情况,比如,屏幕上只有光标在闪烁却无法继续输入命令,或者不停地输出一大堆你不想要的结果。你想要立即停止并恢复到你可控的状态,那该怎么办呢?这时候你就可以使用Ctrl+c键来强行终止当前程序(你可以放心它并不会使终端退出)。

尝试输入以下命令:

$ tail

然后你会发现你接下来的输入都没有任何反应了,只是将你输入的东西显示出来,现在你可以使用Ctrl+c,来中断这个你目前可能还不知道是什么的程序(在后续课程中我们会具体解释这个tail命令是什么)。

又或者输入:

$ find /

显然这不是你想的结果,可以使用Ctrl+c结束。

虽然这个按着很方便,但不要随便按,因为有时候,当你看到终端没有任何反应或提示,也不能接受你的输入时,可能只是运行的程序需要你耐心等一下,就不要急着按Ctrl+c了。

其他一些常用快捷键

按键

作用

Ctrl+d

键盘输入结束或退出终端

Ctrl+s

暂停当前程序,暂停后按下任意键恢复运行

Ctrl+z

将当前程序放到后台运行,恢复到前台为命令fg

Ctrl+a

将光标移至输入行头,相当于Home键

Ctrl+e

将光标移至输入行末,相当于End键

Ctrl+k

删除从光标所在位置到行末

Alt+Backspace

向前删除一个单词

Shift+PgUp

将终端显示向上滚动

Shift+PgDn

将终端显示向下滚动

2) 学会利用历史输入命令

很简单,你可以使用键盘上的方向上键↑,恢复你之前输入过的命令,你一试便知。

3) 学会使用通配符

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。

终端里面输入的通配符是由 Shell 处理的,不是由所涉及的命令语句处理的,它只会出现在命令的“参数值”里(它不能出现在命令名称里, 命令不记得,那就用Tab补全)。当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或文件名在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种 Shell 实现的路径扩展功能。在通配符被处理后, Shell 会先完成该命令的重组,然后继续处理重组后的命令,直至执行该命令。

首先回到用户家目录:

$ cd /home/shiyanlou

然后使用 touch 命令创建 2 个文件,后缀都为 txt:

$ touch asd.txt fgh.txt

可以给文件随意命名,假如过了很长时间,你已经忘了这两个文件的文件名,现在你想在一大堆文件中找到这两个文件,就可以使用通配符:

$ ls *.txt

在创建文件的时候,如果需要一次性创建多个文件,比如:“love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt”。在 Linux 中十分方便:

$ touch love_{1..10}_shiyanlou.txt

Shell 常用通配符:

字符

含义

*

匹配 0 或多个字符

?

匹配任意一个字符

[list]

匹配 list 中的任意单一字符

[^list]

匹配 除list 中的任意单一字符以外的字符

[c1-c2]

匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

{string1,string2,...}

匹配 string1 或 string2 (或更多)其一字符串

{c1..c2}

匹配 c1-c2 中全部字符 如{1..10}

4) 学会在命令行中获取帮助

在 Linux 环境中,如果你遇到困难,可以使用man命令,它是Manual pages的缩写。

Manual pages 是 UNIX 或类 UNIX 操作系统中在线软件文档的一种普遍的形式, 内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man命令调用手册页。

你可以使用如下方式来获得某个命令的说明和使用方式的详细介绍:

$ man

比如你想查看 man 命令本身的使用方式,你可以输入:

man man

通常情况下,man 手册里面的内容都是英文的,这就要求你有一定的英文基础。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面。为了便于查找,man 手册被进行了分册(分区段)处理,在 Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为8个区段,安排如下:

区段

说明

1

一般命令

2

系统调用

3

库函数,涵盖了C标准函数库

4

特殊文件(通常是/dev中的设备)和驱动程序

5

文件格式和约定

6

游戏和屏保

7

杂项

8

系统管理命令和守护进程

要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:

$ man 1 ls

会显示第一区段中的ls命令 man 页面。

d4e9afb706cbfb74e3166bae9d179731.png

所有的手册页遵循一个常见的布局,为了通过简单的 ASCII 文本展示而被优化,而这种情况下可能没有任何形式的高亮或字体控制。一般包括以下部分内容:

NAME(名称)

该命令或函数的名称,接着是一行简介。

SYNOPSIS(概要)

对于命令,正式的描述它如何运行,以及需要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪个头文件包含该函数的定义。

DESCRIPTION(说明)

命令或函数功能的文本描述。

EXAMPLES(示例)

常用的一些示例。

SEE ALSO(参见)

相关命令或函数的列表。

也可能存在其它部分内容,但这些部分没有得到跨手册页的标准化。常见的例子包括:OPTIONS(选项),EXIT STATUS(退出状态),ENVIRONMENT(环境),BUGS(程序漏洞),FILES(文件),AUTHOR(作者),REPORTING BUGS(已知漏洞),HISTORY(历史)和 COPYRIGHT(版权)。

通常 man 手册中的内容很多,你可能不太容易找到你想要的结果,不过幸运的是你可以在 man 中使用搜索/,查找完毕后你可以使用n键切换到下一个关键字所在处,shift+n为上一个关键字所在处。使用Space(空格键)翻页,Enter(回车键)向下滚动一行,或者使用k,j(vim 编辑器的移动键)进行向前向后滚动一行。按下h键为显示使用帮助(因为 man 使用 less 作为阅读器,实为less工具的帮助),按下q退出。

想要获得更详细的帮助,你还可以使用info命令,不过通常使用man就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数,大部分命令都会带有这个参数,如:

$ ls --help

四、作业

本课程会在每一节实验结束部分介绍一个有趣的 Linux 命令,这一节介绍一个可以输出图形字符的命令banner,

你可以先使用如下命令安装:

$ sudo apt-get update

$ sudo apt-get install sysvbanner

4ba899c4c64e7f38727b017508b8608a.png

然后:

$ banner shiyanlou

3052cf7aa6488f4163b75b71d1aeb4fe.png

或者你觉得这字体不好看,那么你还可以使用默认已经安装的一个命令printerbanner:

$ printerbanner -w 50 A

e6e7030dcc6ff868b48f7f110b528409.png

-w参数指定打印宽度,因为我们的环境在屏幕中显示比较小,必须要加上宽度限制。

还有两个类似的命令toilet,figlet,作为作业安装试用

安装toilet

sudo apt-get install toilet

3052cf7aa6488f4163b75b71d1aeb4fe.png

安装 figlet

sudo apt-get install figlet

0069b08976c28602a70e09b6ffd800a6.png

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

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

相关文章

【ZOJ - 3780】Paint the Grid Again(拓扑排序,图论,证明性质)

题干: Leo has a grid with N N cells. He wants to paint each cell with a specific color (either black or white). Leo has a magical brush which can paint any row with black color, or any column with white color. Each time he uses the brush, the…

linux bin su,linux – su:/ bin / bash:资源暂时不可用

无法将用户切换为postgres.postgres用户的ulimit设置设置了合理的限制.我们没有达到最高限度./ var / log / messages中没有错误.BETA -bash-4.2# sudo su - postgressu: /bin/bash: Resource temporarily unavailable设置:BETA -bash-4.2# ps -auxww | grep -i pos…

*【ZOJ - 3781】Paint the Grid Reloaded(dfs求连通块缩点,bfs求最短路,建图技巧)

题干: Leo has a grid with N rows and M columns. All cells are painted with either black or white initially. Two cells A and B are called connected if they share an edge and they are in the same color, or there exists a cell C connected to both…

c语言程序图片马赛克,关于c语言的图像均值滤波 请问大神为什么我的结果都是马赛克...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include #include #include "stdlib.h"#include "string.h"#define width 256#define higth 256//原图象的宽度和高度int lvbo(unsigned char D[]){int a;a(D[0]D[1]D[2…

【HDU - 1533】Going Home(网络流,二分图最优匹配,KM算法)

题干: On a grid map there are n little men and n houses. In each unit time, every little man can move one unit step, either horizontally, or vertically, to an adjacent point. For each little man, you need to pay a $1 travel fee for every step h…

c语言程序设计现代方法快速排序,C语言实现快速排序改进版

利用三者取中法改进快速排序,具体内容如下实现取数组中第一个,中间和最后一个元素的中间元素作为划分元素(否则将这些元素排除在划分过程之外).大小为11或更小的数组在划分过程中被忽略,然后使用插入排序来完成排序.#include #include #include #include #include #…

c语言一个数组后添加元素append,jQuery 追加元素、拼接元素的方法总结(append、html、insertBefore、before等)...

1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同(1) append()方法:$("#test").append("测试"); //在id为test元素内部末尾插入测试(2) appendTo()方法&…

【ZOJ - 4024】Peak(模拟,水题)

题干: A sequence of integers is called a peak, if and only if there exists exactly one integer such that , and for all , and for all . Given an integer sequence, please tell us if its a peak or not. Input There are multiple test cases. …

【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)

题干: 其中 zi 是第i次询问后的z。 解题报告: 因为有取log运算,所以分母的取值肯定不会超过30种,所以分每一个分母的时候,用前缀和优化一个和,最后求乘积就行了。(其实不需要快速幂&#xff0c…

迷宫小游戏c语言代码,C语言编写的迷宫小游戏-源代码

#include #define N 20/*迷宫的大小,可改变*/int oldmap[N][N];/*递归用的数组,用全局变量节约时间*/int yes0;/*yes是判断是否找到路的标志,1找到,0没找到*/int way[100][2],wayn0;/*way数组是显示路线用的,wayn是统计走了几个格子*/void Init(void);/*…

【ZOJ - 4032】Magic Points (思维,几何,构造)

题干: 解题报告: 想到了,这样绕圈构造。但是这样有个问题,最后一个点如何构造。 刚开始想的是n奇数 , 就8 10 这样的连一条,n偶数 就8 11 这样的连一条,随便构造一下就行,但是发…

s7-200 plc 梯形图转换成c语言的方法,S7-200PLC模拟量4-20mA转换成整数程序算法示例.pdf...

S7200PLC 模拟量4 -20 mA 转换成整数程序算法示例S7200PLC 模拟量4 -20 mA 转换成整数程序算法示例,以及模拟量数据滤波平缓处理,消除曲线的尖峰毛刺程序示例。连续采集10 个数,找出最大值,最小值&#xff…

【ZOJ - 4033】CONTINUE...? (思维,整体思想,分组思想)

题干: DreamGrid has classmates numbered from to . Some of them are boys and the others are girls. Each classmate has some gems, and more specifically, the -th classmate has gems. DreamGrid would like to divide the classmates into four group…

android 仿真翻页动画,Android 两Activity之间动画效果(1)---------翻页效果

用Android rotate动画实现翻页效果,效果如图:要实现上面动画,首先搞明白rotate动画原理;(1)Degrees坐标:0度(360度)270度90度 顺时针旋转 180(2)rotate 关键属性fromDegrees 开始旋转时角度 toDegrees 结束时的角…

android 存储不被垃圾清理,手机内存足够大,就不需要清理垃圾了?你错了!

原标题:手机内存足够大,就不需要清理垃圾了?你错了!中新网4月20日电今天,人们使用智能手机的时间已超过电脑,希望在任何时候、任何地方,一部手机搞定所有。对手机的流畅度、性能和安全的要求越来越高。新手机刚到手时非常流畅,用一段时间就出现各种卡顿,网民对猎豹…

【蓝桥杯 - 真题】六角幻方(dfs+剪枝)

标题:六角幻方 把 1 2 3 ... 19 共19个整数排列成六角形状,如下: * * * * * * * * * * * * * * * * * * * 要求每个直线上的数字之和必须相等。共有15条直线哦! 再给点线索吧!我们预先填好了2个数字&…

【2019浙江省赛 - J】Welcome Party(并查集,bfs,优先队列,建图)

题干: The 44th World Finals of the International Collegiate Programming Contest (ICPC 2020) will be held in Moscow, Russia. To celebrate this annual event for the best competitive programmers around the world, it is decided to host a welcome pa…

app android de,Android Deobfuscation

Android Deobfuscation11/11/2019本文内容ProGuard、DexGuard 和 R8 是用于对 Android 应用程序的代码进行优化和模糊处理的工具。 它会删除未使用的代码、重命名具有语义模糊名称的类、字段和方法,使基本代码更小,更难反向工程。 若要在 Android 应用中…

【2019浙江省赛 - B】Element Swapping(思维,数学)

题干: DreamGrid has an integer sequence and he likes it very much. Unfortunately, his naughty roommate BaoBao swapped two elements and () in the sequence when DreamGrid wasnt at home. When DreamGrid comes back, he finds with dismay that his …

android 没有指令,android – 运行时没有命令输出:’am start -n

最近,当我试图在我的设备上运行我的Android应用程序时,我必须在实际启动之前从Eclipse运行它几次.我试图重新安装JRE,JDK和IDE,我试图切换工作区.我还让Eclipse为Java VM使用更多的RAM.我的IDE,JRE,JDK,ADT和ADT插件都是最新的.对此有任何建议非常感谢.No command output when …