Linux基础
VIM 三个模式
- 一般指令模式(Command mode):VIM 的默认模式,可以用于移动游标查看内容;
- 编辑模式(Insert mode):按下 “i” 等按键之后进入,可以对文本进行编辑;
- 指令列模式(Bottom-line mode):按下 “:” 按键之后进入,用于保存退出等操作。 在指令列模式下,有以下命令用于离开或者保存文件。
命令 | 作用 |
---|---|
:w | 写入磁盘 |
:w! | 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关 |
:q | 离开 |
:q! | 强制离开不保存 |
:wq | 写入磁盘后离开 |
:wq! | 强制写入磁盘后离开 |
drwxr-xr-x 表示文件所有者、文件所属组和其他用户的权限。
r
表示读权限(read),表示允许读取该文件或目录的内容。w
表示写权限(write),表示允许对该文件或目录进行写入操作,包括修改、删除等。x
表示执行权限(execute),对于文件来说表示可以执行,对于目录来说表示可以进入该目录。
常见的文件类型及其含义有:
- d:目录
- -:文件
- l:链接文件
**
Ctrl+C
**:- 在终端中,
Ctrl+C
通常用于中断当前正在运行的进程。当你按下Ctrl+C
键时,终端会向当前正在前台运行的程序发送一个中断信号(SIGINT),导致程序终止运行并返回到终端提示符状态。 - 这个操作对于停止长时间运行的命令或程序非常有用,例如如果你运行了一个无限循环的命令,按下
Ctrl+C
就可以停止它。
- 在终端中,
**
Ctrl+Z
**:- 在终端中,
Ctrl+Z
通常用于将当前正在运行的进程挂起(暂停)。 - 当你按下
Ctrl+Z
键时,终端会向当前正在前台运行的程序发送一个挂起信号(SIGTSTP),导致程序被暂停执行,并返回到终端提示符状态。 - 挂起的程序可以使用
fg
命令恢复到前台继续执行,也可以使用bg
命令将其转移到后台继续执行。
PATH
可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。
1
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
- 在终端中,
文件系统
对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。
而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。
文件与目录的基本操作
1. ls
列出文件或者目录的信息,目录的信息就是其中包含的文件。
1 | ## ls [-aAdfFhilnrRSt] file|dir |
2. cd
更换当前目录。
1 | cd [相对路径或绝对路径] |
3. mkdir
创建目录。
1 | ## mkdir [-mp] 目录名称 |
4. rmdir
删除目录,目录必须为空。
1 | rmdir [-p] 目录名称 |
5. touch
更新文件时间或者建立新文件。
1 | ## touch [-acdmt] filename |
6. cp
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。
1 | cp [-adfilprsu] source destination |
7. rm
删除文件。
1 | ## rm [-fir] 文件或目录 |
8. mv
移动文件。
1 | ## mv [-fiu] source destination |
修改权限
可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。
1 | ## chmod [-R] xyz dirname/filename |
示例:将 .bashrc 文件的权限修改为 -rwxr-xr–。
1 | ## chmod 754 .bashrc |
也可以使用符号来设定权限。
1 | ## chmod [ugoa] [+-=] [rwx] dirname/filename |
示例:为 .bashrc 文件的所有用户添加写权限。
链接
1 | ## ln [-sf] source_filename dist_filename |
1. 实体链接
在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。
删除任意一个条目,文件还是存在,只要引用数量不为 0。
有以下限制:不能跨越文件系统、不能对目录进行链接。
1 | ## ln /etc/crontab . |
2. 符号链接
符号链接文件保存着源文件所在的绝对路径,在读取时会定位到源文件上,可以理解为 Windows 的快捷方式。
当源文件被删除了,链接文件就打不开了。
因为记录的是路径,所以可以为目录建立符号链接。
1 | ## ll -i /etc/crontab /root/crontab2 |
获取文件内容
1. cat
取得文件内容。
1 | ## cat [-AbEnTv] filename |
指令与文件搜索
1. which
指令搜索。
1 | ## which [-a] command |
4. find
文件搜索。可以使用文件的属性和权限进行搜索。
1 | ## find [basedir] [option] |
① 与时间有关的选项
1 | -mtime n :列出在 n 天前的那一天修改过内容的文件 |
+4、4 和 -4 的指示的时间范围如下:
② 与文件拥有者和所属群组有关的选项
1 | -uid n |
③ 与文件权限和名称有关的选项
1 | -name filename |
压缩指令
gzip
gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。
经过 gzip 压缩过,源文件就不存在了。
有 9 个不同的压缩等级可以使用。
可以使用 zcat、zmore、zless 来读取压缩文件的内容。
1 | $ gzip [-cdtv#] filename |
打包
压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gzip、bzip2、xz 将打包文件进行压缩。
1 | $ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩 |
使用方式 | 命令 |
---|---|
打包压缩 | tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 |
查 看 | tar -jtv -f filename.tar.bz2 |
解压缩 | tar -jxv -f filename.tar.bz2 -C 要解压缩的目录 |
七、Bash
特性
- 命令历史:记录使用过的命令
- 命令与文件补全:快捷键:tab
- 命名别名:例如 ll 是 ls -al 的别名
- shell scripts
- 通配符:例如 ls -l /usr/bin/X* 列出 /usr/bin 下面所有以 X 开头的文件
变量操作
对一个变量赋值直接使用 =。
对变量取用需要在变量前加上 $ ,也可以用 ${} 的形式;
输出变量使用 echo 命令。
1 | $ x=abc |
变量内容如果有空格,必须使用双引号或者单引号。
数据流重定向
重定向指的是使用文件代替标准输入、标准输出和标准错误输出。
1 | 代码 | 运算符 |
---|---|---|
标准输入 (stdin) | 0 | < 或 << |
标准输出 (stdout) | 1 | > 或 >> |
标准错误输出 (stderr) | 2 | 2> 或 2>> |
其中,有一个箭头的表示以覆盖的方式重定向,而有两个箭头的表示以追加的方式重定向。
可以将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱。
如果需要将标准输出以及标准错误输出同时重定向到一个文件,需要将某个输出转换为另一个输出,例如 2>&1 表示将标准错误输出转换为标准输出。
1 | $ find /home -name .bashrc > list 2>&1 |
八、管道指令
管道是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管道。
在命令之间使用 | 分隔各个管道命令。
1 | $ ls -al /etc | less |
九、正则表达式
grep
g/re/p(globally search a regular expression and print),使用正则表示式进行全局查找并打印。
1 | $ grep [-acinv] [--color=auto] 搜寻字符串 filename |
示例:把含有 the 字符串的行提取出来(注意默认会有 –color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串)
1 | $ grep -n 'the' regular_express.txt |
示例:正则表达式 a{m,n} 用来匹配字符 a m~n 次,这里需要将 { 和 } 进行转义,因为它们在 shell 是有特殊意义的。
1 | $ grep -n 'a\{2,5\}' regular_express.txt |