参考师傅文章:https://blog.csdn.net/qq_42427971/article/details/112860080
结合xshell和xftp测试学习
前置知识
在linux中,一切皆文件
退出命令
Ctrl+c是强制中断程序的执行。
Ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,如mysql挂起后就下次进就可以不用输入密码了。
Shell
参考:https://blog.csdn.net/cheng__lu/article/details/79418278
shell意为“壳“,是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核
Linux中的shell,是指一个面向用户的命令接口,也就是我们输入命令的地方,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息
shell类似与用户与系统之间的桥梁,当我们在shell上输入一些命令时,shell会传递给内核,经过内核的处理反馈给用户
shell可以直接执行命令,也可以编写一个sh文件,内含shell脚本来执行
相对路径
在当前目录为起点叫做相对路径 相对路径的表示形式
表现形式 | 说明 | 示例 |
---|---|---|
直接使用目录名或文件名 | 表示当前工作中的子目录、文件的位置 | cat.conf |
以一个点号"." 开头 | 表示以当前的工作目录作为起点 | ./cat.conf |
以两个点号". ." 开头 | 表示当前目录的上级目录作为起点 | . ./cat.conf |
以“~用户名”形式为开头 | 表示以指定用户的宿主目录作为起点 | ~fox |
以“~”形式开头 | 表示以当前用户的宿主目录作为起点 | ~ |
绝对路径
以根号为起点的路径就叫绝对路径
通配符
“?”:代表任意一个字符,且至少一个 “*”:代表任意数个字符,可以是0个或者1个或者多个 “[]”:表示可以匹配字符组中的任意一个字符 如[A-Z]
-a 表示而且(and)
-o 表示或者(or)
软链接与硬链接
软链接类似于windows系统中的快捷方式,在Linux下,软连接就是一个普通文件,它包含指向源文件的位置信息。
硬链接实现了一个文件有多个名字,同时放在多个不同目录,它的作用时可以防止误删文件。当编辑其中一个文件并保存,查看其它位置文件内容时,内容显示还是一致的。硬链接建立后,删除任意一个文件,即使是源文件也可以,文件内容不会受损,直到源文件和硬链接文件都被删除后,文件内容才会损失。这可以看做硬链接相互为副本,但是实际并没有多占空间。
常用命令
help
本身是Linux Shell中的一个内建指令,其用途是查看各Shell内部命令的帮助信息
如help pwd命令可以查看Shell内部命令pwd 的帮助信息
*enable
-n:关闭指定的内部命令; -a:显示所有激活的内部命令; -f:从指定文件中读取内部命令。
功能:启动或关闭shell内建指令命令
用法:如果enable -n cd就会关闭cd命令的使用 enable cd重新开启
type
作用:查看命令属于外部/内部命令
内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行
完毕后从内存中删除
例如
type echo #判断echo命令 echo is a shell builtin #表示echo是一个内部命令
type ping #判断ping命令 date is /usr/bin/ping # 表示ping是一个外部命令
ip addr
输入“ifconfig”命令查看ip地址,如果是centos7版本则使用“ip addr”命令来查看ip地址即可。
回显的inet一般为ipv4地址
常用指令
pwd
显示当前所在工作目录的位置
cd
*cd或cd ~ : 切换到当前文件的家目录
cd - :切换到上一次目录
ls
显示目录中内容,包括子目录和文件相关属性信息
常用选项
-l 显示权限、大小、用户名、组名、大小、更改时间 -a 显示隐藏文件. . -A 显示所有文件除了. . -d 显示目录本身的属性 -R 以递归的方式显示子目录
白色 一般文件 天蓝色 软连接文件 红色 压缩文件 黄色 设备文件 绿色 可执行文件
与之类似的是dir 显示目录
如dir ../显示上级目录下的内容
alias
可用于简化指令,自定义指令别名
如指令alias pb='ping www.baidu.com'
再次输入指令pb即会执行后面部分
unalias pb 即取消指令别名pb
mkdir
makedir
目录即是一个文件
创建目录:mkdir 目录名
嵌套目录:mkdir -p 目录名/目录名/目录名
touch
作用:单独或批量进行创建文件;更新文件时间标记
1.单独创建文件
touch 文件名
如touch helloworld.py
2.批量创建文件(用{}可指定前缀或后缀)
touch指令 | ls测试 |
---|---|
touch {cat,dog}.java | cat.java dog.java |
touch cat.{java,py} | cat.java cat.py |
3.更新文件时间
如touch cat.java即更新了cat.java的文件时间
通过在目录下ls -l 即可看出
vi|vim
vi是unix默认的文本编辑器[vim是它的增强版本]
如vi hello.py
进入文件编辑后,按i键进入insert编辑模式
编辑结束,按ESC退出编辑模式,再开启大写模式后敲击两个ZZ即可保存
cat
查看文件内容,会直接显示整个文件的内容
用法:cat 选项 文件名
常用选项(可选)
-n 对所有输出的行数编号 -b 对与空白行不编号 -s 将所有的连续的多个空行替换(压缩)为一个空行
rm
remove
删除文件或目录
用法: rm 选项 文件名
常用选项(可选)
-f:删除文件或目录时不进行提醒,而直接强制删除 -i:删除文件或目录时提醒用户确认(y表示删除,n表示不删除) -r:删除目录时必须使用此选项,表示递归删除整个目录树,需要用户确认y/n
cp
copy
复制 文件或目录到当前目录下
用法: cp 源文件 新文件
常用选项 -f:覆盖目标同名的文件或目录时不进行提醒,而直接强制复制 -i:覆盖目标同名的文件或目录时提醒用户确认 -p:复制时保存文件的权限、属主及时间标记等属性不变 -r:复制目录时必须使用此选项,表示递归复制所有文件及子目录
mv
move
移动文件或目录
用法: mv 移动目标 移动目的地
如mv cat.java ../
即将cat.java文件移动到上级目录
如果目标位置与源位置相同,则相当于执行重命名操作
如mv cat.java home 而当前目录即为home,那么cat.java就会呗重命名为home
which
查看指令文件所在目录
搜索范围由环境变量PATH决定,可以通过指令echo $PATH查看范围,会从左到右依次查找
通过which命令就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令
如which ping 返回/usr/bin/ping
而查找内部命令时将会提示找不到对应程序
gzip|bzip2
制作压缩包和解压缩包,压缩包文件后缀为gz
用法:gzip 选项 文件名
无选项时会直接压缩源文件
常用选项 -9 可以提高压缩比率[默认等级6平衡] -d 用于解压缩以及压缩过的文件
指令 | ls测试 |
---|---|
gzip cat.java | cat.java.gz |
gzip -d cat.java.gz | cat.java |
tar
制作归档文件和释放归档文件
tar 选项 文件
常用选项
-c:创建.tar格式的包文件 -x:解开.tar格式的包文件 -C:解压时指定释放的目标文件夹 -f:表示使用归档文件 -p(小写):打包时保留文件及目录的权限 -P(大写):打包时保留文件及目录的绝对路径 -t:列表查看包内的文件 -v:输出详细信息(Verbose) -j:调用bzip2程序进行压缩或解压 -z :调用gzip 程序进行压缩或解压
du
统计目录及文件空间使用情况
du 选项 文件/目录
常用选项
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h 以更人性化的方式,默认以KB计数,不显示单位
-s 只统计所占用空间总的大小
–max-depth=n 统计所有小于等于第n层的目录的总大小
★面试题 如何以易读的方式显示文件夹内及子文件夹大小
-ah或者 -a -h都可以
★检查异常占用[逐层查]
如du -h –max-depth=1 ./ 检测当前目录所有小于等于第一层目录的总大小
其中/proc为虚拟文件系统可以排除
find
采用递归的方式,根据名称、类型、大小等方式进行查找
用法: find 目录 选项
常用选项:
-name 按名称查找:根据目标文件的名称进行查找,允许使用 “*” 及 “?” 通配符
-size 按文件大小查找:根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件,常用的容量单位包括kB(注意k是小写)、MB、GB
-user按照文件属主查询:根据文件是否属于目标用户进行查找
-type按照文件类型查找:根据文件的类型进行查找,文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
如在当前目录下找类型为目录,名字test
find ./ -type d -name "test"
返回./test
如在当前目录下找类型为普通文件,名字hello.py
find ./ -type f -name "hello.py"
返回./test/hello.py
各表达式之间使用逻辑运算符
-a 表示而且(and)
-o 表示或者(or)
-exec 后面跟linux命令,执行系统命令,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符
找到当前目录下所有的以.log结尾的文件并把查找结果当做参数传给rm -rf命令进行删除,注意备份,这可用于执行自动删除日志的功能 find ./ -name "*.log" -a -type f -exec rm -rf {} \;
rm -rf命令见前面 表示递归删除目录且不提醒
ln
为某一个文件在另外一个位置建立一个同步的链接(软链接)
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空
用法 : ln -s 源文件 目标文件
跨目录创建后会闪红
如将hello.py在test2文件中建立一个同步的链接文件(命名为hellocopy.py)
ln -s hello.py ./test2/hellocopy.py
grep
查找并显示包含指定字符串的行
用法: grep 选项 目标
常用选项 -i 查找时不区分大小写 -v 显示不包含匹配文本的所有行[反向] -c 指数粗匹配到的总行数 按行不按次数 -n 显示匹配行及行号 -e 实现可多给查找条件的匹配,逻辑or关系 -E 支持使用扩展正则表达式,相当于egrep -o 精确匹配。即“仅匹配”之意 查找条件设置 "^. . ."表示以. . .开头 ". . .$ "表示以 . . .结尾 "^$"表示空行
注:双引号代表一个整体、一个好习惯,如果不加双引号会导致有时候作为一个整体可能会被分割
如在hello.py中查找一个以p开头的行,同时不区分大小写
注意需要提前cd到所需要查询的文件的同一目录下
grep -i "^p" hello.py
如在hello.py中查找o,不论次数,不区分大小写
grep -io "o" hello.py
但这只会显示所要查找的内容,想要整行显示就根据查找条件设置来显示行
more
查看内容较多的文件,cat是一次显示全部内容,而more可以分页显示内容
用法:more 选项 目标文件
交互操作方法
-
按Enter键向下逐行滚动
-
按空格键向下翻一屏
-
按b键向上翻屏
-
按q键退出
如结合管道符显示当前目录
ls -r ./|more
less
查看内容较多的文件,与more的功能相同,但比more更加的全面
用法: less 选项 目标文件
交互操作方法
-
按 Page Up 键向上翻页 Page Down 键向下翻页
-
按"/"键查找内容,”n“下一个内容,”N“上一个内容
-
通过↑和↓方向键实现上下逐行滚动
-
下翻到最后一页后不会自动退出
-
结合管道操作使用时可以向上翻页
hend|tail
查看文件内容开头和结尾
head 用于查看文件内容开头,可以指定行数,默认为10行
用法: head 选项 文件
常用选项
-n 显示的行数 *n=行数
如查看test文件内容的前十行 head test
如查看test文件内容的前五行 head -5 test
tail 用于查看文件内容结尾
用法: tail 选项 文件
常用选项
-f 动态更新(循环读取)如出现改变将更新
-n 显示文件尾部n行的内容
动态更新
此处使用echo对cat文件进行添加内容,vi下无法更新
tail -f hello.py
单>为覆盖原有内容
双>>为追加入原有内容
如对hello.py追加内容aaa
echo aaa >> hello.py
注意: 若无hello.py文件,则会先创建此文件并追加内容
ctrl c 退出
wc
统计文件中的数量等信息
用法: wc 选项 文件
常用指令
-l 统计行数[空行也算]
-w 统计单词个数[衡量标准为空格分隔]
-c 统计字节数
如不加任何选项则默认同时使用这三个选项
如wc test
回显 3 3 26 test
3 3 26依次为行数、单词个数、字节数
echo
echo 不加选项时,直接输出字符串
echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上
区别: 命令echo -e "My name is \n Xiaoing" 返回My name is Xiaoing 命令echo "My name is \n Xiaoing" 返回My name is \n Xiaoing
常用的转义字符
\b 相当于退格键,前提是 \b 后面存在字符并且加上双引号才会生效
\c 不换行输出,在 \c 后面不存在字符的情况下,相当于echo -n
\n 换行,被输出的字符从 \n 处开始另起一行
举例:可用于fdisk,实现无交互创建磁盘分区 echo -e “\n\np\n\n\n\nw\n” | fdisk /dev/sd[]
\f 换行,但是换行后是新行开头位置连接上一行的行尾
\v 与f相同
\t 插入tab,横向制表符
\r 不换行的回车符,但是 \r 后面的内容会覆盖前面的内容,如 \r 后面没有字符时则不覆盖
\ 表示插入一个\
echo -e "123\n""123" | passwd
hash
hash命令负责显示与清除命令运行时系统优先查询的哈希表(hash table)
用法: hash 参数 目录(可选)
常用参数:
-d | 在哈希表中清除记录 |
---|---|
-l | 显示哈希表中的命令 |
-p 路径指令 | 将具有完整路径的命令加入到哈希表中 |
-r | 清除哈希表中的记录 |
-t | 显示哈希表中命令的完整路径 |
文件格式
sh后缀一般为脚本文件
进阶知识
命令执行的优先级
第一优先级带上路径去执行命令
-
如绝对路径 /cathome/cat.java 或者相对路径 ./cat.java
-
绝对路径就是准确的路径,相对路径就是相对与某个文件的路径,如上是相对于当前目录./下的文件路径
第二优先级是别名命令
-
也就是alias设置的别名
第三优先级是内部命令 第四优先级是hash命令
-
Linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找
-
hash表能提高命令的调用速率
第五优先级通过PATH定义的查找顺序查找 如果以上顺序都找不到,就会报“未找到命令…”的错误
Centos目录结构
常见的子目录和解释
/bin: 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。是一个软链接文件,源文件是/usr/bin
/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev:是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux中访问设备的方式和访问文件的方式是相同的
/etc:是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
/home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve
/lib:是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL文件;几乎所有的应用程序都需要用到这些共享库。是个软链接文件/usr/lib
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/opt:是 optional(可选)的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下;这个目录默认是空的
/proc:是 Processes(进程) 的缩写,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器
/root:该目录为系统管理员,也称作超级权限者的用户主目录
/sbin:s 代表 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序;它是个软连接文件,源文件为usr/sbin
/selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的
/srv:该目录存放一些服务启动之后需要提取的数据
/sys:
-
这是 Linux2.6 内核的一个很大的变化;该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs
-
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的devpts 文件系统
-
该文件系统是内核设备树的一个直观反映
-
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建
/tmp: 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的
/usr:是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
/usr/bin:系统用户使用的应用程序
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序
/usr/src:内核源代码默认的放置目录
/var:var 是 variable(变量)的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
Comments NOTHING