文章目录
一、格式
1、linux命令提示符
[root@songxioakun ~]#
[当前登录用户@当前主机名 当前所在目录]#
~ 表示用户家目录
后面的 # 表示当前用户是超级用户,如果是 $ 表示普通用户
2、linux命令格式
命令 [选项] [参数]
选项:用于调整命令功能。缩略选项用一个 - ,完整选项用两个 -
参数:命令操作的对象,如果省略参数,表示默认。
二、常用命令
命令类型分为内部命令和外部命令。
内部命令:shell自带的,没有明确的可执行文件
外部命令:后期开发,有可执行文件
1、ls 命令
所在路径:/bin/ls 所有用户可执行
命令 | 功能 |
---|---|
ls | 直接执行ls命令,显示当前目录下子目录和子文件 |
ls -l | 长格式显示,ls -l的别名是ll |
ls --color=never | 显示目录下内容,但不显示颜色 |
ls -a | 显示所有文件包括隐藏文件 |
ls -h | 以常用单位显示文件大小 |
ls -d | 只显示目录 |
ls -i | 显示文件inode号(索引节点) |
2、目录操作命令
(1)cd 命令-切换目录
cd [目录路径]
路径分为 相对路径和绝对路径
相对路径:参考当前所在目录进行查找。
绝对路径:从根目录开始指定,一级一级递归查找,在任何目录下都能进入指定位置
命令 | 功能 |
---|---|
cd ~ | 进入当前用户的家目录,直接执行cd效果一样 |
cd - | 进入上次所在目录 |
cd . . | 进入上一级目录 |
(2)pwd 命令 #显示当前所在目录绝对路径
(3)mkdir 新建目录
mkdir [目录名]
命令 | 功能 |
---|---|
rmdir 目录名 | 删除目录,只能删除空目录 |
mkdir -p 目录名 | 递归建立目录,例如mkdir -p 11/22/33 |
2、文件操作命令
直接列表,目录里看不到了。
命令 | 选项 | 功能 |
---|---|---|
touch 文件名 | 创建空文件或修改文件时间(如果没有这个文件则创建文件,如果存在只修改文件时间) | |
stat 文件名 | 查看文件详细信息,可以看到文件的‘最近访问’、‘最近更改’(数据修改)、‘最近改动’(状态修改)三个时间 | |
cat 文件名 | 查看文件内容,从头到尾 | |
-n | 列出行号显示内容 | |
-T | 把tab建以^I的形式显示出来 | |
-E | 列出每行的回车符用$ | |
-v | 列出特殊字符 | |
-A | 相当于-vET选项的整合,用于列处所有隐藏符号 | |
more 文件名 | 分屏显示内容,b向上翻页,空格向下翻页,回车向下滚动一行,/字符串 是搜索指定字符串(从当前页往后搜)q退出 | |
less 文件名 | 分行显示内容,↑↓键一行一行翻 | |
head 文件名 | 显示文件开头 | |
-n | 指定显示文件头n行,也可以用 head -n 行数 文件名 | |
tail 文件名 | 显示文件尾 | |
-n | 指定显示文件尾n行 | |
-f | 监听文件尾不退出,适合监听实时文件,ctrl+c 终止,退出 |
cat命令的几个选项展示:
[root@akun ~]# cat -E abc
my name is Xiaokun Song ,tab 1,$
行尾有回车以$表示$
这里一个tab,用^I表示的$
[root@akun ~]# cat -T abc
my name is Xiaokun Song ,tab^I1,
行尾有回车以$表示
这里一个tab,用^I表示的
[root@akun ~]# cat -A abc
my name is Xiaokun Song ,tab^I1,$
[root@akun ~]# cat -n abc
1 my name is Xiaokun Song ,tab 1,
2 行尾有回车以$表示
3 这里一个tab,用^I表示的
3、文件、目录操作命令
命令 | 选项 | 功能 |
---|---|---|
rm 文件名 | 删除文件或目录 | |
-r | 递归删除目录 | |
-f | 强制 | |
cp 源文件 目标位置 | 复制 | |
-r | 复制目录需要用-r | |
-p | 连带文件属性复制 | |
-d | 若源文件是连接文件,则复制连接属性 | |
-a | 相当于-pdr | |
mv 源文件 目标地址 | 剪切或改名 | |
alias | 查看系统中的别名 | |
alias 别名=‘实际命令’ | 临时设置别名,注意单引号,如:alias ser=‘service network restart’, 别名优先级高于命令 | |
如果想永久设置别名可以吧这条alias命令写到用户家目录下的bashrc文件中(~/.bashrc 环境变量设置文件)对单个用户生效,写入/etc/bashrc对所有用户生效 | ||
ln 源文件 目标文件 | 创建硬链接文件,文件必须用绝对路径 | |
-s | 创建软连接文件,ln -s 源文件 目标文件 |
软链接与硬链接特点
根目录的i节点号是固定的2(在系统加载时已经把1占用了)
一个文件i节点里包括了文件的i节点号、时间、权限、block块位置
文件的block中存的是文件的数据
目录的block中存的是所有子目录和子文件的文件名和i节点号
(1)硬链接
- 源文件和硬链接拥有相同的iNode号和Blook块,可以看成同一个文件
- 修改任意一个文件,另一个内容随之改变
- 删除任意一个文件,另一个都可以正常使用,除非两个都删除才不能访问
- 硬链接不能跨分区
- 硬链接不能链接 目录
- 硬链接的特征不够明显,很难判断两个文件是硬链接
(一般不推荐用硬链接)
(2)软链接
- 软链接有自己独立的iNode号和Block,但是Blook不记录实际数据,只写入源文件的文件名和iNode号
- 源文件大小改变,软链接大小不变
- 软链接是最大权限lrwxrwxrwx,但访问受源文件权限限制
- 修改任意一个文件,另一个内容随之改变
- 删除软链接,源文件不变,但删除源文件,软链接无法访问
- 软链接可以跨分区
- 软链接可以链接目录
- 软连接特征明显
4、权限命令
详细总结点这里
格式:
chmod 要改的命令 文件名
命令 | 功能 |
---|---|
chmod u+x aa | 给aa文件属主加上执行权限 |
chmod g-r aa | 给aa文件属组去掉执行权限 |
chmod g+w,o+w aa | 同时给属组和其他人加上写入权限,用逗号隔开 |
chmod u=rwx aa | 直接给aa文件属主指定权限 |
chmod 755 aa | 用对应数字直接给aa文件的属主、属组、其他人权限 |
默认权限
Linux通过umask权限来保证所有文件和目录有默认权限
umask | 可以查看系统当前用户umask值 |
---|---|
umask -S | 以字母形式显示权限,S大写。 |
umask 0002 | 临时修改umask值为0002 |
属主属组命令
格式:
chown 用户名 文件名 修改属主
chgrp 组名 文件名 修改属主
命令 | 功能 |
---|---|
chown user1 aa | 把aa文件的属主,设置为user1,前提是user1必须存在 |
chown user1:group1 aa | 同时把aa文件的属主改为user1,属组改为group1,这个冒号:也可以用点. |
5、帮助命令
(1)man命令
命令 | 功能 |
---|---|
man 命令名 | 查看命令的帮助 |
man -f 命令名 | 查看命令拥有那个级别的帮助 |
whatis 命令名 | 等同于man -f 命令名 |
man 级别 命令名 | 查看命令某个级别的帮助 |
快捷键:
快捷键 | 功能 |
---|---|
上箭头↑ | 向上移动一行 |
下箭头↓ | 向下移动一行 |
PgUp | 向上翻一页 |
PgDa | 向下翻一页 |
g | 移动到第一页 |
G | 移动到最后一页 |
q | 退出 |
/字符串 | 从当前页向下搜索字符串 |
?字符串 | 从当前页向上搜索字符串 |
n | 当搜索字符串时,可以使用n键找到下一个字符串 |
N | 当搜索字符串时,使用N键反向查询字符串。也就是说,如果使用‘’/字符串‘’方式搜索,则N键表示向上搜索字符串;如果使用‘’?字符串‘’方式搜素,则N键表示向下搜索字符串 |
man命令的帮助等级:
命令级别 | 功能 |
---|---|
1 | 普通用户可执行的系统命令和可执行文件的帮助 |
2 | 内核可以调用的函数和工具的帮助 |
3 | c语言函数的帮助 |
4 | 设备和特殊文件的帮助 |
5 | 配置文件的帮助 |
6 | 游戏的帮助(个人版的linux中是有游戏的) |
7 | 杂项的帮助 |
8 | 超级用户可以执行的系统命令的帮助 |
9 | 内核的帮助 |
查看命令拥有那个级别的帮助:
man -f 命令 或 whatis 命令
(2)help 命令
命令 | 功能 |
---|---|
help 内部命令 | 查看一些shell内部命令的帮助 |
命令名 --help | 查看命令常见选项 |
可以使用type命令来区分内部命令与外部命令
shell是linux的命令解释器
(3)–help 选项
绝大多数命令都可以使用“–help”选项来查看帮助,这也是一种获取帮助的方法。例如:
[root@akun ~]# ls --help
输出内容有中文注释
[root@akun ~]# ls --help
用法:ls [选项]... [文件]...
列出 FILE 的信息(默认为当前目录)。
如果不指定-cftuvSUX 或--sort 选项,则根据字母大小排序。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
-b, --escape 以八进制溢出序列表示不可打印的字符
--block-size=大小 块以指定大小的字节为单位
-B, --ignore-backups 不列出任何以"~"字符结束的项目
#。。。后边内容就不展示了
这种方法非常简单,输出的帮助信息基本是man命令的信息简要版。
(4)info 命令
命令 | 功能 |
---|---|
info 命令名 | info相当于一本书,查的其实是info中的一个小节 |
快捷键:
快捷键 | 功能 |
---|---|
上箭头↑ | 向上移动一行 |
下箭头↓ | 向下移动一行 |
PgUp | 向上翻一页 |
PgDa | 向下翻一页 |
Tab | 在有“*”符号的节点间进行切换 |
回车 | 进入该子页面(有“*”符号的子页面),查看详细帮助信息 |
u | 进入上层界面(回车是进入下层) |
n | 进入下一个帮助小结 |
p | 进入上一个帮助小结 |
? | 查看帮助信息 |
q | 退出 |
6、查找和搜索命令
命令 | 功能 |
---|---|
which 命令名 | 查找命令位置的命令,能看到相关别名 |
whereis 命令名 | 查找命令位置的命令,同事看到帮助文档位置 |
locate 文件名 | 按照文件名查找,从数据库中查找 ,updatedb 可以强制更新数据库 |
/var/lib/mlocate/mlocate.db #locate命令所搜索的后台数据库位置 | |
/etc/updatedb.conf 配置文件用来定义locate命令查询范围 |
locate优点:按照数据库搜索,搜索速度快,消耗资源小。
缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。
注: 如果新建一个文件,用locate搜索不到,因为数据库没有更新,用updatedb命令更新一下数据库,就可以搜到了
updatedb.conf 配置文件中:
PRUNE_BIND_MOUNTS = "yes"
#PRUNE_BIND_MOUNTS= "yes"开启搜索限制,也就是这个文件生效
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
#PRUNEFS=用locate执行搜索时,禁止搜索的文件系统类型
PRUNENAMES = ".git .hg .svn"
#PRUNENAMES = 禁止搜索带有这些扩展名的文件
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
#PRUNEPATHS =locate搜索是禁止搜索的目录
1)find命令
find命令详细笔记←
find 搜索位置 [选项] [参数]
选项 | 作用 |
---|---|
-iname | 按照文件名搜索,不区分大小写 |
-inum | 按照iNode号搜索 |
-size 大小 | 按照文件大小搜索 |
-atime ±时间 | 按照文件的访问时间搜索 |
-mtime ±时间 | 按照文件数据修改时间搜索 |
-ctime ±时间 | 按照文件状态修改时间搜索 |
-perm 权限模式 | 查找文件权限刚好等于“权限模式”的文件 |
-perm -权限模式 | 查找文件权限全部包含“权限模式”的文件 |
-perm +权限模式 | 查找文件权限包含“权限模式”的任意一个权限的文件 |
-uid 用户ID | 按照用户ID查找所有者是指定ID的文件 |
-gid 组ID | 按照用户组ID查找所属组是指定ID的文件 |
-user 用户名 | 按照用户名查找所有者是指定用户的文件 |
-group 组名 | 按照组名查找所属组是指定用户组的文件 |
-nouser | 查找没有所有者的文件 |
-type d | 查找目录 |
-type f | 查找普通文件 |
-type l | 查找软连接文件 |
-exec、-ok命令:
1、 find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;
-exec的作用就是把find命令的结果交给由“-exec”调用的命令2来处理,“{}”就代表find命令查找的结果。
以 \;结尾
2、-ok选项和-exec选项的作用基本一致,区别在于:-exec的命令2会直接处理,不询问,-ok的命令2在处理前会询问用户是否这样处理,得到确认后才会执行。
find命令详细笔记←点这里
2)grep命令、通配符、正则表达式
grep命令详细笔记←点这里
grep 的作用是在文件中提取和匹配符合条件的字符串,找到包含“搜索内容”的字符串
格式:
grep [选项] “搜索内容” 文件名
选项 | 作用 |
---|---|
-i | 忽略大小写 |
-v | 反向选择 |
-n | 输出行号 |
-color=auto | 搜索出来的字符串以颜色显示 |
grep命令和find命令的区别
1、find命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,搜索时文件名是完全匹配的(find命令可以通过-regex选项,把匹配规则转为正则表达式规则,但不建议这样。)
2、grep命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达是进行匹配。搜索时字符串是包含匹配。
通配符
用于匹配文件名,完全匹配
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或多个任意字符,也就是可以匹配任意内容 |
[] | 匹配括号中任意一个字符。例如:[abc]代表匹配a或b或c其中一个 |
[-] | 匹配括号中的任意一个字符,-代表范围,如:[0-9]表示匹配一个数字 |
[^] | 逻辑非,表示匹配一个不是括号内的字符,例如,[^0-9]代表匹配一个不是数字的字符 |
注:使用通配符要用“”双引号括起来
[A-Z]匹配任意大写字母,[A-Za-z]表示匹配所有字母
正则表达式
用于匹配字符串,文件内容,包含匹配
正则符 | 作用 |
---|---|
? | 匹配前一个字符重复0次或一次 |
* | 匹配前一个字符重复0次,或多次 |
[] | 匹配中括号中任意一个字符。如:[abc]代表匹配a或b或c其中一个 |
[-] | 匹配括号中的任意一个字符,-代表范围,如:[0-9]表示匹配一个数字 |
[^] | 逻辑非,表示匹配一个不是括号内的字符,例如,[^0-9]代表匹配一个不是数字的字符 |
^ | 匹配首行,如“^a”表示以a为行首的内容 |
$ | 匹配尾行 |
shell把正则表达式中的?作为“扩展正则”,使用?号时要使用 egrep (也就是grep -E)
‘egrep’即‘grep -E’。‘fgrep’即‘grep -F’。
管道符|
命令格式
命令1 | 命令2
将命令1的正确输出作为命令2的操作对象。
管道符的功能和-exec的功能基本一致,管道符的操作属于文本流操作,find命令不支持文本流操作,所有find使用-exec。
7、命令的别名
命令的别名,主要用于照顾管理员使用习惯。
命令 | 作用 |
---|---|
alias | 查询命令别名 |
alias 别名=‘原命令’ | 设置别名(临时,重启后不生效) |
用命令定义的别名是临时生效的,要永久生效需要写入环境变量配置文件~/.bashrc
在家目录下的bashrc,对这个用户生效
[root@akun ~]# alias grep='grep -color=auto'
#给grep -color=auto设置别名为grep,这样以后用grep就直接带颜色了
[root@akun ~]# vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
8、常用快捷键
快捷键 | 作用 |
---|---|
Tab 键 | 命令或文件补全 |
ctrl+A | 把光标移动到命令行开头,如果输入的命令较长,想要把光标移动到命令行开头时使用 |
ctrl+E | 把光标移动到命令行结尾 |
ctrl+C | 强制终止当前命令 |
ctrl+L | 清屏,相当于clear命令 |
ctrl+U | 删除或剪切光标之前的命令。 |
ctrl+Y | 粘贴ctrl+u剪切的内容 |
9、压缩与解压缩
(点击看压缩详细笔记)
1)zip格式
压缩命令格式
unzip [选项] 压缩包名
选项 | 作用 |
---|---|
-r | 压缩目录 |
解压缩命令格式
zip [选项] 压缩包名 源文件或源目录
选项 | 作用 |
---|---|
-d | 指定解压缩位置 |
2)gz格式
命令格式
gzip [选项] 源文件
选项 | 作用 |
---|---|
-c | 将压缩数据输出到标准输出中(输出到屏幕可以看到),可以用于保留源文件 |
-d | 解压缩 gunzip 压缩包名 等同于 gzip -d 压缩包名 |
-r | 压缩目录,这个命令不会打包,-r目录 会把目录下文件分别压缩 |
3)bz2格式
命令格式
bzip2 [选项] 源文件
选项 | 作用 |
---|---|
-d | 解压缩 (同bunzip2 压缩包名) |
-k | 压缩时,保留原文件 |
-v | 显示压缩详细信息 |
4)tar格式
命令格式
tar [选项] [-f 压缩包名] 源文件或目录
选项 | 作用 |
---|---|
-d | 指定解压缩位置 |
-c | 打包 |
-f | 指定压缩包名称 |
-v | 显示打包过程 |
-x | 解打包 |
-t | 测试。解打包的时候不解,只是看看包中文件 |
-C | 指定解打包位置 |
5 ).tar.gz和.tar.bz2格式
这种格式是可以一次解压的,就不用想上边那样执行两次命令了
命令格式是一样的
主要解决了gzip ,bzip2命令不能打包的问题
多两个选项用来识别压缩包的格式
选项 | 作用 |
---|---|
-z | 压缩和解压缩.tar.gz格式的压缩包 |
-j | 压缩和解压缩.tar.bz2格式的压缩包 |
以.tar.bz2为例:
[root@akun ~]# tar -jcvf test.tar.bz2 abc 123 qwe #把文件abc、qwe和目录123压缩为test.tar.bz2文件(这里目标也可以多个)
abc
123/
123/qwe/
123/qwe/qwed/
qwe
[root@akun ~]# tar -jxvf test.tar.bz2
abc
123/
123/qwe/
123/qwe/qwed/
qwe
#解压
-t选项,测试(只看不解压):
-C选项,指定解压位置(这个选项必须放在压缩包后边)
[root@akun ~]# tar -jtvf test.tar.bz2
-rw-r--r-- root/root 113 2020-06-15 06:45 abc
drwxr-xr-x root/root 0 2020-05-11 03:34 123/
drwxr-xr-x root/root 0 2020-05-11 03:34 123/qwe/
drwxr-xr-x root/root 0 2020-05-11 03:34 123/qwe/qwed/
-rw-r--r-- root/root 59 2020-06-15 06:41 qwe
[root@akun ~]# tar -jxvf test.tar.bz2 -C /mnt/
abc
123/
123/qwe/
123/qwe/qwed/
qwe
[root@akun ~]# ls /mnt/
123 abc qwe
如果想解压压缩包中的某个文件,可以在命令后加上这个文件名
[root@akun ~]# tar -jxvf test.tar.bz2 -C /tmp/ abc
abc
[root@akun ~]# ls /tmp/
abc
10、关机重启命令
1)sync 数据同步
执行sync命令,用于舒心文件系统缓冲区,防止关机时还有数据没有存到硬盘。
2)shutdown关机命令
shutdown 命令会关机前关闭服务保存数据,比较安全。
shutdown [选项] 时间 [警告信息]
选项 | 作用 |
---|---|
-c | 取消已经执行的shutdown命令 (比如已经定时的关机重启) |
-h | 关机 |
-r | 重启 |
[root@akun ~]# shutdown -h 1
1分钟后关机
[root@akun ~]# shutdown -r 18:00
18点关机
Broadcast message from root@akun
(/dev/pts/0) at 6:17 ...
The system is going down for reboot in 703 minutes!
^Cshutdown: Shutdown cancelled #按了ctrl+c这个重启就取消了,要想执行其他命令要后台运行
3)reboot重启命令
reboot也是安全的,而且不用加过多的选项
4)halt和poweroff命令
这两个都是关机命令,直接执行即可,这两个命令不会完整关闭和保存系统服务,不建议使用
5)init命令
init是修改linux运行级别的命令,也可以用于关机和重启,这个命令并不安全,不建议使用。