-
Vi和Vim的区别和联系
所属栏目:[Linux] 日期:2020-12-14 热度:93
我们知道,Vi 编辑器是 Unix 系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。 尽管 Vi 可能是世界上复杂的编辑器(讨厌它的人是这么认为的),但其拥有的大量特性使其成为 Unix 管理员[详细]
-
Shell代码块重定向
所属栏目:[Linux] 日期:2020-12-14 热度:188
所谓代码块,就是由多条语句组成的一个整体;for、while、until 循环,或者 if...else、case...in 选择结构,或者由 { } 包围的命令都可以称为代码块。 请转到《Shell组命令》了解更多关于 {} 的细节。 将重定向命令放在代码块的结尾处,就可以对代码块中的所[详细]
-
Linux文件描述符到底是什么?
所属栏目:[Linux] 日期:2020-12-14 热度:144
Linux 中一切皆文件,比如 C++ 源文件、视频文件、Shell脚本、可执行文件等,就连键盘、显示器、鼠标等硬件设备也都是文件。 一个 Linux 进程可以打开成百上千个文件,为了表示和区分已经打开的文件,Linux 会给每个文件分配一个编号(一个 ID),这个编号就[详细]
-
Linux重建RPM数据库(RPM数据库损坏的解决方案)
所属栏目:[Linux] 日期:2020-12-14 热度:88
我们知道,RPM 包是很多 Linux 发行版(Fefora、RedHat、SuSE 等)采用的软件包管理方式,安装到系统中的各 RPM 包,其必要信息都会保存到 RPM 数据库中,以便用户使用 rpm 命令对软件包执行查询、安装和卸载等操作。 但并非所有的用户操作都“按常理出牌”,[详细]
-
RPM包和源码包,选择哪种安装方式更好?
所属栏目:[Linux] 日期:2020-12-14 热度:97
通过前面的学习我们知道,使用 RPM 包(或 SRPM 包)和源码包都可以实现软件的安装和升级。那么,如果要对软件进行升级,又或是安装新的软件,应该选择哪种安装方式呢? 注意,由于 SRPM 包本质上依然为 RPM 包,因此本节将 SRPM 包安装归属于 RPM 包安装方式[详细]
-
Shell Here Document(内嵌文档/嵌入文档)
所属栏目:[Linux] 日期:2020-12-14 热度:198
Shell 还有一种特殊形式的重定向叫做“Here Document”,目前没有统一的翻译,你可以将它理解为“嵌入文档”“内嵌文档”“立即文档”。 所谓文档,就是命令需要处理的数据或者字符串;所谓嵌入,就是把数据和代码放在一起,而不是分开存放(比如将数据放在一[详细]
-
Linux脚本程序包及安装方法(以webmin安装为例)详解
所属栏目:[Linux] 日期:2020-12-14 热度:88
脚本程序并不多见,所以在软件包分类中并没有把它列为一类。它更加类似于 Windows 下的程序安装,有一个可执行的安装程序,只要运行安装程序,然后进行简单的功能定制选择(比如指定安装目录等),就可以安装成功,只不过是在字符界面完成的。 目前常见的脚本[详细]
-
Linux函数库(静态函数库和动态函数库)及安装过程
所属栏目:[Linux] 日期:2020-12-14 热度:178
Linux 系统中存在大量的函数库。简单来讲,函数库就是一些函数的集合,每个函数都具有独立的功能且能被外界调用。 我们在编写代码时,有些功能根本不需要自己实现,直接调用函数库中的函数即可。 需要注意的是,函数库中的函数并不是以源代码的形式存在的,而[详细]
-
Linux Vim显示行号方法详解
所属栏目:[Linux] 日期:2020-12-14 热度:78
在使用 Vim 进行编辑的过程中,经常会遇到需要同时对连续几行进行操作的情况,这时如果每行都有行号提示,就会非常方便。 在命令模式下输入":set nu"即可显示每一行的行号,如图 1 所示。 图 1 显示行号 如果想要取消行 号,则再次输入":set nonu"即可。 如果[详细]
-
Shell关联数组
所属栏目:[Linux] 日期:2020-12-14 热度:119
现在最新的 Bash Shell 已经支持关联数组了。关联数组使用字符串作为下标,而不是整数,这样可以做到见名知意。 关联数组也称为“键值对(key-value)”数组,键(key)也即字符串形式的数组下标,值(value)也即元素值。 例如,我们可以创建一个叫做 color[详细]
-
结合Linux文件描述符谈重定向,彻底理解重定向的本质!
所属栏目:[Linux] 日期:2020-12-14 热度:105
《Linux重定向》一节讲解了输入输出重定向的各种写法,并提到了文件描述符的概念;《Linux文件描述符》一节从底层剖析了文件描述符的本质,它只不过是一个数组下标。本节我们就将两者结合起来,看看 Shell 是如何借助文件描述符实现重定向的。 Linux 系统这个[详细]
-
Vim配置文件(.vimrc),Vim配置教程
所属栏目:[Linux] 日期:2020-12-14 热度:165
Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim。 Vim 配置文件分为系统配置文件和用户配置文件: 系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc); 用户配置文件位于主目录 ~/.vimrc,即通过执[详细]
-
Linux RPM包依赖性(含解决方案)
所属栏目:[Linux] 日期:2020-12-14 热度:54
RPM 软件包(包含 SRPM 包)的依赖性主要体现在 RPM 包安装与卸载的过程中。 例如,如果采用最基础的方式(基础服务器方式)安装 Linux 系统,则 gcc 这个软件是没有安装的,需要自己手工安装。当你使用 rpm 命令安装 gcc 软件的 RPM 包,就会发生依赖性错误[详细]
-
Linux Vim多窗口编辑,Vim打开多个窗口方法详解
所属栏目:[Linux] 日期:2020-12-14 热度:158
在编辑文件时,有时需要参考另一个文件,如果在两个文件之间进行切换则比较麻烦。可以使用 Vim 同时打开两个文件,每个文件分别占用一个窗口。 例如,在査看 /etc/passwd 时需要参考 /etc/shadow,有两种办法可以实现: 先使用 Vim 打开第一个文件,接着输入[详细]
-
编写自己的Shell配置文件(脚本)
所属栏目:[Linux] 日期:2020-12-14 热度:125
学习了《Shell配置文件的加载》一节,读者应该知道 Shell 在登录和非登录时都会加载哪些配置文件了。对于普通用户来说,也许?~/.bashrc 才是最重要的文件,因为不管是否登录都会加载该文件。 我们可以将自己的一些代码添加到?~/.bashrc,这样每次启动 Shell[详细]
-
Shell组命令
所属栏目:[Linux] 日期:2020-12-14 热度:54
所谓组命令,就是将多个命令划分为一组,或者看成一个整体。 Shell 组命令的写法有两种: { command1; command2; command3; . . .? } (command1; command2; command3;. . . ) 两种写法的区别在于:由花括号 {} 包围起来的组命名在当前 Shell 进程中执行,而由[详细]
-
Linux进程是什么
所属栏目:[Linux] 日期:2020-12-14 热度:171
进程是 Linux 操作系统中最重要的基本概念之一,这一节我们将了解学习 Linux 进程的一些基础知识。 进程是运行在 Linux 中的程序的一个实例。这是一个你之前就可能已经听说过的基本定义。 当你在 Linux 系统中执行一个程序时,系统会为这个程序创建特定的环境[详细]
-
Linux文件特殊权限(SUID、SGID和SBIT)设置详解
所属栏目:[Linux] 日期:2020-12-14 热度:182
前面已经学习 SUID、SGID、SBIT 特殊权限,以及各自的含义和功能,那么,如何给文件或目录手动设定这些特殊权限呢? 还是要依赖 chmod 命令。我们知道,使用 chmod 命令给文件或目录设定权限,有 2 种方式,分别是使用数字形式和字母形式。例如: #数字形式 [[详细]
-
子Shell和子进程
所属栏目:[Linux] 日期:2020-12-14 热度:180
Shell 中有很多方法产生子进程,比如以新进程的方式运行 Shell 脚本,使用组命令、管道、命令替换等,但是这些子进程是有区别的。 子进程的概念是由父进程的概念引申而来的。在 Linux 系统中,系统运行的应用程序几乎都是从 init(pid为 1 的进程)进程派生而[详细]
-
Shell进程替换
所属栏目:[Linux] 日期:2020-12-14 热度:70
进程替换和命令替换非常相似。命令替换是把一个命令的输出结果赋值给另一个变量,例如 dir_files=`ls -l` 或 date_time=$(date) ;而进程替换则是把一个命令的输出结果传递给另一个(组)命令。 为了说明进程替换的必要性,我们先来看一个使用管道的例子: ec[详细]
-
SetUID(SUID)千万不要胡乱使用!
所属栏目:[Linux] 日期:2020-12-14 热度:62
SetUID权限设置不当,会给 Linux 系统造成重大安全隐患。 前面的例子中,我们试验了将 passwd 命令取消 SUID 权限,这会导致 passwd 命令的功能失效。那么,如果我们手动给默认无 SetUID 权限的系统命令赋予 SetUID 权限,会出现什么情况呢? 比如说,我们尝[详细]
-
Linux文件系统不是必须的,而是必要的!
所属栏目:[Linux] 日期:2020-12-14 热度:52
在 Linux下能看到类似 /usr、/home 的目录,在 Windows 下能看到 C 盘、D 盘等,同时可以很轻松地在这些系统下添加、删除文件,这就是文件系统提供的功能。如果没有文件系统支持,看似很简单的操作将变得异常复杂。 使用文件系统是和使用裸设备相对而言的。裸[详细]
-
Linux中的信号
所属栏目:[Linux] 日期:2020-12-14 热度:83
在 Linux 中,理解信号的概念是非常重要的。这是因为,信号被用于通过 Linux 命令行所做的一些常见活动中。例如,每当你按 Ctrl+C 组合键来从命令行终结一个命令的执行,你就使用了信号。每当你使用如下命令来结束一个进程时,你就使用了信号: kill -9 [PID][详细]
-
Shell模块化(source命令)
所属栏目:[Linux] 日期:2020-12-14 热度:176
所谓模块化,就是把代码分散到多个文件或者文件夹。对于大中型项目,模块化是必须的,否则会在一个文件中堆积成千上万行代码,这简直是一种灾难。 基本上所有的编程语言都支持模块化,以达到代码复用的效果,比如,Java 和 Python 中有 import,C/C++ 中有 #i[详细]
-
Linux挂载光盘(使用mount命令)
所属栏目:[Linux] 日期:2020-12-14 热度:184
在 Windows 中,如果我们想要使用光盘,只需要将光盘放入光驱即可。但在 Linux 系统中,将光盘放入光驱后,还需要将光盘中的文件系统手动挂载到 Linux 系统中,还可以使用。 同样,用完光盘后,Windows 系统可以直接弹出光驱并取出光盘,但 Linux 系统不行,[详细]