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 |