一、简单命令操作
命令行提示字符
[root@localhost ~]#(或[root@localhost ~]$)
[当前登录系统的用户@主机名称 当前所在的目录]#($)
# 表示为管理员登录
$ 表示为普通用户登录
1.用户相关
su 用户名 | 切换用户 |
su - 用户名 | 切换到指定用户的家目录 |
pwd | 显示当前的目录 |
whoami | 查看当前用户 |
2.主机名相关
hostname | 查看当前主机名 |
hostname 名称 | 修改主机名(临时修改) |
hostnamectl set-hostname 名称 | 修改主机名(永久修改) |
重启后主机名会变回原主机名
- 修改主机名配置文件实现主机名的修改(重启后生效)
按i键进行编辑
按esc键退出编辑,并按shift键+;输入:,再输入wq保存
3.版本信息相关
uname -r | 查看当前内核版本 |
cat /etc/系统-release | 查看当前系统版本信息 |
cat /etc/*release | 查看当前系统版本信息 |
cat /etc/os-release | 查看当前系统版本信息 |
4.网卡IP相关
vi /etc/sysconfig/network-scripts/ifcfg-网卡名称 | 进入网卡IP配置文件 (永久修改) |
systemctl restart network | 重启所有的网卡 |
ifdown 网卡名称 | 关闭某个网卡 |
ifup 网卡名称 | 启动某个网卡 |
ifconfig(或ip address) | 查看网卡地址 |
ifconfig 网卡名称 (或ip address show dev 网卡名称) | 查看指定网卡地址 |
ifconfig 网卡名称 IP地址/掩码 (或ip address add IP地址 dev 网卡名称) | 修改网卡IP(临时) |
ip address del IP地址 dev 网卡名称 | 删除指定IP地址 |
具体操作见参考链接博客中(“五、Linux系统安装/16.右击空白处打开终端进行一些初始配置”中修改网卡IP相关操作)
5.清空命令页面
clear | 清空当前命令页面(鼠标滚轮上滑仍可查看历史命令) |
Ctrl键+l | 清空当前命令页面(鼠标滚轮上滑仍可查看历史命令) |
6.路由相关
route -n | 查看路由 |
route add -net 网段 掩码 gw 网关IP dev 出站网卡 | 设置路由(网段) |
route add -host 主机IP gw 网关IP dev 出站网卡 | 设置路由(主机) |
ip route add 网段/掩码 via 网关IP dev 出站网卡 | 设置路由 |
route add del -net 网段 掩码(或主机IP) | 删除路由 |
route add -net 0.0.0.0 netmask 0.0.0.0 gw 网关IP dev 出站网卡 | 设置默认路由 |
route add default gw 网关IP | 设置默认路由 |
以上均为临时添加,重启后失效 | |
vi /etc/sysconfig/static-routes | 进入路由配置文件 (永久修改) |
输入vi /etc/sysconfig/static-routes命令后按i键进入编辑模式
7.测试网络连接
ping IP地址 |
traceroute(静态跟踪) IP地址 |
mtr(动态跟踪) IP地址 |
8.计算机关机重启
reboot | 重启 |
init 6 | 重启 |
shutdown -r 时间(min) | 重启(根据设定时间) |
poweroff | 关机 |
init 0 | 关机 |
shutdown -h 时间(min) | 关机(根据设定时间) |
9.小知识(Xshell中给命令行提示符添加颜色)
PS1="\[\e[1;34m\][\u@\h \W]\\$\[\e[0m\]"
| 定义左边的"[" |
| 定义用户名 |
| 定义"@" |
| 定义第一个点(.)之前的主机名 |
| 定义目录完整路径 |
| 定义"]" |
| 定义"#"或"$" |
| 一段不显示字串的结束 |
10.DNS服务器配置
vi /etc/sysconfig/network-scripts/ifcfg-网卡名称 | 进入网卡IP配置文件 |
vi /etc/resolv.conf | 进入DNS配置文件 |
方法一相关操作见4.网卡IP相关
方法二在文件中添加:nameserver IP地址
二、常用命令精讲
1.Shell
- Linux系统中运行的一种特殊程序,位于用户与内核之间
- 在用户和内核之间充当“翻译官”(即作用)
接收用户输入的命令,并将命令翻译成计算机语言,传递给内核执行调用相关硬件资源
- 用户登录Linux系统时,自动加载一个Shell程序
- Bash是Linux系统中默认使用的Shell程序
文件位于bin/bash
2.Linux命令的分类
- 内部命令与外部命令的区别
内部命令(内建指令) | 外部命令 |
集成于shell,属于shell的一部分 | 由一个二进制程序文件或脚本文件组成 |
没有独立的系统文件 | 属于shell之外的,每个外部命令都要有一个对应的系统文件 |
会随着shell自动加载到内存,可以直接使用 | 需要让shell知道文件位置才能自动加载 (将文件放入到PATH环境变量指定的目录中) |
- 判断命令类型的方式
help(查看内部命令) |
enable(查看内部命令) |
type 命令 |
enable –n 命令 | 禁用内部命令 |
enable 命令 | 启用内部命令 |
若需要禁用外部命令则需找到指定文件并将其删除
3.Linux命令行的格式
- 通用的命令行使用格式(英文字符且区分大小写)
命令字 | [选项] | [参数] |
操作 整条命令中最关键的一部分; | 功能 短格式选项:使用“-”符号引导+单字符(多个单字符可组合使用); 长格式选项:使用“--”引导+单词 | 要执行的对象 可以是文件名、目录(路径)名或用户名等内容; 个数可以是零到多个 |
4.编辑Linux命令行
- 编辑Linux命令行的辅助操作
Tab键一次 /两次 | 自动补齐命令、文件、目录 /显示所有匹配命令、文件、目录 |
反斜杠“\” | 强制换行(显示中换行,实际内容不换行) |
Ctrl+U | 清空至行首 |
Ctrl+K | 清空至行尾 |
Ctrl+L | 清屏(只是保持当前界面历史内容不可见,鼠标滚轮上滑仍可查看历史内容) |
Ctrl+C | 取消本次命令编辑 |
Ctrl+A | 切换到行首 |
Ctrl+E | 切换到行尾 |
5.获取命令帮助的方法
- 内部命令 help
查看shell内部命令的帮助信息
- 命令的--help选项
适用于大部分Linux外部系统命令
- 使用man命令阅读手册页
- 使用↑、↓(ENTER)方向键滚动一行文本
- 使用Page Up和Page Down(空格)键翻页
- 按Q或q键退出环境
- 按/键查找内容,n键向下查找,N键向上查找
6.查看当前工作目录-pwd
显示用户当前所在的工作目录位置
7.切换工作目录-cd
-
将用户的工作目录更改到其他位置
cd 目标位置 | 切换到目标位置 |
cd ~ cd | 若不指定目标位置,切换到当前用户的宿主目录(即家目录) |
cd - | 切换到上一次cd命令之前的所在位置 |
-
绝对路径
以根目录 / 为起点的路径
-
相对路径
- 直接使用文件名/目录名,代表的是以 当前目录 为起点的文件/目录
- ./XXX ,代表的是以 当前目录 为起点的 XXX 文件/目录
- ../XXX ,代表的是以 上一层目录 为起点的 XXX 文件/目录
- ~/XXX ,代表的是以 当前用户的家目录 为起点的 XXX 文件/目录
- ~用户名/XXX ,代表的是 以指定用户的家目录 为起点的 XXX 文件/目录
例1:
例2(通过相对路径):
通过../../回到根目录“/”,在从根目录“/”出发到指定文件进行修改
8.列表显示目录内容-ls
- 显示目录中内容,包含子目录和文件相关属性
以列表形式显示文件本身或目录中的内容
ls | 选项 | 文件或目录 |
- 常用选项
-l | 以长格式的形式显示文件/子目录的属性 |
-a | 显示所有(All)子目录和文件的信息,包括名称以点号“.”开头的隐藏目录和隐藏文件 |
-A | 与-a 选项的作用基本类似,但有两个特殊隐藏目录不会显示,即表示当前目录的“.”和表示父目录的“..” |
-h | 以人性化的方式显示文件/子目录大小(默认单位为字节) |
-d | 显示目录本身的属性,而不是显示目录中的内容 |
-R | 以递归的方式显示目录中所有子目录的内容 |
-t | 以时间排序显示,默认从最新到最老的方式 |
-r | 反向排序 |
-i | 显示文件和目录的inode号 |
--color | 在字符模式中以颜色区分不同的文件。默认已开启 通常情况下,深蓝色表示目录,白色表示一般文件,绿色表示可执行的文件,黄色表示设备文件,红色表示压缩文件。 |
- ls -l命令下的7个字段
第1字段 | 文件属性字 第1字符代表文件的类型: “-”表示该文件是一个普通文件 “d”表示该文件是一个目录 “l”表示该文件是一个软链接文件 “c”表示该文件是一个设备文件; 第1字符的后面9个字母表示该文件或目录的权限位: r表示读(查看、下载)、w表示写(添加、更改、删除、上传)、x表示执行(运行文件、切换目录) 其中前三个表示文件拥有者(属主)的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限 |
第2字段 | 文件硬链接数 如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数 如果是一个目录,则第2字段表示该目录所含子目录的个数 如果新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录(目录“.”和“..”) |
第3字段 | 文件\目录拥有者 属主 |
第4字段 | 文件\目录拥有者所在的组名 属组 |
第5字段 | 文件所占用的空间(默认以字节为单位) 如果是一个目录,则表示该目录的大小,而不是目录以及它下面的文件的总大小 |
第6字段 | 文件\目录最近访问或修改时间 |
第7字段 | 文件名 如果是一个符号链接(软链接文件),那么会有一个 “→” 箭头符号,后面根一个它指向的文件名 |
例
ls -alh | 以长格式显示目录下所有文件包括隐藏文件,并且文件大小以人性化的方式转变单位 |
ls -ltr | 以长格式显示目录下的文件属性,并且以时间倒序的方式排序(即由旧到新) |
- 结合通配符
? | 代表任意一个字符,有且只有一个字符 |
* | 代表任意数个字符,可以是0个或者1个或者多个 |
[] | 表示可以匹配字符组中的任意1个字符 |
9.设置别名-alias
- 通过别名机制简化常用的、比较长的命令
alias 命令别名="命令"
unalias 命令别名 | 取消命令别名 |
alias | 显示所有的别名命令 |
10.统计目录及文件空间占用情况-du
- 统计指定目录(或文件)所占用磁盘空间的大小
du | 选项 | 文件或目录 |
- 常用选项
-a | 统计目录及其所有子目录和文件的占用大小 |
-s | 仅统计目录本身的占用大小,不能和 -a 选项同时使用 |
-h | 以人性化的方式显示占用大小(默认单位为KB) |
- 找出最大文件(逐层寻找)
du --max-depth=1(查看一层目录) | 简写du -d 1 |
- ls -lh和du -h的区别
ls -lh | du -h |
文件大小 | 文件占用磁盘空间大小 |
文件1kb,占用磁盘空间最少为4kb;磁盘写入文件以块保存,一块至少为4kb
11.创建新目录-mkdir
创建新的空目录
mkdir | 选项 | 目录位置及名称 |
mkdir -p | 一次性创建多层目录 |
- 一次性创建大量目录
12.创建空文件-touch
更新文件的时间标记
经常用于创建多个新的空文件
touch 文件
- 小知识
文件名与目录名必须保持唯一性,不能创建相同名称的文件、目录
13.创建链接文件-ln
为文件或目录建立链接文件,类似于Windows系统中的快捷方式
-
链接文件类型
-
软链接(符号链接)
ln | -s | 源文件或目录 | 链接文件或目标位置 |
-
硬链接
ln | 源文件或目录 | 链接文件或目标位置 |
- 小知识:
- 在Linux中,文件名和文件的数据是分开存储的
- 在Linux中,只有文件的硬链接数=0才会被删除
- 使用ls -l可以查看文件硬链接的数量
- 在日常工作中,几乎不会建立文件的硬链接
-
软连接和硬链接的区别
软链接 | 硬链接 |
删除源文件会失效 | 删除源文件不会失效 (因为是和源文件共享同一个文件数据) |
适用于文件和目录 | 只适用于文件 |
软链接文件可以和源文件不在同一个分区里 | 硬链接文件必须要和源文件在同一个分区里 |
软链接文件和源文件inode号不同 | 硬链接文件和源文件inode号相同 |
- 小知识
- 当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名;但是删除一个文件名,不影响别的文件名的访问。删除一个文件名,只会使得"硬链接数"减 1。需要注意的是不能对目录做硬链接。在日常工作中几乎不会建立文件的硬链接。
- 源文件路径建议使用绝对路径来表示,防止因为链接文件位置变化而失效
14.复制文件的目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp | 选项 | 源文件或目录 | 目标文件或目录 |
- 常用选项
-f | 覆盖目标同名文件或目录时不进行提醒,而直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
- 小知识
复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在
15.删除文件或目录-rm
删除指定的文件或目录
rm | 选项 | 要删除的文件或目录 |
- 常用选项
-f | 删除文件或目录时不进行提醒,而直接强制删除 |
-i | 删除文件或目录时提醒用户确认(y表示删除,n表示不删除) |
-r | 删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用) |
- 小知识
不要直接删除系统中已有的目录或配置文件,以避免出现意外故障
删除目录下文件时建议最好先切换到目录下再执删除命令
16.移动文件或目录-mv
将指定的文件或目录转移位置
如果目标位置与源位置想通,则相当于执行重命名操作
mv | 选项 | 源文件或目录 | 目标文件或目录 |
- 小知识
mv命令只能对单个文件重命名,可使用rename命令批量修改文件名
rename | 旧字符 | 新字符 | 目标文件 |
17.查看命令文件存放目录-which
搜索范围由环境变量PATH决定(echo$PATH)
which | 命令|程序名 | 默认当找到第一个目标后不再继续查找 | |
which | -a | 命令|程序名 | 在所有搜索路径中查找 |
- 使用which查找内部命令时,将找不到对应的程序
18.查找文件或目录-find
采用递归方式,根据目录的名称、类型、大小等不同属性进行精细查找
find | 查找范围 (查找文件或子目录的目录位置) | 查找条件表达式 (查找条件类型) |
-
常用查找条件类型
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用“+"、"-”号设置超过或小于指定的大小作为查找条件 |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等块设备文件(b):成块读取数据的设备(硬盘,内存,光驱)字符设备文件(c):按单个字符读取数据的设备(键盘,鼠标) |
-
使用find命令实现多个查找命令
各表达式之间使用逻辑运算符
-a | 表示而且(and) |
-o | 表示或者(or) |
-
find之exec用法
-exec参数后面跟的是Linux命令,它是以“;”为结束标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符“\”,{}代表前面find查找出的文件名
find命令匹配到了当前目录下的所有普通文件,并在-exec选项中ls -l命令将它们列出
19.命令执行的优先级
- 第一优先级:指定路径的命令。绝对路径 /usr/bin/ls 或者相对路径 cd /usr/bin ./ls
- 第二优先级:别名指定的命令 alias myls='/usr/bin/ls -alh'
- 第三优先级:内部命令
- 第四优先级:hash 命令
- linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。hash表能提高命令的调用速率。
- 第五优先级:通过 PATH 定义的路径顺序查找
如果以上顺序都找不到,就会报“未找到命令...”的错误。