Linux笔记

linux

基础

Ctrl + d 键盘输入结束或者退出终端

Ctrl + S 暂停当前程序,暂停后按下任意键回复

Ctrl + z 将当前程序加到后台运行, 回复到前台命令是fg

Ctrl + a 将光标移到行头,相当于Home键

Ctrl + e 将光标移到行尾,相当于end键

Ctrl + k 删除光标所在位置到行末

alt + backspace 向前删除一个单词

shift + PgUp 将终端显示向上滚动

shift + PgDn 将终端显示向下滚动

shift + 上下左右 移动选中区域

通配符

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

在创建文件的时候,如果需要一次性创建多个文件,比如:“love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt”。在 Linux 中十分方便:$ touch love_{1..10}_linux.txt#### Shell 常用通配符:*匹配 0 或多个字符 ?匹配任意一个字符 [list]匹配 list 中的任意单一字符 [!list]匹配 除list 中的任意单一字符以外的字符 [c1-c2]匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] {string1,string2,...}匹配 sring1 或 string2 (或更多)其一字符串 {c1..c2}匹配 c1-c2 中全部字符 如{1..10}## 权限管理who 命令其它常用参数参数说明 -a打印能打印的全部 -d打印死掉的进程 -m同am i,mom likes -q打印当前登录用户数及用户名 -u打印当前登录用户登录信息 -r打印运行等级 root账户拥有至高无上的权利。可以创建/删除用户 su可以切换到用户user sudo可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码 su -命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。

在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,你的兄弟姐妹(不同的用户)属于同一个家(用户组),你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。、

使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限

sudo adduser lilei

sudo deluser lilei --remove-home

一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息

chmod go-rw iphone6 ,'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。修改权限

目录及文件

使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(**注意,还记得我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。

FHS标准

绝对路径

关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。

相对路径,

也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin (这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则需要使用 .. ,比如你当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录("home"目录)的上一级目录("/"目录)

有时候你会遇到想要删除一些为只读权限的文件,直接使用rm删除会显示一个提示

你如果想忽略这提示,直接删除文件,可以使用-f参数强制删除

使用通配符批量创建 5 个文件

$ touch file{1..5}.txt

批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件

$ rename 's/.txt/.c/' *.txt

批量将这 5 个文件,文件名改为大写

$ rename 'y/a-z/A-Z/' *.c

使用cat,tac和nl命令查看文件

这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示。

nl命令,添加行号并打印,这是个比cat -n更专业的行号打印命令。

-b : 指定添加行号的方式,主要有两种:

-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)

-b t:只列出非空行的编号并列出(默认为这种方式)

-n : 设置行号的样式,主要有三种:

-n ln:在行号字段最左端显示

-n rn:在行号字段最右边显示,且不加 0

-n rz:在行号字段最右边显示,且加 0

-w : 行号字段占用的位数(默认为 6 位)

使用more和less命令分页查看文件

如果说上面的 cat 是用来快速查看一个文件内容的,那么这个more和less就是天生用来"阅读"一个文件的内容的,比如说"man"手册内部就是使用的 less 来显示内容。其中more命令比较简单,只能向一个方向滚动,而"less"为基于"more"和"vi"(一个强大的编辑器,我们有单独的课程来让你学习)开发,功能更强大。less 的使用基本和 more 一致,具体使用请查看 man 手册,这里只介绍 more 命令的使用。

使用head和tail命令查看文件

这两个命令那些性子比较急的人应该会比较喜欢,因为它们一个是只查看的头几行(默认为10行,不足10行则显示全部)和尾几行。还是拿 passwd 文件举例,比如当我们想要查看最近新增加的用户,那么我们可以查看这个/etc/passwd文件,不过我们前面也看到了,这个文件里面一大堆乱糟糟的东西,看起来实在费神啊。这里想到系统新增加一个用户,应该会将用户的信息添加到passwd文件的最后,那么这时候我们就可以使用tail命令了:甚至更直接的只看一行, 加上-n参数,后面紧跟行数:

推荐阅读更多精彩内容