文章目录
一、Linux概述
Linux系统是专门为开发者,IT从业者人员,开发的一款自由和开源的操作系统。
1.1 Linux的特点
- 多用户。同一个用户的账号和密码可以同时多次同时登录系统。
- 多任务。可以同时运行多个任务,不同用户也可以同时运行多个任务。
- 强大的网络功能。Linux不仅仅是一个终端操作系统,还可以作为网关、防火墙等等。
- 系统安全性可靠。
- 可移植和兼容性好。实施现场和自己的测试环境尽量保持一致。
- 出色的处理速度和性能:处理能力强,响应速度快。
- 良好的用户界面???
- 开源,免费。
1.2 Shell
Shell是Linux系统中运行的一种特殊程序。
在用户和内核之间充当“翻译官”:只要用户登录,系统就会加载一个Shell程序,把用户的命令翻译成计算机能够识别的语言,再把计算机语言翻译成用户能识别的语言,反馈给用户界面。
Bash是Linux系统中默认使用的Shell程序。
内部命令和外部命令:
内部命令:一些简单的命令,功能简单,是包含在加载的Shell程序当中。开机自启。特点是执行速度快。如cd,pwd等。
外部命令:实用功能比较强大的命令,如果预加载在Shell当中,会降低系统的启动速度,所以是用户使用的时候才会被加载。以及用户额外安装的一些命令,都属于外部命令。如vim等。
1.3 Linux命令行使用的格式
命令字| 【选项】 【参数】 ——完整的命令行
- 命令字:整条命令中最关键的部分,声明你要干什么。
- 选项:短格式选项“-”,长格式选项“–”,对操作具体强化,进行不同的展示结果,也可以对命令的最终运行方式进行修改。多个单字符选项可以组合在一起使用。
- 参数:操作对象。可以是文件名、目录名(路径名)、用户名等等。参数可以没有,可以是单个,也可以是多个。
命令字,选项,参数之间必须用空格隔开。
1.4 Linux的一些基础认识+
Linux当中一切皆是文件。设备是文件,目录是文件,后缀名没有意义。
绝对路径和相对路径:Linux系统的一切都从根目录开始:“/”,一切以 / 开始的都表示绝对路径,表示从根开始的下一级。不以 / 开头的表示相对路径。
1.5 Linux中的基本操作
自动补齐:Tab,一定要熟练掌握。
\:换行,但不中断命令,不影响命令的执行
组合键
Ctrl + u:清空至行首
Ctrl + k:清空至行尾
Ctrl + l:clear:清屏
Ctrl + c:取消本次命令编辑;取消本次操作;退出当前命令(有可能命令在后台继续运行)。
Ctrl + z:跳出当前命令并中止
Ctrl + a:直接跳到行首
Ctrl + e:直接跳到行尾
获取命令帮助
内部命令:help,简单的说明文件,命令 + --help
外部命令:man,详细的说明文件,man + 命令
使用man获取帮助后,可以使用 / 查找,n可以下翻,N可以上翻
二、Linux命令
pwd :查看当前位置(目录)
用户命令界面
[root@localhost ~]$ :各部分解释
root:当前登录用户
localhost:主机名
~:表示当前所在目录
#:表示当前是管理员
$:表示普通用户,权限受限
iNode号——索引号
计算机根据iNode号来处理文件。每个文件或者目录的iNode号都是唯一的,系统自动分配。iNode号是有范围的,如果iNode分配完了,硬盘即使还有空间,也不能再创建文件或者目录。
硬连接和软连接
硬连接:只能对普通文件(-开头)创建硬连接,不能对目录创建。硬连接文件他们的iNode号相同,这两个文件就是同一个文件。互为硬连接的文件删除其中任何一个,对文件本身不会有影响。更新其中一个文件的内容,另外一个也会同步更新。
硬连接作用:防止误删文件。
ln 创建硬连接
ln file1 file2:对file1创建新的硬连接file2
软连接:相当于为文件创建了一个快捷方式。快捷方式和本体iNode不同,是两个文件。对其中一个文件更新内容,另一个了也会同步更新。删除快捷方式,本体不受影响,删除本体,软连接就会失效。
创建软连接应使用绝对路径。
ln -s 创建软连接
ln -s file1 file2:创建file1的快捷方式file2
通配符
通配符可以匹配文件名和目录名。不能匹配文件内容。
符号:
? 匹配任意单个字符
***** 匹配任意长度字符
[root@localhost Downloads]$ ls
100 101 111 121 200 201
[root@localhost Downloads]$ ls ?00
100 200
[root@localhost Downloads]$ ls ?0
ls: cannot access ?0: No such file or directory
[root@localhost Downloads]$ ls *0
100 200
{0…9} 配置0到9; [0-9] 匹配0-9
{a…z} 配置a到z; [a-z] 匹配a-z
{A…Z} 配置A到Z; [A-Z] 匹配A-Z
[123] 匹配1,2,3,单个字符。
{ … }配置可以配置10以上的数字
[ ]匹配只能识别字母和单个字符,不能识别10以上的数字
[ ]范围匹配字母是可匹配小写和大写字母,先小后大
[^d] 取反,匹配除d之外其他符合条件的字母和单个字符
[root@localhost opt]$ touch {1..5} {10..32} {a..g} {A..G}
[root@localhost opt]$ ls
1 2 3 4 5 10 12 14 16 18 20 22 24 26 28 30 32 A B C D E F G
11 13 15 17 19 21 23 25 27 29 31 a b c d e f g rh
[root@localhost opt]$ ls [a-e]
a A b B c C d D e
[root@localhost opt]$ ls [14-15]
ls: cannot access [14-15]: No such file or directory
[root@localhost opt]$ ls {1..13}
ls: cannot access 6: No such file or directory
ls: cannot access 7: No such file or directory
ls: cannot access 8: No such file or directory
ls: cannot access 9: No such file or directory
1 10 11 12 13 2 3 4 5
[root@localhost opt]$ ls [10-20]
ls: cannot access [10-20]: No such file or directory
[root@localhost opt]$ ls [123]
1 2 3
[root@localhost opt]$ ls [^abc]
1 2 3 4 5 A B C d D e E f F g G
cd命令
cd:切换目录和路径。切换到当前目录下的目录,可以用相对路径,但切换到非当前路径,需要使用绝对路径。写文档时,一定要用绝对路径,保证准确性。
cd ~ 切换到当前用户的家目录
cd / 切换到根目录
cd - 返回到上一次执行的目录
cd … 切换到上一层目录
cd . 当前目录,不动
ls命令
ls 简略展示当前目录的内容
ls -a 展示所有,包含隐藏的文件和目录,(隐藏文件/目录文件名首位是 . )
ls -l 或者ll长格式显示文件和目录的列表,列表就是展示文件和目录的详细信息。
ls -i 展示iNode号
ls -h 人性化地显示目录或者文件的大小(大文件显示G/M/K),不显示单位的默认单位是字节
ls -R 递归展示当前目录以及当前目录子目录下的所有内容
ls -t 以时间排序,最新修改的文件会排在最上面
ls -r 表示反向排序,按字母顺序倒序排序
[root@localhost opt]$ ls -alhi
total 0
33641282 drwxr-xr-x. 3 root root 37 May 16 04:29 .
64 dr-xr-xr-x. 17 root root 224 May 15 10:46 ..
35206055 -rw-r--r--. 1 root root 0 May 16 04:08 22
35206056 drwxr-xr-x. 3 root root 16 May 16 04:09 33
35206053 lrwxrwxrwx. 1 root root 2 May 16 04:29 .44 -> 22
以 35206053 lrwxrwxrwx. 1 root root 2 May 16 04:29 .44 -> 22 为例解释有哪些详细信息,从前到后:
-
35206053 :iNode号
-
l:开头位置是“-”,代表普通文件;“d”代表目录;“l”代表软连接文件
-
rwxrwxrwx. :表示权限,r读,w写,x执行,-代表没这个权限。每三位为一段
- 第一段rwx:所有者的权限
- 第二段rwx:所在组的权限
- 第三段rwx:其他用户的权限
-
1:数字:对于目录来说,表示有几个子目录;对于文件来说,表示有几个硬连接数
-
第一个root对应位置:文件的所有者
-
第二个root对应位置:文件的所在组
-
2:表示文件或者目录的大小,默认单位是字节
-
May 16 04:29:最后一次的修改时间
-
.44:表示文件名或目录名,此处首位是"."表示隐藏
-
-> 22:软连接文件特有的,表示指向的源文件是22
touch命令
touch:创建文件。可同时创建多个文件。创建文件时,如果文件名重复,不会提示,也不会刷新文件内容。只改变最后编辑时间。
[root@localhost opt]$ ls
[root@localhost opt]$ touch aa bb
[root@localhost opt]$ ls
aa bb
mkdir命令
mkdir :make directory,创建目录。文件和目录名都是唯一的。在相同目录下不能存在相同的文件和目录名。
[root@localhost opt]$ ls
aa bb
[root@localhost opt]$ mkdir 11
[root@localhost opt]$ ls
11 aa bb
[root@localhost opt]$ touch 22
[root@localhost opt]$ mkdir 22
mkdir: cannot create directory ‘22’: File exists
mkdir -p:创建递归目录。
[root@localhost opt]$ mkdir -p 33/44/55
[root@localhost opt]$ cd 33/44/55
[root@localhost 55]$ pwd
/opt/33/44/55
cp命令
cp copy–复制文件,复制目录
cp file1 file2 复制file1,命名为file2,file2为已存在文件时,file1的内容覆盖file2;file2为已存在目录时,file1复制到file2目录下
cp -r 复制目录,file2不存在时,复制file1命名为file2,file2目录已存在时,复制目录file1到file2目录下,为file2的子目录
[root@localhost opt]$ cp 22 55 //复制文件22,命名为55
[root@localhost opt]$ cp -r 33 44 //复制文件夹33,命名为44
cp -p 保留源文件的权限进行复制
cp- a 完整保留所有权限,包括连接文件的信息。也可以复制目录。
mv命令
mv move–剪切文件
mv file1 file2
file2为目录时,把file1剪切到file2目录下;
当file2是不存在的文件/目录时,相当于对file1文件/目录重命名 ;
当file1和file2都是文件时,相当于用file1覆盖file2:file1消失,file2文件名保留,内容被file1覆盖。
rm命令
rm remove–删除
rm -r 递归,可删除目录(包括目录下的所有文件和子目录)
rm -f 无提醒的,强制的删除
rm -rf * 删除全部,慎用
alias :Linux中的别名系统
alisa xx=‘命令01’ 将 命令01 命名为 xx,可用 xx 调用 命令01,此为临时生效
在家目录下,将别名写入配置文件‘.bashrc’里,可永久生效
source 使文件生效
unalias xx 撤销别名xx
du命令
du 当前路径所在的目录及使用文件的大小
du -s 只统计当前路径下,每个目录和文件占用的总大小,不计算子目录
du -h 人性化展示
du -sh * 人性化显示当前目录所有文件的大小
df命令
df 查看整个系统的硬盘使用情况
df -h 人性化展示
df -i 查看可用iNode号
df -hT 显示挂载点的文件系统
du和df有什么区别?
查看范围:du 当前路径;df 整个系统
信息详细度:df 整体化信息,包含了整个文件系统的使用情况
du 指定目录下的各个文件和目录的大小
find命令
find 查找文件,
特点:
-
精确查找,精确匹配
-
实时遍历,速度较慢
-
支持多种查找条件。
find 查找路径 查找条件 处理动作(默认动作:打印,即展示结果)
查找路径:绝对路径;如果不写路径,默认为当前目录
全部查找条件和处理动作
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或--help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-lname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
常用的查找条件
-name 根据文件名进行查找,精确匹配。允许使用通配符查找: ? *
// 在/opt目录下查找包含1.txt的路径(包括目录)
[root@localhost opt]$ find /opt -name 1.txt
/opt/01/1.txt //默认动作:打印查找结果
// 在当前目录下查找以".php"结束的文件,需要使用""
[root@localhost opt]$ find -name "*.php"
./1.php
./2.php
-size 根据文件的大小进行查找:+表示比查找目标大,-表示比查找目标小,=(约等于查找目标的大小)单位:K M G(大写),c–字节(小写)
// 在/opt目录下查找所有大于10M的文件
[root@localhost opt]$ find /opt -size +10M
// 查找当前目录下小于2G的文件
[root@localhost opt]$ find . -size -2G
-type 根据文件类型进行查找:f–file,普通文件;d–directory,目录;l–link,连接文件;b–block ,块设备文件,s:套接字文件;c:字符设备文件
// 按类型查找,常用类型 f d
[root@localhost 01]$ find /opt -type d
/opt
/opt/01
/opt/01/dir01 //会展示所有目录,包括子目录
-user 根据文件所有者进行查找
// 查找属于root用户的文件
[root@localhost opt]$ find -user root -type f
-inum 根据文件iNode号进行查找,可根据iNode号进行删除
-perm 根据权限(r,w,x对应的数字)进行查找
-mtime modify,根据最后修改时间查询,-30:30天以内,+30;30天以上;30:30-31天
-ctime change,最后改变时间,改变了权限所有者和所在组,iNode号改变也会改变ctime
-atime 最后访问时间
常用处理动作
-delete 删除文件或空目录,查找的结果直接删除,慎用
-ls 把查询到的结果,以ls -l或ll的形式展示详细信息
-fls +文件名file1 把查找到的信息以长格式的形式保存到文件file1中
-ok 执行命令,需要确认。
-exec execute,执行命令,不需要确认格式
格式:-ok 系统命令 {} \; //执行后需要确认
格式:-exec 系统命令 {} \; //其中:{}指代find到的结果,系统命令对find到的结果进行的操作,\;表示结束
// 例:查找/opt 目录下30天以内,修改过的,文件的大小超过10G的文件,直接删除
find /opt -type f -mtime -30 -size +10G -exec rm -rf {} \;
// 例:查找/opt 目录下以'.txt'结尾的文件,并剪切到/opt/txtlib目录下
find /opt -type f -name "*.txt" -exec mv {} /opt/txtlib \;
find条件中的逻辑关系
-o or 或,即将 -o 两端的条件都展示
-a and 且,默认就是-a,一般不用加
//同时查找/opt目录下 以.txt和.html结束的文件
find /opt -name "*.txt" -o -name "*.html"
whereis命令 which命令
whereis 只能查找系统命令所在的位置,不能查找系统文件和目录,会一并显展示帮助文档所在的位置
which 只能查找系统命令所在的位置,不能查找系统文件和目录。区别whereis:如果改命令有别名,which会把该命令的别名一并展示,且不显示帮助文档位置
简单查看系统命令
lscpu 查看CPU信息,也可以 cat /proc/cpuinfo
free -h 人性化展示内存使用情况
echo 1 > /proc/sys/vm/drop_caches 清除内存缓存
lsblk 查看硬盘和分区情况
arch 查看机器架构,一般都是x86_64
uname -r 查看内核版本
date 显示系统时间
date +%T 显示24小时时间格式
date +%F 显示当前日期格式
date -d ‘-1 day’ +%F 显示前一天日期