Linux 1 —— 基本介绍与常用指令
Linux 目录结构
不同于 Windows 下的磁盘分区,Linux 以目录的方式组织系统中的所有文件。
以根目录为起点,用 / 表示
1 | [root@localhost ~]# ls / |
| 系统目录 | 作用 |
|---|---|
| /bin | 常用系统程序目录 |
| /boot | 开机设定目录,存放 vimlinuz 核心 |
| /dev | 系统设备装置文件(device) |
| /etc | 系统配置文件 |
| /etc/rc.d/init.d | 存放系统开机时载入服务的脚本 |
| /home | 系统用户目录 |
| /lib | Linux 执行或编译程序函数库目录 |
| /mnt | 软驱、光驱挂载目录 |
| /proc | 系统核心与执行程序信息 |
| /root | 管理员目录 |
| /usr/bin | 一般执行文件存放的地方 |
| /var | 系统日志文件 |
| /lost+found | 系统产生错误时遗失的片段 |
Linux 文件存储
文件结构
-
名字
-
索引节点(iNode),又称
I 节点,存放文件的状态信息的一个数据结构。包含文件的长度、创建及修改时间、权限、所属关系、磁盘位置等。一个 inode 节点表示一个文件,不同的文件具有不同的 inode 节点值。
-
磁盘数据
文件存储

系统结构
主要组件
关机/重启
Linux 只允许管理员关机和重启设备
关机指令(选择其一)
1 | shutdown -h now |
重启指令(选择其一)
1 | shutdown -r now |
重定向
输入重定向
1 | < filename |
1 | # 计算 list.txt 的行数 |
输出重定向
1 | > filename |
1 | echo abc > list.txt |
追加重定向:输出在文件末尾
1 | >> filename |
1 | echo abc >> list.txt |
重定向标准输出流和错误流
1 | 1>stdout.txt 2>stderr.txt |
1 | ls /usr /err 1>stdout.txt 2>stderr.txt |
结果如下:
1 | [root@localhost ~]# cat stderr.txt |
将错误流输出到标准输出流中
1 | 2>&1 |
1 | [root@localhost ~]# ls /usr /err 1>stdout.txt 2>&1 |
丢弃错误信息
1 | ls /usr /err 2>/dev/null |
将错误流重定向到 /dev/null 中进行丢弃,即不展示错误信息。
管道
把前一个命令的输出作为下一个命令的输入
格式:Command 1 | Command 2 | Command 3
例子:
1 | cat /etc/passwd | grep root | wc -l |
文件类型
普通文件( regular file ) :[ - ]
- 纯文字文件(ascii)
- 二进制文件(binary)
目录 (directory): [ d ]
链接文件 (link):[ l ]
设备文件 (device):
-
区块 (block) 设备文件:[ b ]
-
字符(character) 设备文件:[ c ]
管道文件(Pipe): [ p ]
Socket文件(Socket): [ s ]
Command: shutdown
用处:关机
格式:shutdown [选项] 时间 [消息]
时间:关机的时间
消息:发给正在使用的用户消息
| 选项 | 描述 |
|---|---|
| -t seconds | 设定在几秒钟之后进行关机程序 |
| -k | 并不会真的关机,只是将警告讯息传送给所有使用者 |
| -r | 关机后重新开机 |
| -h | 关机后停机 |
| -n | 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机 |
| -c | 取消目前已经进行中的关机动作 |
1 | [root@localhost ~]# shutdown -t seconds 3 |
立即关机
1 | shutdown -h now |
十分钟后关机
1 | shutdown -h 10 |
重启
1 | shutdown -r now |
Comman: init
作用:切换运行模式
格式:init 代码
| 代码(runlevel) | 描述 |
|---|---|
| 0 | 关机 |
| 1 | 单用户运行级别 |
| 2 | 多用户,字符模式,但系统不会启动NFS |
| 3 | 多用户,字符模式,系统启动具有网络功能,常用运行级别 |
| 4 | 用户自定义级别 |
| 5 | 图形界面模式 |
| 6 | 重启 |
Command: halt
作用:关机。先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown -h 来关闭系统
格式:halt [选项]
| 选项 | 描述 |
|---|---|
| -d | 不留下日志记录 |
| -f | 不论目前的runlevel为何,不调用shutdown即强制关闭系统 |
| -i | 在halt之前,关闭全部的网络界面 |
| -n | halt前,不用先执行sync |
| -p | halt之后,执行poweroff关闭电源 |
| -w | 取消目前已经进行中的关机动作 |
Command: reboot
作用:重新启动计算机。若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown -r 取代
格式: reboot [选项]
| 选项 | 描述 |
|---|---|
| -d | 不把记录写到 /var/log/wtmp 档案里 |
| -f | 强迫重开机,不呼叫 shutdown 这个指令 |
| -i | 在重开机之前,关闭全部的网络界面 |
| -n | 在重开机前不做将记忆体资料写回硬盘的动作 |
| -w | 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里 |
Command: Clear
清空屏幕
1 | clear |
Command: echo
打印内容
格式:echo [-n] 字符串
-n:最后不换行
1 | echo Hello World |
Command: ls
显示详细信息
1 | ls -l |
1 | -rw-r--r-- 1 root root 54 May 25 10:40 1.txt |
| - | rw- | r– | r– | 1 | root | root | 54 | May 25 10:40 | 1.txt |
|---|---|---|---|---|---|---|---|---|---|
| - 普通文件、d目录 | 所有者权限 | 组用户权限 | 其他用户权限 | 普通文件链接数/目录文件第一级目录数(包含隐藏的目录 . …) | 用户名 | 组名 | 文件大小(byte) | 修改时间 | 文件名 |
显示所有文件包括隐藏文件(包括.和..)
1 | ls -a |
显示所有文件(不包括 . 和 ..)
1 | ls -A |
按照文件大小排序
1 | ls -S |
显示文件 inode 序号
1 | ls -i |
递归显示子目录
1 | ls -R |
Command: pwd
显示当前路径(完整绝对路径)
1 | [root@localhost testdir]# pwd |
Home Directory
用户主目录
普通用户在 /home/username 下
root 用户在 /root 下
1 | [root@localhost testdir]# ls /home |
快速切换到 home
1 | cd ~ |
. & …
. 目录代表当前目前本身
.. 目录代表父目录
对于 /,. 和 .. 都代表 /
直接使用 ls 无法查看,必须使用 ls -a
Command: mkdir
创建目录
格式:mkdir [参数] <目录名>
使用 -p 会自动补齐所有中间目录
1 | mkdir -p a/b/c |
Command: rmdir
删除空目录
格式:rmdir [参数] <目录名>
使用 -p 会自动删除过程中产生的所有空目录
1 | rmdir -p a/b/c |
Command: rm
删除文件或目录
格式:rm [参数] <路径>
使用 -r 递归删除目录中所有的内容,使用 -f 跳过确认
Command: touch
改变文件的时间记录或创建一个空文件
格式:touch [参数] <文件名>
| 参数 | 作用 |
|---|---|
| -a | 改变文件的读取时间记录 |
| -m | 改变文件的修改时间记录 |
| -r | 使用目标文件的时间记录 touch -r sourceFile targetFile |
| -d | 设定时间与日期,可以使用各种不同的格式 |
Command: cat
打开文件并打印到标准输出设备上
格式:cat [选项] <文件>
使用 -n 给每行编号,使用 -b 给除了空白行之外的每行进行编号
1 | cat -n file1 file2 |
Command: more
分页显示文件内容
格式: more [选项] <文件>…
-
一次性加载
-
只能往下翻
基本操作
-
q 退出
-
空格 下一页
-
回车 下一行
Command: less
分页显示文件内容
格式: less [选项] <文件>…
-
支持上下翻
-
按需加载
基本操作
-
q 退出
-
空格 下一页
-
回车 下一行
-
上下移动键 上下移动
| 参数 | 作用 |
|---|---|
| -e | 当文件显示结束后,自动退出 |
| -f | 强迫打开特殊文件 |
| -i | 忽略搜索时的大小写 |
| -N | 显示每行的行号 |
| -s | 显示连续空行为一行 |
Command: head
显示文件的开头的内容。默认显示文件的前 10 行。
格式: head [选项] <文件>
| 参数 | 作用 |
|---|---|
| -q | 隐藏文件名 |
| -v | 显示文件名 |
| -c<数目> | 显示的字节数 |
| -n<行数> | 显示的行数 |
Command: tail
显示文件的结尾的内容。默认显示文件的最后 10 行内容
格式: tail [选项] <文件>
| 参数 | 作用 |
|---|---|
| -f | 当文件变化时输出文件新增内容 |
| -c<数目> | 显示的字节数 |
| -n<行数> | 显示的行数 |
| -v | 显示文件名 |
Command: cp
复制文件或目录
格式:cp [选项] 原路径 目标路径
| 参数 | 作用 |
|---|---|
| -a | 复制目录时,保留链接、文件属性,并复制目录下的所有内容 |
| -f | 覆盖已存在的目标文件而不进行提示 |
| -p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中 |
| -r | 递归复制目录中的所有内容,包括子目录 |
Command: mv
移动文件或目录(重命名)
格式: mv [选项] 原路径… 目标路径
| 参数 | 选项 |
|---|---|
| -i | 目标路径如果同名,先询问是否覆盖 |
| -f | 覆盖已经存在的目标文件而不给提示 |
| -n | 不要覆盖任何已存在的文件或目录 |
Command: ln
创建文件的快捷方式
格式: ln [-s] 源路径 目标路径
硬链接(hard link):给文件一个副本(别名),同时建立两者之间的连接关系,修改其中一个,与其连接的文件同时被修改,如果删除其中一个,其余的文件不受影响。磁盘上只有一份数据。硬链接是存在同一个文件系统中。
软链接(symbolic link):软链接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。它只是一个快捷方式,删除了源文件,连接文件全部失效。软链接可以跨越不同的文件系统。
硬链接是在某个目录项下新增一个元数据链接到某个 inode 的关联记录。如果将任何一个元数据删除,文件的 inode 与 block 都还存在,依然还可以通过另一个文件名来读取正确的档案数据。此外,不论用哪一个文件名来编辑,最终的结果都会写入相同的 inode 和 block 中,因此均能进行数据的修改尽管硬链接节省空间。
Command: tar
备份(压缩)文件
格式:tar [选项] 压缩文件名 路径
| 参数 | 作用 |
|---|---|
| -c | 创建备份 |
| -C path | 切换到指定目录 |
| -f | 指定备份文件的名称 |
| -t | 测试备份文件 |
| -v | 显示指令执行过程 |
| -x | 从备份中还原文件 |
| -z | 通过gzip指令处理备份文件 |
1 | # 压缩 |
打包后 .tar -> 使用 gzip 压缩后 .tar.gz
Command: gzip
压缩文件
格式:gzip [选项] 文件…
| 参数 | 作用 |
|---|---|
| -d | 解开压缩文件 |
| -l | 列出压缩文件的相关信息 |
| -r | 递归处理指定目录 |
| -v | 显示指令执行过程 |
| -t | 测试压缩文件是否有误 |
1 | gzip dir1 |
Command: unzip
用于解压缩zip文件
格式:unzip [选项] 路径
| 参数 | 作用 |
|---|---|
| -n | 解压时不要覆盖原有文件 |
| -l | 列出压缩文件的相关信息 |
| -d dir | 指定解压时存放的目录 |
| -v | 显示指令执行过程 |
| -t | 测试压缩文件是否有误 |
Command: awk
文本数据处理工具
格式:
awk [选项] '脚本命令' 文件名
cat 文件名 | awk [选项] '脚本命令’
| 参数 | 作用 |
|---|---|
| -F fs | 指定分隔符fs,fs可以是字符串或正则表达式 |
| -v | 赋值一个用户定义变量 |
| -f scriptfile | 从脚本文件中读取awk命令 |
1 | # -va=1新建一个a变量赋值为1,-F:按照:分割数据,'{print $1,$4+a}' 打印第一个和第五个 |
Command: sed
编辑一个或多个文件
格式:sed [选项] '处理格式' 路径
| 参数 | 作用 |
|---|---|
| a | 在指定行号之后插入 |
| c | 整行替换 |
| s | 匹配替换 |
| i | 在指定行号位置插入 |
| d | 删除 |
1 | sed '1a Hello Unix' test.txt |
Command: cut
从指定文件中过滤或提取特定内容,并显示在当前屏幕上
格式:cut [选项] 路径
| 参数 | 作用 |
|---|---|
| -b | 以字节为单位进行分割 |
| -c | 以字符为单位进行分割 |
| -d | 自定义分隔符,默认为制表符 |
| -f | 与-d一起使用,指定显示哪个区域 |
1 | # 指定分隔符和显示范围 |
Command: tr
用于转换或删除文件中的字符并输出
格式:tr [-d] 字符串1 字符串2
例子
1 | cat /etc/passwd | tr 'a-z' 'A-Z' |
Command: find
查找文件或者目录
格式:find 路径 [选项] 表达式
| 参数 | 作用 |
|---|---|
| -amin n | 在过去n分钟内被读取过的文件 |
| -atime n | 在过去n天内被读取过的文件 |
| -cmin n | 在过去n分钟内被修改过的文件 |
| -ctime n | 在过去n天内被修改过的文件 |
| -type c | 文件类型是c的文件 |
| -perm p | 文件权限为p的文件 |
| -name n | 文件名为n的文件 |
1 | find . -name "*.conf" |
Command: grep
查找文件里符合条件的字符串
格式:
grep [选项] pattern 文件…
cat 文件… | grep [选项] pattern
Command: cal
打印日期
格式:cal [选项]
| 参数 | 作用 |
|---|---|
| -3 | 显示最近三个月的日历(只能显示第三个月) |
| -s | 将星期天作为月的第一天 |
| -m | 将星期一作为月的第一天 |
| -y | 显示当年日历 |
Command: date
显示或设定系统的日期与时间
格式:date [选项] 时间格式
| 时间格式 | 作用 |
|---|---|
| %H | 小时(00…23) |
| %M | 分钟(2位) |
| %S | 秒(2位) |
| %Y | 完整年份(4位) |
| %m | 月份(2位) |
| %d | 日(2位) |
1 | date '+%Y-%m-%d %H:%M:%S' |
Command: wc
默认统计文件内的 行/字/字节 数
格式:wc [选项] 文件路径
| 参数 | 作用 |
|---|---|
| -c | 按字节统计 |
| -l | 按行数统计 |
| -m | 按字符统计 |
| -w | 按单词统计 |
1 | wc /etc/passwd |
Command: sort
对内容排序
格式:sort [选项] 文件路径
| 参数 | 作用 |
|---|---|
| -f | 排序时,将小写字母视为大写字母 |
| -n | 按照数值大小排序 |
| -u | 去重排序 |
| -o file | 将排序后的结果存入指定的文件 |
| -r | 以相反的顺序来排序 |
1 | sort -r /etc/passwd |
Command: which & whereis
从下列文件夹中搜索指定文件,并输出完整路径
1 | /usr/local/sbin |
1 | which useradd |