Linux的目录结构
“/” :最高层根目录,没有父目录(相当于Windows中"我的电脑")
etc :系统配置文件的存放目录,不建议在此目录下存放可执行文件
usr/local :应用程序存放目录
root :系统管理员root的home目录
- 每个用户都有home目录
- 超级管理员的home目录为 /root
- 相当于Windows的桌面,也就是一登录就能看到的文件夹
Linux常用命令
磁盘管理命令
ls:列出目录内容,参数如下:
- -a 或 --all :列出所有文件(包括隐藏文件,名字以 . 开头)、特殊目录、. 和 …
- -l :列出文件的详细列表(d开头表示文件夹,-开头表示普通文件,l表示软链接文件(相当于Windows中的快捷方式),可以是:ls -a -l,ls -l 简称 ll,ls后也可跟文件夹名称,查的是该文件夹里目录信息)
- -h(human readable):会把文件大小有字节的换算为 kb 显示
- -d :查看目录本身的信息,而不是查看目录下的文件信息
- -i : 显示 i 节点
cd:切换目录(change directory)
- cd ~ :直接回到当前用户的home目录
- cd / :直接进入根目录
- cd / 目录名 :从根目录开始,切换到指定目录(绝对路径)
- cd … :向上一层
- cd - :最近两次的访问目录之间进行切换
pwd :显示当前所在目录的绝对路径(print working directory)
- 绝对路径:从根目录开始寻找资源
- 相对路径:从当前目录开始寻找资源
mkdir :创建文件夹目录(make directory)
- mkdir d1
- mkdir d1 d1/d2(先创建d1,再创建d1下的d2)级联创建
- mkdir -p d1/d2(先创建d1,再创建d1下的d2)级联创建
rmdir :删除空目录(remove directory)
- rmdir d1
- rmdir d1/d2
- rmdir d1/d2 d1(先删除d1下的d2目录,再删除d1)
rm :删除文件或目录(remove)
- rm 文件:会有确认的删除询问
- rm -f :强制删除(rm无法删除一个目录,即使是空的)
- rm -r 文件 :-r 表示递归处理
- rm -rf 目录:强制删除该目录下的所有目录文件(包括该目录)
- rm -rf * :删除当前目录下所有文件
- rm -rf /* :删除Linux系统根目录下所有文件(不要轻易尝试)
tab :补全目录,补全命令
文件命令
cat 文件名:快捷的查看文件内容(适合查看内容较少的文件的内容)
more 文件名:分页显示文件内容,并且支持跳转行功能
- 回车:下一行
- 空格:下一页
- b :返回上一页
- q :退出
less 文件名:分页显示文件内容,操作更细致
- less -m 文件名:显示百分比
- less -N 文件名:显示行号
- less -Nm(或 less -mN):即显示百分比,也显示行号
vi 工作模式
- 一般模式:可以浏览文件内容,进行文件快捷操作
①单行复制:yy(复制),p(粘贴)
②单行删除:dd(删除)
③多行复制:2yy(复制2行)
④多行删除:2dd(删除2行)
⑤数字 + ↑↓方向键:上下跳至多行
⑥数字 + ←→左右键:一行内跳至多位置 - 插入模式:可以编辑文件内容
- 底行模式:①可以进行退出:q! ②保存并退出操作:wq 文件名 (write quit)
tail -数字 文件名:可以快速查看文件后n行的内容
head -数字 文件名:可以快速查看文件正n行的内容
cp :复制(copy)
- cp 源文件 目标文件:cp a.txt b.txt(复制a.txt 命名为b.txt)
- cp -r 源目录 目标目录:cp -r d1 d2 (复制d1文件目录 命名为d2文件名)(-r参数表示递归复制)
mv :移动(move)(相当于:剪切粘贴)
- mv 源文件或目录 目标文件或目录(mv a.txt /d1/b.txt :将当前文件目录下的a.txt文件剪切粘贴至d1文件目录下并命名为b.txt,b.txt可写可不写,不写就是显示原文件名,写了就是变更文件名)(如果移动的文件或目录在目标位置已经存在,系统会询问是否进行覆盖y/n?)
- mv -f :源文件或目录 目标文件或目录(mv -f d1 d2)(移动文件夹到目标位置,如果目标位置已经存在该文件或文件夹则强制覆盖)
- mv还可以修改一个文件或目录的名字(mv 1.txt 2.txt:将1.txt变更命名为2.txt),本质上还是移动,只不过移动前后的位置都是当前位置而已
软连接和硬链接的区别
链接命令
-
In -s[源文件] [目标文件]
-
命令英文原译:link
-
功能描述:生成链接文件
-
选项:-s 创建软链接 (不带 -s 是硬链接)
-
用户通过文件名查找一个文件内容的模型图
-
可以通过 ls -i 来查看文件的 i 节点值(i 节点相当于id)
硬链接特征
- 拥有相同的 i 节点(id)和存储block块,可以看做是同一个文件
- 可以通过 i 节点识别
- 不能跨分区
- 不能针对目录使用
硬链接模型图
无论是修改原文件还是修改硬链接文件,都是修改同一片块区
原文件和硬链接文件具有相同的 i 节点,复制是把存储空间翻倍,创建硬链接是多创建一个引用
删除原文件后,还可以根据硬链接文件找到文件内容
软连接特征
- 类似Windows中的快捷方式
- 软链接拥有自己的 i 节点和block块,但是数据块中只保存原文件的文件名和 i 节点号,并没有实际的文件数据
- lrwxrwxrwx (l 表示软链接,软链接的权限总是为 lrwxrwxrwx)
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
软链接模型图
*在为指定文件创建软链接时,要写指定文件的绝对路径!(硬链接无要求)
find [搜索范围] [搜索条件]
- 避免大范围搜索,因为find会非常耗费系统资源
find / -name a.txt :按照文件名搜索(带/是在整个根目录下寻找,不带/只在当前目录下寻找)
find / -iname a.txt :不区分大小写,按照文件名搜索
find /var/log mtime +10 :搜索10天前修改的文件
- -10:10天内修改的文件
- 10:10天前当天修改的文件
- +10:10天前修改的文件
- -atime:访问文件的时间
- -ctime:改变文件属性的时间
- -mtime:修改文件内容的时间
find . -size 25k :查找文件大小是25kb的文件
- -25k:小于25kb的文件
- 25k:等于25kb的文件
- +25k:大于25kb的文件
- +2M:大于2M的文件(M必须大写)
find . -inum 123456 :查找 i 节点是123456的文件
find /etc -size +20k -a -size -50k :查找 /etc/ 目录下,大于20k且小于50k的文件
- -a and:逻辑与
- -o or:逻辑或
find /etc -size +20k -exec ls -lh {} ;
- -exec 命令 {} ;(标黄是固定写法,中间命令可以随意换)
- 对搜索结果执行操作
例:
通配符(必须在双引号之内使用通配符)(抓住两点:查列数看内容)
grep 正则表达式 文件或目录:在指定的文件或目录中,返回所有匹配正则式的行
- grep a a.txt(查找a.txt文件中包含a的一行)
- grep -i a a.txt (忽略大小写)
- grep -v a a.txt:排除匹配的行(取反)
- grep -n a a.txt:打印行号
管道:“|” 可以连接多个linux命令(只要有输出的命令都可用于管道)
- 命令1 | 命令2 | 命令3
- 前面命令的处理结果,作为后面命令的参数
压缩、解压命令
linux压缩包
- *.tar :打包,文件大小不会进行压缩
- *.tar.gz :打包并压缩
tar 参数
- c:建立一个压缩文件
- x:解开一个压缩文件
- z:使用gzip格式压缩
- v:压缩过程中显示文件
- f:使用文件名,在 f 之后参数要写出压缩(被压缩)的文件名
压缩
- tar -zcvf 压缩包的名字 需要压缩的内容:将某(些)文件使用gizp格式创建一个压缩文件,过程中显示文件名(注意:参数顺序不能变)
- 例:tar -zcvf foo.tar.gz *
解压
- tar -zxvf
- tar -zxvf 压缩包的名字 .tar.gz
- tar -zxvf 压缩包的名字 .tar.gz -C 指定解压路径
系统命令
ps:查看进程信息(process status)
- ps -e :显示所有的进程
- ps -f :完整输出(full format)
- ps -ef :查看最全的进行信息
- UID :表示进程被哪个用户打开
- PID :进程的 id
- CMD :进程对应的程序位置
kill:关闭进程
- kill 进程id:关闭指定进程
- kill -9 进程id:强制关闭进程
ifconfig:查看 ip
ping:测试与目标主机的连通性
- ping www.baidu.com:会持续不断,一直测试
- ctrl + c:可以停止ping 命令
shutdown:关机命令(1分钟后进行关机)(shutdown -now:立即关机)
- shutdown [选项] 时间:
- -c :取消关机
- -h :关机(模式)
- -r :重启
init 运行级别
系统运行级别
- init 0 :关机
- init 1 :单用户(类似于Windows中的安全模式)
- init 2 :不完全多用户,不含NFS服务(文件共享服务)
- init 3 :完全多用户(默认级别)
- init 4 :没有使用该级别,并未分配
- init 5 :图形界面(前提是已安装好图形界面)
- inti 6 :重启
查询当前系统运行在什么级别:runlevel
- N 表示当前级别之前的级别为NULL
下图表示为当前级别是3,3之前的级别是NULL
如何查看权限?
– Linux权限格式:<类型><用户><组><其他用户>
- r 表示可读、w 表示可写、x 表示可执行、- 表示无权限
一个文件在创建的时候,用户就已经有关于该文件的默认权限了
chmod:修改文件或目录的权限(change mod)
- chmod [参数][<权限范围><符号><权限代号>]
- 参数:-R 或 --recurisive ,表示递归处理,将指定目录下的所有文件及子目录一并处理
- 权限范围:u 当前用户、g 当前用户所属组、o 其他用户组、a 所有用户
- 符号:= 覆盖、+ 追加、- 去掉
- 权限代号:r 、w 、x
sed:不用进入文件,在外部修改文件内容
- sed ‘s/old/new/g’ 文件名(带g(global)是在每一行都修改,不带只修改默认找到的第一行)
- 注意:以上的sed 命令,并没有真正的修改文件中的内容,看到改变的结果,仅仅是存放于缓存中的结果而已(等同于预览效果)
- 如果想要让sed 修改的结果能被存入到真实文件中,需要添加一个 -i 的参数(sed -i ‘s/old/new/g’ 文件名)
sed 案例1
在文件中每一行前面加一个空格
- ^ 表示每一行的开头
- $ 表示每一行的末尾
- 、& 表示添加,后面的空格表示添加空格“/&”
sed 案例2
在指定内容的下一行后加新内容(而不是替换)
- /a :表示在指定内容的下一行添加内容
- /i :表示在指定内容的上一行添加内容
sed 案例3 - 打印指定内容所在的行
- 打印指定行数
sed 案例4
- 去除空行
- 排序
awk 案例1
- 打印文件中指定的列
- 可以看出,列和列之间默认是通过空格隔开的
awk 案例2
- 如果列和列之间不是使用空格隔开的,而是使用其他字符隔开的,比如“-
- 1)-F :自定义分隔符
- 2)搭配 sed
crontab:从定时的重复的工作中解放出来
工作中遇到的困难:
1)每分钟需要执行一个程序来检查系统的运行状态
2)每天凌晨需要对一天的业务数据进行统计
3)每个星期需要把日志文件备份
4)每个月需要把数据进行备份
来源:CSDN
作者:二进制的世界_1101
链接:https://blog.csdn.net/dy061951/article/details/103644410