shell分类
shell 分为内部命令 和外部命令,一般先执行内部命令,再执行外部命令。
内部命令 | 外部命令 |
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了一个系统文件 |
自动载入内存,可以直接使用 | 必须知道其位置,必须有shell加载才能执行 |
编辑shell命令的辅助操作
快捷键 | 功能 |
Tab 键 | 自动补齐(两次可以显示所有选项) |
反斜杠“\” | 强制换行或转义 |
Ctrl+a | 光标移到最前 |
Ctrl+e | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的 字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+w | 从当前光标删除开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 或者clear |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 | 回看执行过的命令 |
命令详解
一:获得帮助的命令
1) help 命令 查看内部命令
2)命令 --help 查看外部命令
3)man 命令 帮助手册
4) info 命令 也可以查看
二:查看,切换,显示,统计 目录或文件
2.1 pwd(print work directory) 打印当前目录
2.2 cd(change directory)切换目录
命令格式: cd 目标位置
cd 或 cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头 | 表示以当前的工作目录作为起点 |
两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
2.3 ls (list) 列出目录/文件的详细属性信息
命令格式:
ls [选项] [文件或目录… ]
选项 | 说明 |
-l | 以长格式显示文件和目录列表 ll=ls -l |
-a | 显示全部包括隐藏文件 |
-A | 显示全部文件或隐藏文件,但不包括 . 和.. |
-d | 只显示当前目录 |
-h | 友好显示文件大小 |
-R | 递归显示该目录及该目录的子目录下的所有内容s+------0 |
--color | 显示颜色 |
-S | 按从大到小排序 |
-i | 显示inode号 |
-t | 根据文件创建时间进行排序,由新到旧,新建的排在前面 |
-tr | 根据文件创建时间进行排序,由旧到新 |
2.32通配符 (去匹配文件名)
? | 匹配任意一个字符 |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123] | 包含其中之一就显示,没有也无所谓(此处括号里只表示单个字符) |
[0-9] | 匹配数字范围(0123456789),表示单个数字 |
[a-z] | 范围需要注意 (表示从aA、bB到z,不含Z),表示单个字母 |
[A-Z] | 从A到Z(只含大写)中的任意一个字母 |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhang] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
2.4 alias 别名命令
临时修改(关机或退出终端会自动消失)
命令格式
alias 命令别名 = '命令' (等号前后不能有空格)
unalias 别名命令 删除别名
\加别名命令 (显示原始命令,当命令别名和系统命令冲突时,要调用原始命令)
2.5 du (disk usage) 统计目录或文件所占磁盘空间大小的命令
命令格式: du [选项] [文件或目录… ]
选项 | 说明 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录(包括隐藏文件) |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n | 最大显示到第n层 (-d n) |
2.6 查看硬件信息及其他系统信息
查看cpu | lscpu cat /proc/cpuinfo |
查看内存大小 | 使用free 或 cat /proc/meminfo |
查看硬盘和分区情况 | 使用lsblk 或 cat /proc/partitions |
查看机器架构 architecture | arch |
查看系统内核版本号、发行版本号 | uname -r cat /etc/*release |
系统时间 | date d 你描述的日期 +%F 完整日期格式 -%T 时间(24小时制)(hh:mm:ss) |
三:Linux目录和文件管理:mkdir、touch、cp、mv、rm
3.1创建
3.11 mkdir 创建文件夹
mkdir [选项] 目录位置及名称…
-p 递归创建多层目录,当上级目录不存在时,会按目录层级自动创建目录
[root@localhost opt]# mkdir a b 1 2 //创建多个目录
[root@localhost opt]# ls
a b 1 2
[root@localhost opt]# mkdir -p aaa/bbb/cccc //递归创建目录
[root@localhost opt]# ls
a aaa b 1 2
3.12 创建文件 touch
touch命令格式:
touch 文件名称
touch 文件若已存在,不会破坏已有文件,会更新时间
每个文件有三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变(文件大小、权限等属性)
3.13创建链接文件 ln
1) 硬链接
硬链接(hard link, 也称链接 )就是一个文件的一个或多个文件名, 把文件名和计算机文件系统使用的节点号链接起来。inode号相同
注意点
硬链接只能对已存在的文件进行创建 。
不支持给目录创建硬链接;
不支持跨分区创建硬链接。
硬链接文件不占用存储空间。
修改源文件或者目标文件,对应另外一个文件也会发生相应修改。
删除源文件或者目标文件,对另外一个文件没有影响。
硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而错误删除文件的作用。由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。
2) 软链接
软链接又叫符号链接,这个文件包含了另一个文件的路径名。 可以是任意文件或目录,可以链接不同文件系统的文件。inode号不同
注意点
可对不存在的文件或目录创建软链接,可交叉文件系统。
删除源文件无法访问,再新建同名文件后依然可以访问
软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。
软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
ln命令格式:
ln 源文件 目标文件:创建硬链接文件
ln -s 源文件 目标文件:创建软连接文件
3.2 复制文件或文件夹
cp命令格式:
- cp [选项]… 源文件 目标 相当改名复制
- cp [选项]... 源文件... 目录 多个源文件只能复制到文件夹
[root@localhost ky27]# cp 0.tex /opt/abc.tex
#复制当前目录中的0.tex文件到opt文件下,并改名为abc.tex
[root@localhost ky27]# cd ..
[root@localhost opt]# ls
aaa.tex abc.tex httpd-2.4.29.tar.bz2 ky27 ky28 ky2828.tar.gzip ky29
[root@localhost opt]#
[root@localhost ky27]# cp 0.tex /opt/ #复制当前目录中的0.tex文件到opt文件下 名字不改
[root@localhost ky27]# cp 0.tex 1.tex /opt/ #复制当前目录下面的两个文件到opt目录下
[root@localhost ky27]# cd ..
[root@localhost opt]# ls
0.tex 1.tex aaa.tex abc.tex httpd-2.4.29.tar.bz2 ky27 ky28 ky2828.tar.gzip ky29
[root@localhost opt]#
选项说明
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变(但不保留软链接文件) |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息(保留软链接属性) |
-v | 可视化 |
-u | 相当于增备,差异备份(只针对文件夹 |
-b | 当目标文件存在时,先进行备份再覆盖(只保留最近) |
-s | 复制成为符号连结文件 (symbolic link),亦即”快捷方式“档案; 作用为创建新的符号链接文件,指向原符号链接文件,能保证链接文件可以使用 |
3.3 移动mv
mv命令格式:
mv [选项] … 源文件或目录… 目标文件或目录
选项 | 说明 |
-f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖; |
-i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) |
-n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
-v | 显示文件或目录的移动过程 可视化 |
[root@localhost opt]# mv bbb aaa //将目录bbb改名为aaa
[root@localhost opt]# mv aaa /opt/ky27 //将目录aaa移动到/opt/ky27目录下
3.4 删除rm
rm [选项] 要删除的文件或目录
选项 | 说明 |
-f | 删除前不作询问,直接强制删除 |
-i | 删除前逐一询问确认 |
-r | 递归删除,将指定目录下的所有文件和子目录一并删除 |
四:Linux查找和压缩文件:find、which、whereis、tar
4.1 find
命令的特点:
1精确查找
2实时查找
3支持查找条件很多
4各表达式之间使用逻辑运算符, “-a”表示而且(and),“-o”表示 或者(or)
格式
find [查找路径] [OPTION1] [查找条件1] [OPTION2] [查找条件2]...... [处理动作]
-name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符; 如果名字使用通配符,需要加” “来查询 |
-size | 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
-user/-group | 根据文件是否属于目标用户进行查找 |
-nouser/-nogroup | 查找无属主/属组的文件 |
-type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
-inum | 根据文件inode号查找 |
-perm | 按文件权限查找 |
-三种时间 | -atime、-mtime、-ctime |
- -size 10k :表示9k到10k,包括10k、不包括9k,即(9,10]。
- -size -10k :表示9k以内,包括9k,即 [0,9]。
- -size +10k :表示10k以上,不包括10k,即(10,+∞)。
- find -size 1G:查找的是从0G到1G,不包括0G,即(0,1]。
- find -size 2G:查找的是从1G到2G,不包括1G,即(1,2]。
- find -size 1024M:查找的是从1023M到1024M,不包括1023M,即(1023,1024]
找到文件并删除的三种方式
find -name "*.img" -delete
find -name "*.img" -exec rm -rf {} \;
find -name "*.img" | xargs rm -rf
Linux命令之查找文件locate
locate命令主要是用来查找文件的,但它的速度比find命令快很多。因为它不是按路径进行搜索的,而是去搜索一个数据库,即/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次。
但注意,我们在使用locate命令搜索文件时可能搜索到已删除或者搜索不到新创建或上传的文件,这是因为数据库文件没有被更新。所以每次在执行locate命令之前,都需要先执行updatedb命令更新数据库文件,即使是在脚本中也需要先执行updatedb命令更新数据库文件再执行locate命令查找文件。
注意,locate命令并不是在系统中一定会有的,可能会需要安装,执行locate -V命令查看系统中是否安装有locate命令。
updatedb的配置文件/etc/updatedb.conf
/ect/updatedb.conf是updatedb命令的配置文件,配置了一些数据库更新信息,我们可以在该文件中配置需要排除检索的文件。
使用cat /etc/updatedb.conf命令查看配置文件内容如下:
关于/etc/updatedb.conf文件的说明如下:
选项 说明
PRUNE_BIND_MOUNTS 表示是否进行限制搜索
PRUNEFS 指要排除的文件系统类型,即列出的文件类型不会被检索
PRUNENAMES 指要对哪些后缀的文件排除检索,即列出的带有这些的文件不会被检索
PRUNEPATHS 指要排除检索的路径,即列出路径下的文件和子文件夹都不会被检索,即使是updatedb之后也无法找到
4.2 which
which 用来查看命令的位置。 在PATH变量指定的路径中,搜索某个系统命令的位置
which 命令/程序名
4.3 whereis
whereis 用来查找命令的具体位置。可以查看到二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息
4.4 压缩文件 gzip和bzip2
相同点:
只能压缩文件 , 不能压缩目录
默认压缩后会删除源文件。(bzip2可以使用-k保留源文件)
区别:
gzip比bzip2的压缩速度快,而bzip2的压缩率高于gzip。
压缩:
gzip [-9] 文件名…
bzip2 [-9] 文件名...
-1~9 指定压缩级别, 数字越大压缩级别越高 。-1最快压缩,-9最大压缩 。
解压缩:
gzip -d .gz格式的压缩文件;
bzip2 -d .bz2格式的压缩文件
4.5 归档tar 文件夹
命令格式:
tar [选项] ... 归档文件名(压缩包名字) 源文件或目录 tar [选项] ... 归档文件名 [-C 目标目录]
- -c:创建(Create).tar 格式的包文件
- -x:解开.tar 格式的包文件
- -C:解压时指定释放的目标文件夹 指定目录
- -f:表示使用归档文件(一般都要带上表示使用tar)
- -v:输出详细信息(Verbose)
- -t:列出归档内容
- -j:调用 bzip2 程序进行压缩或解压
- -z:调用 gzip 程序进行压缩或解压
[root@localhost opt]# tar -zcvf vm.tar.gz f1 f2 f3
//将三个文件归档后调用gzip程序压缩成vm.tar.gz
[root@localhost opt]# tar -zxvf vm.tar.gz -C /opt
//将vm.tar.gz文件解压缩到/opt目录下
五:查看文件内容命令:cat、more、less、head、tail、grep、wc
5.1 cat命令
cat( 英文全拼:concatenate )命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
格式: cat [选项] 文件名
选项 | 效果 |
-n | 显示行号包括空行 |
-b | 跳过空白行编号 |
-s | 将所有的连续的多个空行替换为一个空行(压缩成一个空行 |
-A | 显示隐藏字符 |
[root@localhost ky27]# cat /etc/centos-release //查看系统内核版本
[root@localhost ky27]# cat /proc/version //查看系统内核版本
tar 倒叙显示
5.2 分页查看文件内容——more命令
more [选项] 文件名
5.3 分页查看文件内容——less命令
less [选项] 文件名
5.4 查看头部和尾部内容——head/tail命令
命令格式:
head -n <行数> 文件名 (不加行数默认开头十行)
tail -n<行数> 文件名 (不加行数默认结尾十行)
tail -f 文件名:实时跟踪最后十行
通过管道符,head和tail结合使用
[root@localhost ~]# ifconfig |head -2|tail -1 //只看第二行
5.5 检索、过滤文件内容——grep命令
grep(global regular expression print,全局正则表达式输出),用于查找文件里符合条件的字符串。
grep [选项]… 查找条件 目标文件
选项 | 作用 |
-i | 查找时忽略大小写 |
-v | 反向查找,输出与查找条件不相符的行 |
-o | 只显示匹配项 |
-w | 精确匹配。例如-w local,那么localhost不会被匹配,只精确匹配local |
-f | 对比两个文件的相同行 |
-l | 列出文件内容符合指定样式的文件名称 |
-R | 在目录内递归查找 |
-n | 显示匹配行及行号 |
-e | 实现可多个查找条件的匹配,逻辑or(或)关系 |
-A 5 | 显示匹配行和后5行的内容 |
-B 5 | 显示匹配行和前5行的内容 |
基本格式
- 要查找的字符串以双引号括起来,单引号也可以
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行
5.6 统计文件WC
统计列数,wc本身就是参数:
- -l:统计行数
- -w:统计单词个数
- -c:统计字节数