Linux学习笔记(一):命令类型与常用命令

内部命令与外部命令

内部命令是 shell 程序的一部分,其中包含的是一些比较简单的 linux 系统命令,这些命令由shell程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。内部命令是写在 bash 源码里面的,其执行速度比外部命令快,因为解析内部命令 shell不需要创建子进程。比如:exit, history, cd, echo等。 外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。shell 程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在 bash 之外额外安装的,通常放在/bin, /usr/bin, /sbin,/usr/sbin 等位置。 使用type命令可以区分内部命令

继续阅读Linux学习笔记(一):命令类型与常用命令

Linux学习笔记(十一)——sed命令

sed 是 Linux 下的一种流编辑器(Stream Editor),用以处理编辑输入流(文件、管道等)。在使用时,sed 将输入流逐行读进一个叫做模式空间的缓存区,进行编辑处理后再输出。
sed 的命令语法如下
sed [options] ‘AddressCommand’ FILE

参数
-n 静默模式,不显示模式空间中的内容
-i 直接修改源文件
-e SCRIPT 执行脚本,可以同时执行多个( -e SCRIPT -e SCRIPT …)
-f /PATH/TO/SCRIPT/ 从文件读取脚本
-r 使用扩展正则表达式 在引号间,可以使用以下定址来决定处理哪些行

  • StartLine,Endline    从startLine到Endline之间的行数,$代表最后一行
  • /RegExp/  成功匹配RegExp的行
  • /Pattern1/,/Pattern2/ 第一次匹配Pattern1开始到第一次匹配Pattern2间的行
  • LineNumber 指定行
  • StartLine,+N 从StartLine开始向后N行

在定址之后,便可以用命令来决定如何处理刚刚选定的行
d: 删除符合条件的行
p: 显示符合条件的行
a \string: 在符合条件的行后追加内容为 string 的新行
i \string: ~前
r FILE 将指定文件的内容添加到符合条件的行后
w FILE 将地址指定的行另存到指定文件中
s/pattern/replacement 查找并替换,默认只替换每一行第一次被匹配到的字符串修饰符g: 全局替换i: 忽略大小写

Linux学习笔记(十)——bash脚本编程:变量、条件判断、算数运算

Shell

shell是指一种提供了访问操作系统内核服务界面的应用程序。Ken Thompson的sh是第一种Unix Shell,而Windows Explorer则是一个典型的图形界面Shell。而Shell脚本(shell script),是则是指为shell编写的脚本程序。

和其他脚本程序一样,Shell脚本只许一个解释器就可以运行。在Linux下,默认安装了Shell解释器,而其中最为流行的就是bash。
继续阅读Linux学习笔记(十)——bash脚本编程:变量、条件判断、算数运算

Linux学习笔记(九)——grep与正则表达式

grep

grep是Global search regular expression(RE) and Print out the line的缩写,全面搜索匹配正则表达式的内容并输出。

grep家族包括了grep、egrep和fgrep三个命令。其中egrep和fgrep的命令只跟grep有很小的不同。egrep(Extended grep)是grep的扩展,支持更多的正则元字符,而 fgrep(Fixed grep或Fast grep)则把所有的字母都看作单词。

grep [OPTIONS] PATTERN [FILE…]
常用参数
-i 忽略大小写
–color 匹配到的文字高亮显示
-v 显示没有被匹配的行
-o 只显示被匹配到的字符串

继续阅读Linux学习笔记(九)——grep与正则表达式

Linux学习笔记(八)——管道和I/O重定向

计算机的五大部件分别是运算器、控制器(这两部分合称CPU)、存储器(RAM)输入设备和输出设备。

而在CPU里有三种总线分别实现不同的功能。
  • 地址总线:内存寻址
  • 数据总线:传输数据
  • 控制总线:控制指令

这三种总线在机器内部这是复用的,因此就需要寄存器暂时储存数据和指令。

  • 寄存器:CPU暂时存储器

此外,就是I/O设备来实现数据的输入和输出了。

  • INPUT设备
  • OUTPUT设备

继续阅读Linux学习笔记(八)——管道和I/O重定向

Linux学习笔记(七)——权限管理

权限类别

在之前的内容里已经提到,Linux的权限分为以下三种:

  • r – read – 读取
  • w – write – 写入
  • x – execute – 执行

而每一个文件或者目录,又为三种用户类别设置了分别设置了权限:

  • u – user – 属主
  • g – group – 属组
  • o – other – 其他用户

因此,就有了Linux下的9位一组的权限。
继续阅读Linux学习笔记(七)——权限管理

Linux学习笔记(五):用户及权限

权限

Linux为了保证安全,为每个文件设置了r、w、x这3种代表不同操作的权限,而对文件和目录,这三种权限的表现方式略有不同。

对于文件来说,
r代表可读,可以使用类似cat等命令查看命令内容;
w代表可写,可以编辑或删除;
x代表可执行,可以命令提示符下当做命令提交给内核运行;

而对于目录来说,
r表示可以对此目录ls以列出内部所有文件;
w表示可以在此目录创建文件;
x则表示可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;

这些3种权限合为一组,可以用8进制的数字表示出来:
继续阅读Linux学习笔记(五):用户及权限

Linux学习笔记(四):bash特性

什么是bash

说到bash,就不得不提到shell。
在Linux中,shell是直接和内核交互的最低层的应用程序从而实现用户和计算机交互。shell有很多种,而bash则是其中的一员。bash的功能相对气筒shell来说功能更为强大,又是开源软件,因此成为了大多数Linux系统的默认shell。

当用户登录系统后,系统就为当前用户建立了一个进程用来运行bash,不用的用户之间互不影响。

bash特性

作为一款功能强大的shell,bash提供了很多特性,可以大大简化我们的操作,其中大致包括:

  1. 命令历史、命令补全
  2. 管道和重定向
  3. 命令别名
  4. 命令行编辑
  5. 命令行展开
  6. 文件名通配
  7. 变量
  8. 编程

继续阅读Linux学习笔记(四):bash特性

解决WordPress无限提示翻译更新

博客搬了家后,我一直遇到这么一个问题,WordPress 不断提示有翻译需要更新,点了更新后提示更新成功,但返回 Dashboard 却仍然继续提示更新,无限循环,虽然没有什么影响,但作为一个半强迫症患者,天天对着一个小红点无疑是种折磨。

因为在正常模式下没有给出错误信息,所以打开 debug 模式,再次进入到 updates 的页面,发现在页面上方打出的错误信息:

Warning: scandir is disabled for security reason....

可以得知scandir()函数由于安全原因被禁用了,所以无法完成更新。
我的主机是 LNMP 环境,默认情况下 PHP 是禁用这个函数的。修复这个问题就很简单了,找到 php.ini,搜索 disable_functions, 删掉其中的scandir参数,保存后重启php-fpm,再回到博客的 updates 页面,重新更新一下就OK了。