知识库

标准化实施手册及常见错误


Linux常见概念及操作

<h2>常见概念</h2> <h3>终端的概念</h3> <p>  通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal)。下面是几个比较常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm。   终端本质上是对应着Linux上的/dev/tty设备。Linux的多用户登录就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录。在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。当你切换到其中一个终端后想要切换回图形界面,你可以按下[Ctrl]+[Alt]+[F7]来完成。</p> <h3>shell的概念</h3> <p>  通常在图形界面中对实际体验带来差异的不是上述的不同发行版的各种终端模拟器,而是这个 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。</p> <h3>用户、权限</h3> <h4>ls -l</h4> <p><code>使用较长格式列出文件</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/0d8ede3163b6ab11e0b16395d8d4945d" alt="" /> 你可能除了知道最后面那一项是文件名之外,其它项就不太清楚了,那么到底是什么意思呢: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/3a02181378d1beb9150fd877138c8e55" alt="" /> 可能你还是不太明白,比如第一项文件类型和权限那一堆东西具体指什么,链接又是什么,何为最后修改时间,下面一一道来: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c9cbcd3e28dc1c0727dec9ebd543e331" alt="" /></p> <ul> <li>文件类型   关于文件类型,这里有一点你必需时刻牢记 <strong>Linux 里面一切皆文件</strong>,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字,具体是什么,感兴趣的用户可以自己去了解或期待实验楼的后续相关课程。pipe 管道,这个东西很重要,我们以后将会讨论到,这里你先知道有它的存在即可。软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了)</li> </ul> <h3>常用命令详解</h3> <p><strong>前言:</strong>   在linux中,最最重要的就是命令,这就包含了2个过程,输入和输出</p> <ul> <li>输入:输入当然就是打开终端,然后按键盘输入,然后按回车,输入格式一般就是这类的 <pre><code class="language-shell"># 创建一个名为 file 的文件 touch file # 进入/etc目录 cd /etc/ # 查看当前所在目录 pwd</code></pre></li> <li>输出:输出会返回你想要的结果,比如你要看什么文件,就会返回文件的内容。如果只是执行,执行失败会告诉你哪里错了,如果执行成功那么会没有输出,因为linux的哲学就是:没有结果就是最好的结果 <strong>常用快捷键</strong> <code>Tab</code>使用Tab键来进行命令补全,Tab键一般是在字母Q旁边,这个技巧给你带来的最大的好处就是当你忘记某个命令的全称时可以只输入它的开头的一部分,然后按下Tab键就可以得到提示或者帮助完成: <code>Crtl+c</code>想想你有没有遇到过这种情况,当你在 Linux 命令行中无意输入了一个不知道的命令,或者错误地使用了一个命令,导致在终端里出现了你无法预料的情况,比如,屏幕上只有光标在闪烁却无法继续输入命令,或者不停地输出一大堆你不想要的结果。你想要立即停止并恢复到你可控的状态,那该怎么办呢?这时候你就可以使用Ctrl+c键来强行终止当前程序 <code>上几条命令</code>很简单,你可以使用键盘上的方向上键↑,恢复你之前输入过的命令,你一试便知。 <code>学会在命令行历史中搜索</code>想想你有没有遇到过这种情况,当你在 Linux 命令行中曾经输入过一个很长的命令,而且离上次操作隔了很久,导致用键盘上的方向上键↑往回找要找很久,这时候你就可以使用Ctrl+r键来用关键字来匹配曾经输入过的命令。 <code>学会在命令行中获取帮助</code>在 Linux 环境中,如果你遇到困难,可以使用man命令,它是Manual pages的缩写。   Manual pages 是 UNIX 或类 UNIX 操作系统中在线软件文档的一种普遍的形式, 内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man命令调用手册页。 你可以使用如下方式来获得某个命令的说明和使用方式的详细介绍: <pre><code class="language-shell">man &amp;lt;command_name&amp;gt;</code></pre> <h4>创建用户、修改用户密码、切换当前用户</h4> <p>  在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户   root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,用 Windows 的方法理解也就是将自己的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。   我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。   sudo 命令的功能就是将命令以root权限进行执行(普通用户暂借root用户权限)</p> <pre><code class="language-shell">创建用户:sudo useradd lilei # 除了添加用户至系统,同时会在/home下生成和用户同名的家目录 修改用户密码:sudo passwd lilei # linux系统输入密码时不会显示,需要输入两次,输完回车即可 切换用户:su 或su - # su &amp;lt;user&amp;gt; 可以切换到用户 user,执行时需要输入目标用户的密码 # su - &amp;lt;user&amp;gt; 切换用户并进入用户家目录,同时环境变量也会跟着改变成目标用户的环境变量 删除用户:sudo userdel -r lilei # 删除用户的同时删除用户对应的家目录 添加用户到其他组: # 此命令必须是root用户执行或者拥有sudo权限的用户 sudo groupadd huahua # 创建huahua组 sudo useradd -g huahua lilei # 新建用户lilei并加入huahua组</code></pre> <h4>服务器重启、关闭</h4> <pre><code class="language-shell">重启: shutdown -r now reboot init 6 关闭: shutdown -h now halt init 0 poweroff</code></pre> <h4>查看网络信息、网卡</h4> <pre><code class="language-shell">ficonfig、ip a、ip add、ip add show</code></pre> <p>  命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。使用 ifconfig 命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址),以及 RX、TX 的接收数据包与发送数据包的个数及累计流量。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/0a19170343008c06ac8094b30a6cd390" alt="" /></p> <h4>查看系统信息</h4> <pre><code class="language-shell">uname cat /proc/version</code></pre> <p>  用于查看系统内核与系统版本等信息,格式为“uname [-a]”。在使用uname 命令时,一般会固定搭配上-a 参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9514c5e535ece335feb5e88035f329d8" alt="" /></p> <h4>查看当前位置</h4> <pre><code class="language-shell">pwd # 用于显示用户当前所处的工作目录,格式为: pwd [选项]</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c846dff61d862bade5a8c8ebbe4ed0b5" alt="" /></p> <h4>切换工作路径</h4> <p>  cd 命令用于切换工作路径,格式为“cd [目录名称]”。这个命令应该是最常用的一个 Linux 命令了。可以通过 cd 命令迅速、灵活地切换到不同的工作目录。除了常见的切换目录方式,还可以使用“cd -”命令返回到上一次所处的目录,使用“cd..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,亦或使用 “cd ~username”切换到其他用户的家目录。例如,可以使用“cd 路径”的方式切换进/etc目录中 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7650a831474ea6e5926ee7e81edec553" alt="" /></p> <h4>显示文件信息</h4> <p>  ls 命令用于显示目录中的文件信息,格式为“ls [选项] [文件] ”。所处的工作目录不同,当前工作目录下的文件肯定也不同。使用 ls 命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行 ls 命令即可查看当前目录中的所有文件并输出这些文件的属性信息: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/f57b3efcce066e3c6151f1aad038edde" alt="" /></p> <h4>查看文本内容</h4> <p>  cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。 Linux 系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件的。如果在查看文本内容时还想顺便显示行号的话,不妨在 cat 命令后面追加一个-n 参数: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/6db495c88cf86e56c5ceaffcec7c5e80" alt="" /></p> <h4>文本文件实时监控</h4> <p>  tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。 我们可能还会遇到另外一种情况,比如需要查看文本内容的最后 20 行,这时就需要用到 tail 命令了,只需要执行“tail -n 20 文件名”命令就可以达到这样的效果。tail 命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名”: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/07b7e381030a7c0195cda3565ce2d52f" alt="" /></p> <h4>创建空目录</h4> <p>  mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”。在 Linux 系统中,文件夹是最常见的文件类型之一。除了能创建单个空白目录外,mkdir命令还可以结合-p 参数来递归创建出具有嵌套叠层关系的文件目录。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c783b8596cf70e718a5b289f2288a614" alt="" /></p> <h4>复制命令</h4> <p>cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。大家对文件复制操作应该不陌生,在 Linux 系统中,复制操作具体分为 3 种情况:  1.如果目标文件是目录,则会把源文件复制到该目录中;  2.如果目标文件也是普通文件,则会询问是否要覆盖它;  3.如果目标文件不存在,则执行正常的复制操作。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9dd970193e55302ae9ce176e31558f69" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a786d5a95250dd9451f712e8adac9923" alt="" /></p> <h4>文件剪切重命名</h4> <p>  mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/692c1101ffd6ed607170c122c13f6e65" alt="" /></p> <h4>删除命令</h4> <p>  rm 命令用于删除文件或目录,格式为“rm [选项] 文件”。在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后跟上-f 参数来强制删除。另外,想要删除一个目录,需要在 rm 命令后面一个-r 参数才可以,否则删除不掉。我们来尝试删除前面创建的 install.log 和 linux.log 文件: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c92205deee4d44b9d34031b6eca884e8" alt="" /></p> <h4>压缩命令</h4> <p>  tar 命令用于对文件进行打包压缩或解压,格式为“tar [参数] [文件]”。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8ef488884859a7fdabec04ca1ee3852f" alt="" />   -c 参数用于创建压缩文件,-x 参数用于解压文件,因此这两个参数不能同时使用。-z 参数指定使用 Gzip 格式来压缩或解压文件,-j 参数指定使用 bzip2 格式来压缩或解压文件。用户使用时则是根据文件的后缀来决定应使用何种格式参数进行解压。在执行某些压缩或解压操作时,可能需要花费数个小时,如果屏幕一直没有输出,您一方面不好判断打包的进度情况,另一方面也会怀疑电脑死机了,因此非常推荐使用-v 参数向用户不断显示压缩或解压的过程。-C 参数用于指定要解压到哪个指定的目录。-f 参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”。下面我们来逐个演示下打包压缩与解压的操作。先使用 tar 命令把/ 目录通过 gzip 格式进行打包压缩,并把文件命名为 etc.tar.gz: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/729ff0bceb44356dffb7e1dc8386c93e" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/0bfa5c5d0c80a2340a57f113a5bbab35" alt="" /></p> <h4>vim文本编辑器</h4> <p>  vim是vi的升级版。Vim 之所以能得到广大厂商与用户的认可,原因在于 Vim 编辑器中设置了三种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。  1.命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。  2.输入模式:正常的文本录入。  3.末行模式:保存或退出文档,以及设置编辑环境。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7ed7d80a3b8d1b05ee255cae162b96b2" alt="" />   在每次运行 Vim 编辑器时,默认进入命令模式,此时需要先按切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在 Vim 中,无法直接从输入模式切换到末行模式。以下是在命令模式中最常用的一些命令: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8d9692369355670423957a20b6297452" alt="" />   末行模式主要用于保存或退出文件,以及设置 Vim 编辑器的工作环境,还可以让用户执行外部的 Linux 命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。末行模式中可用的命令如下: <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/5b93ea45b241bf11a4e76c09153538af" alt="" /> 编写脚本文档的第1步就是给文档取个名字,这里将其命名为 practice.txt。如果存着该文档,则是打开它。如果不存在,则是创建一个临时的输入文件。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a6561b162c06cbf1cce0ee7f3f538e3e" alt="" /> 打开 practice.txt 文档后,默认进入的是 Vim 编辑器的命令模式。此时只能执行该模式下的命令,而不能随意输入文本内容,我们需要切换到输入模式才可以编写文档。可以分别使用 a、i、o 三个键从命令模式切换到输入模式。其中,a 键 与 i 键分别是在光标后面一位和光标当前位置切换到输入模式,而 o 键则是在光标的下面再创建一个空行,此时可敲击 a 键进入到编辑器的输入模式,进入输入模式后,可以随意输入文本内容,Vim 编辑器不会把您输入的文本内容当作命令而执行,输入完成后按Esc键切换至命令模式,输入:wq!强制保存退出,输入:q!强制不保存退出。 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/e5e98f8bb52c56622ee0b788d5dea8e5" alt="" /> &lt;center&gt;命令模式&lt;/center&gt; <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/419ef5260d4c7fb52621f517d809868f" alt="" /> &lt;center&gt;输入模式&lt;/center&gt; <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/85cbc24302bacbfc55d90e3aabb3eb9f" alt="" /> &lt;center&gt;末行模式&lt;/center&gt;</p></li> </ul>

页面列表

ITEM_HTML