Linux 常用命令总结(笔记)
一些基础Linux命令学习笔记
系统常用命令
命令基本格式
命令 [选项] [参数]
ls [选项] [文件或目录]
- 选项
-a
所有文件(包括隐藏)-l
详细信息-d
目录属性-h
人性化显示文件大小-i
显示innode
- 选项
ll
是ls -l
的别名
文件处理命令
目录或文件处理命令
- 建立目录
mkdir -p [目录名]
- 切换目录
cd [目录]
- 查询所在目录位置
pwd
- 删除空目录(一般不用)
rmdir [目录名]
- 删除文件或目录
rm [选项] [文件或目录]
- 选项
-r
删除目录-f
强制
- 选项
- 复制文件或目录
cp [选项] [源文件或目录] [目标目录]
- 选项
-r
复制目录-p
连带文件属性复制-d
若源文件是链接文件,则复制链接属性-a
相当于-pdr
- 选项
- 剪切或改密命令
mv [原文件或目录] [目标目录]
常用类型目录
/
根目录/bin
命令保存目录/boot
启动目录/dev
设备文件/etc
配置文件/home
普通用户家目录/lib
系统库/mnt
挂载目录/root
超级用户的家目录/tmp
临时目录/sbin
命令保存目录(超级用户)/proc
内存的过载点/sys
内存的过载点/usr
系统软件资源/var
系统相关文档内容
链接命令
生成链接文件 ln [选项] [目标文件]
- 选项
-s
创建软链接
- 注意:不在同一目录创建软链接时,目标文件需要写绝对路径
- 选项
硬链接特征
- 拥有相同的i节点和存储block块
- 可通过i节点识别
- 不能跨分区
- 不能针对目录是用
软链接特征
- 类似windows快捷方式
- 拥有自己的i节点和block块,但数据块种只保存原文件的文件名和i节点好,并没有时机的文件数据
- lrwxrwxrwx
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
文件搜索命令
文件名搜索命令locate
locate 文件名
- 在后台数据库种进行搜索,数据库大概每天自动更新一次,也可以手动用
updatedb
更新 - locate的配置文件 /etc/updatedb.conf
PRUNE_BIND_MOUNTS
是否开启搜索限制PRUNEFS
搜索时,不搜索的文件系统PRUNENAMES
搜索时,不搜索的文件类型PRUNEPATHS
搜索时,不搜索的路径
- 在后台数据库种进行搜索,数据库大概每天自动更新一次,也可以手动用
命令搜索命令whereis/which
whereis 命令名
- 搜索命令所在路径及帮助文档所在地址
- 选项:
-b
只查找可执行文件-m
只查找帮助文件
which 命令名
- 搜索命令所在的路径及别名
文件搜索命令find
find [搜索范围] [搜索条件]
- 搜索范围
- 搜索条件:选项+条件
- 选项:
- 搜索选项:
-name
按照文件名搜索-iname
不区分大小写-user
按照所有者搜索-nouser
按照没有所有者的文件-mtime
按照修改文件内容的时间搜索-atime
按照文件访问时间搜索-ctime
按照改变文件属性时间搜索-size
按照文件大小查找-inum
按照i节点查找
- 其他:
-a
逻辑与 and-o
逻辑或 or-exec 命令 {} \;
对搜索结果执行操作
- 搜索选项:
- 选项:
字符串搜索命令grep
grep [选项] 字符串 文件名
- 在文件当中匹配符合条件的字符串
- 选项:
-i
忽略大小写-v
排除指定字符串
find命令与grep命令的区别
- find命令:在系统中搜索符合条件的文件,使用通配符,完全匹配
- grep命令:在文件中搜索符合条件的字符串,使用正则表达式,包含匹配
帮助命令
man 命令
- 获取指定命令的帮助
- man的级别
1
查看命令的帮助2
查看可被内核调用的函数的帮助3
查看函数和函数库的帮助4
查看特殊文件的帮助(主要是/dev目录下的文件)5
查看配置文件的帮助6
查看游戏的帮助7
查看其他杂项的帮助8
查看系统管理员可用的帮助9
查看和内核相关文件的帮助
man -级别 命令
- 查看该级别命令的帮助
man -f 命令
- 查看命令拥有哪个级别的帮助
- 相当于
whatis 命令
man -k 命令
- 查看和命令相关的所有帮助
- 相当于
apropos 命令
- 其他帮助命令
- 选项帮助
命令 --help
获取命令选项的帮助
- shell内部命令帮助
help shell内部命令
获取shell内部命令的帮助- 可以用
whereis 命令
确定是否是shell内部命令
- 详细命令帮助info
info 命令
-回车
进入子帮助页面(带有*号标记)-u
进入上层页面-n
进入下一个帮助小节-p
进入上一个帮助小节-q
退出
- 选项帮助
压缩与解压缩命令
- 常用压缩格式
.zip
.gz
.bz2
.tar.gz
.tar.bz2
- .zip格式
zip 压缩文件名 源文件
压缩文件zip -r 压缩文件名 源目录
压缩目录unzip 压缩文件
解压缩
- .gz格式
gzip 源文件
压缩为.gz格式,源文件会消失gzip -c 源文件 > 压缩文件
压缩为.gz格式,源文件保留gzip -r 目录
压缩目录下所有的子文件,但是不能压缩目录gzip -d 压缩文件
解压缩gunzip 压缩文件
解压缩
- .bz2格式
bzip2 源文件
压缩为.bz2格式,不保留源文件bzip2 -k 源文件
压缩为.bz2格式,保留源文件- bzip2命令不能压缩目录
bzip2 -d 压缩文件
解压缩,-k保留压缩文件bunzip2 压缩文件
解压缩,-k保留压缩文件
- .tar.gz格式和.tar.bz2格式
- tar命令
tar -cvf 打包文件名 源文件
打包命令- 选项
-c
打包-v
显示过程-f
指定打包后的文件名
- 选项
tar -xvf 打包文件名
解打包命令- 选项
-x
解打包
- 选项
- 打包压缩
tar -zcvf 压缩包名.tar.gz 源文件
- 选项
-z
压缩为.tar.gz格式
- 选项
tar -jcvf 压缩包名.tar.gz 源文件
- 选项
-j
压缩为.tar.bz2格式
- 选项
- 解压缩打包文件
tar -zxvf 压缩包名.tar.gz
后面可以跟-C 指定解压缩位置
- 选项
-zx
解压缩.tar.gz格式
- 选项
tar -jxvf 压缩包名.tar.gz
后面可以跟-C 指定解压缩位置
- 选项
-jx
压缩为.tar.bz2格式
- 选项
- tar命令
关机和重启命令
shutdown [选项] 时间
比较安全,推荐使用- 选项:
-c
取消前一个关机命令-h
关机-r
重启
- 选项:
- 其他关机命令
halt
poweroff
init 0
- 其他重启命令
reboot
init 6
- 系统运行级别
- 级别
0
关机1
单用户2
不完全多用户,不含NFS服务3
完全多用户4
未分配5
图形界面6
重启
cat /etc/inittab
修改系统默认运行级别runlevel
查询系统运行级别
- 级别
logout
退出登录
其他常用命令
挂载命令
mount
查询系统中已经挂载的设备mount -a
依据配置文件/etc/fstab
的内容,自动挂载mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
-t 文件系统
加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统-o 特殊选项
可以指定挂载的额外选项atime/noatime
更新访问时间/不更新访问时间async/sync
异步/同步auto/noauto
自动/手动defaults
定义默认值,相当于rw
,suid
,dev
,exec
,auto
,nouser
,async
这七个选项exec/noexec
执行/不执行remount
重新花在已经挂载的文件系统,一般用于指定修改特殊权限rw/ro
读写/只读suid/nosuid
具有SUID权限/不具有SUID权限user/nouser
允许普通用户挂载/不允许普通用户挂载userquota
写入代表文件系统支持用户磁盘配额,默认不支持grpquota
写入代表文件系统支持组磁盘配额,默认不支持
umount 设备文件名或挂载点
卸载命令- 光盘挂载
mkdir /mnt/cdrom
建立挂载点mount [-t iso9660] /dev/sr0 /mnt/cdrom
挂载光盘umount /mnt/cdrom
卸载光盘
- U盘挂载
fdisk -l
查看U盘设备文件名mount -t vfat /dev/sdb1 /mnt/usb/
挂载U盘(注意:Linux默认不支持NTFS文件系统)
用户登录查看和用户交互命令
w [用户名]
查看登录用户信息who [用户名]
查看登录用户(少量)信息last
查看当前登录和过去登录的用户信息lastlog
查看所有用户的最后一次登录时间
shell命令
shell概述
vi /etc/shells
Linux支持的shell
脚本执行方式
输出命令
echo [选项] [输出内容]
- 选项:
-e
支持反斜线控制的字符转换
编写脚本
1 | vim hello.sh |
脚本执行方法
- 赋予执行权限,直接运行
chmod 755 hello.sh
赋予权限./hello.sh
运行
- 通过Bash调用执行脚本
bash hello.sh
Bash的基本功能
命令别名与快捷键
- 别名
alias
查看默认已经生效的别名alias 别名='原命令'
(临时)设置别名vi ~/.bashrc
写入环境变量配置文件使别名永久生效unalias 别名
(临时)删除别名
- 命令生效顺序
- 执行用绝对路径或相对路径执行的命令
- 执行别名
- 执行Bash的内部命令
- 执行按照$PATH幻境变量定义的目录查找顺序找到的第一个命令
- 常用快捷键
- ctrl+c 强行终止当前命令
- ctrl+l 清屏
- ctrl+a 光标移动到命令行首
- ctrl+e 光标移动到命令行尾
- ctrl+u 从光标所在的位置删除到行首
- ctrl+z 把命令放入后台
- ctrl+r 在历史命令中搜索
历史命令
history [选项] [历史命令保存文件]
历史命令- 选项
-c
清空历史命令-w
把缓存中的历史命令写入历史命令保存文件~/.bash_history
- 选项
- 历史命令默认会保存1000条,可以在环境变量配置文件
/etc/profile
中进行修改 - 历史命令的调用
- 使用上下箭头调用以前的历史命令
- 使用
!n
重复执行第n条历史命令 - 使用
!!
重复执行上一条命令 - 使用
!字符串
重复执行最后一条以该字符串开头的命令
- 命令和文件补全
- 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按tab键就会自动进行补全
输出(输入)重定向
标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
输出重定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
标准输出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 |
标准错误输出重定向 | 错误命令 2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
标准错误输出重定向 | 错误命令 2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 |
正确和错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖的方式,把正确和错误输出都保存到同一个文件当中 |
正确和错误输出同时保存 | 命令 >> 文件 2>&1 | 以追加的方式,把正确和错误输出都保存到同一个文件当中 |
正确和错误输出同时保存 | 命令 &>文件 | 以覆盖的方式,把正确和错误输出都保存到同一个文件当中 |
正确和错误输出同时保存 | 命令 &>>文件 | 以追加的方式,把正确和错误输出都保存到同一个文件当中 |
正确和错误输出同时保存 | 命令>>文件1 2>>文件2 | 把正确输出追加到文件1中,把错误输出追加到文件2中 |
输入重定向
wc [选项] [文件名]
统计- 选项
-c
统计字节数-w
统计单词数-l
统计行数
- 选项
命令 < 文件把文件作为命令的输入
命令 << 标识符
- 把到标识符为止的内容作为命令的输出
多命令顺序执行
多命令执行符
命令1; 命令2
- 多个命令顺序执行,命令之间没有任何逻辑联系
命令1 && 命令2
- 逻辑与
- 当命令1正确执行,则命令2才会执行
- 当命令1执行不正确,则命令2不会执行
命令1 || 命令2
- 逻辑或
- 当命令1执行不正确,则命令2才会执行
- 当命令1正确执行,则命令2不会执行
管道符
命令1 | 命令2
- 命令1的正确输出作为命令2的操作对象
Shell中特殊符号
通配符
?
- 匹配一个任意字符
*
- 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[]
- 匹配中括号中任意一个字符(例如:
[abc]
代表一定匹配一个字符,或者是a,或者是b,或者是c)
- 匹配中括号中任意一个字符(例如:
[-]
- 匹配中括号中任意一个字符,
-
代表一个范围(例如:[a-z]
代表匹配一个小写字母)
- 匹配中括号中任意一个字符,
[^]
- 逻辑非,表示匹配不是中括号内的一个字符(例如:
[^0-9]
代表匹配一个不是数字的字符)
- 逻辑非,表示匹配不是中括号内的一个字符(例如:
其他特殊符号
''
单引号- 单引号中所有的特殊符号都没有特殊含义
""
双引号- 在双引号中特殊字符没有特殊含义
- 例外:
"$"
调用变量的值"`"
引用命令"\"
转义符
``
反引号- 反引号括起来的内容是系统命令,在bash中会先执行它。和
$()
作用一样。推荐使用$()
,因为反引号非常容易看错
- 反引号括起来的内容是系统命令,在bash中会先执行它。和
$()
- 和反引号作用一样,用来引用系统命令
#
- 在shell脚本中,
#
开头的行代表注释
- 在shell脚本中,
$
- 用于调用变量的值,如需要调用变量name的值时,需要用
$name
的方式
- 用于调用变量的值,如需要调用变量name的值时,需要用
\
转义符- 跟在
\
后面的特殊符号将失去特殊含义,变为普通字符
- 跟在