Linux的优势
一切都是一个文件。(包括硬件,文本,二进制,源代码)
系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
当遇到复杂任务,通过不同功能用途的程序组合起来完成。
避免令人困惑的用户界面就是没有复杂的图形界面。
连配置文件都存储在文本中,方便增删改查。
不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
简述shell
shell
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件
提供了用户与内核进行交互操作的一种接口。
bash是linux里面默认的
shell程序位于/bin/bash
内部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
属于Shell的一部分
没有单独对应的系统文件
自动载入内存,可以直接使用
外部命令
Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell解释器程序之外的命令
每个外部命令对应了系统中的一个文件
必须知道其对应的文件位置,由Shell加载后才能执行
命令优先级 别名命令>内部命令>缓存命令>外部命令
基础指令
快捷指令
Esc+.或Alt+.:粘贴上一个命令的参数
Ctrl+a 光标移到最前
Ctrl+e end 键 光标移到最后
Ctrl+U 清空至行首不包括当前光标处的 字符
Ctrl+K 清空至行尾包括当前光标处的字符
Ctrl+w 从当前光标删除到开头
ALT+d 从当前光标删除末尾
反斜杠“\” 强制换行或转义
alias别名
alias 查看所有别名
unalias 别名 删除指定别名
\命令 #执行命令本身而不是别名
alias后面双引号:变量是静态 单引号:变量是动态
通配符
* 任意长度
? 代表一个字符
[0-9] 代表单个数字
[^0-9] 除了数字
[a-z] 少了大Z
{a..z} 小写a-z
{1..10} 1到10
[[:lower:]] 小写字母表示 a-z
[[:upper:]] 大写字母表示 A-Z
[^zhou] 匹配列表中的所有字符以外的字符
[[:digit:]] 任意数字,相当于0-9
硬链接软链接
1.本质
硬链接:本质是同一个文件
软链接:本质不是同一个文件
2.跨设备
硬链接:不支持
软链接:支持
3.inode
硬链接:相同
软链接:不同
4.链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化
5.文件夹
硬链接:不支持
软链接:支持
6.相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件相对路径是相对于链接文件的相对路径
7.删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问
8.文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关
新建软连接 ln -s 源文件(绝对路径) 软连接路径
建立硬连接 In 源文件路径 硬链接路径 #不能跨分区建立连接 无法对文件夹创建
. ..也是硬链接
删除连接 rm -rf 软连接路径
rm -rf 软连接路径/ #软连接路径加/ 会删除源文件
ls
-S 以文件容量大小排序
-i indoe号
-t 以时间排序,最新的文件会排在上面
-r 表示反向排序、倒序输出
-A 显示全部文件或隐藏文件,但不包括 . 和..
-a 显示全部包括隐藏文件
-h 友好显示文件大小
du
du [目录] 只显示所有目录的大小
-d 数字 查看目录数字层级的占用
-a包含所有文件不止目录
-s 只看当前目录总大小
--max-depth=n (-d 1)最大显示到第n层
df
df [文件] 可显示所有文件系统对i节点和磁盘块的使用情况.
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统.
-i 显示i节点信息,而不是磁盘块.
-t 显示各指定类型的文件系统的磁盘空间使用情况.
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反).
-T 显示文件系统类型.
如果用户删除了一个正在运行的应用所打开的某个目录下的文件,
则du命令返回的值显示出减去了该文件后的目录的大小。
但df命令并不显示减去该文件后的大小。直到该运行的应用关闭了这个打开的文件,
df返回的值才显示出减去了该文件后的文件系统的使用情况。
提示空间快满,使用 rm 删除了很大的无用文件后,df仍然看到空间不足
使用lsof |grep delete查看是否正在被使用,如果进程不重要,可以kill杀死进程。
如果进程重要不可断开,cat /dev/null > fi.txt清空正在使用的文件,释放空间。
touch
touch已存在文件 刷新文件时间
每个文件有三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
cp
多个文件只能复制到文件夹
-i 覆盖提醒
-p 保留文件属性(备份常用)
-a 完整保留文件属性包括连接文件
-u 差异复制
-v 可视化
-d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
-l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
-s:复制成为链接文件(symbolic link),亦即『捷径』文件;
rename 批量改名
rename 旧字符 新字符 目标文件
[root opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak
find
find 目录 条件
条件 -user/name/size/perm/inum/type/maxdepth/mindepth
处理动作 exec 命令 {} 目录 \; ls delete
-o #或
思考 1024M 和 1G 一样么?
1024M 代表 1023M - 1024M 不包括1023
1G 表示 0G -1G 不包括0G
-size 10k 表示9k 到10k 且不包括9k
-size -10k 表示9k 以内 包括9k
-size +10k 表示10k 以上 不包括 10k
tar
tar [选项] ... 归档文件名 源文件
目录tar [选项] ... 归档文件名 [-C 目标目录]
-c:创建归档
-x:释放归档
-f:指定归档文件名称,必须在所有选项的最后
-z、-j、-J:调用 .gz、.bz2、.xz 格式工具进行处理
-t:显示归档中的文件清单
-C:指定路径
-p:打包时保留文件及目录的权限
-P:打包时保留文件及目录的绝对径
历史命令
管理/调用曾经执行过的命令
history:查看历史命令列表
history -c:清空历史命令
!n:执行命令历史中的第n条命令
!str:执行最近一次以str开头的历史命令
[root@svr7 ~]# vim /etc/profile
HISTSIZE=1000 #默认记录1000条