Linux常见目录
路径 | 说明 |
---|---|
/ | 根目录 |
/bin | 命令保存目录(普通用户就可以读取的命令) |
/boot | 启动目录,启动相关文件 |
/dev | 设备文件保存目录 |
/etc | 配置文件保存目录 |
/home | 普通用户的家目录 |
/lib | 系统库保存目录 |
/mnt | 系统挂载目录 |
/media | 挂载目录 |
/root | 超级用户的家目录 |
/tmp | 临时目录 |
/sbin | 命令保存目录(超级用户才能使用的目录) |
/proc | 直接写入内存的 |
/sys | 将内核的一些信息映射,可供应用程序所用 |
/usr | 系统软件资源目录 |
/usr/bin/ | 系统命令(普通用户) |
/usr/sbin/ | 系统命令(超级用户) |
/var | 系统相关文档内容 |
/var/log/ | 系统日志位置 |
/var/spool/mail/ | 系统默认邮箱位置 |
/var/lib/ | 默认安装的库文件目录 |
Linux权限意义
- 权限位 -rw-r--r--. 1 root root 44736 7月 18 00:38 install.log
- 权限位是十位 第一位:代表文件类型 - 普通文件 d 目录文件 l 链接文件 其他九位:代表各用户的权限 (前三位=属主权限u 中间三位=属组权限g 其他人权限o) r 读 4 w 写 2 x 执行 1
- 权限对文件的含义:r:读取文件内容 如:cat、more、head、tail w:编辑、新增、修改文件内容 如:vi、echo 但是不包含删除文件 x:可执行 /tmp/11/22/abc ---------
- 权限对目录的含义:r:可以查询目录下文件名 如:ls w:具有修改目录结构的权限 如:touch、rm、mv、cp x:可以进入目录 如:cd
常用命令
find
代码语言:javascript复制find 查找位置 -name 文件名
-name 文件名 按照文件名查找
-user 用户名 按照属主用户名查找文件
-group 组名 按照属组组名查找文件
-size 按照文件大小k M 如:find / -size 50k
-type 按照文件类型查找(f=普通 d=目录 l=链接)
-perm 按照权限查找 如:find /root -perm 644
-iname 按照文件名查找,不区分大小写
示例:
find / -name aabbcc 查找/目录下名为 aabbcc的文件
grep
代码语言:javascript复制grep 选项 '字串' 查找路径
-v 反向选择
-i 忽略大小写
示例:
grep -i "root" /etc/passwd
案例
代码语言:javascript复制root@kali:~# cat test.txt
123
abc
456
abc123
#adff
23####
n##
##
#adddff
查看非空行和非注释开头的行并输出行号
代码语言:javascript复制root@kali:~# grep -Evn '^$|^#' test.txt
2:123
3:abc
4:456
6:abc123
10:23####
11:n##
过滤出带有某个关键词的行并输入行号
代码语言:javascript复制root@kali:~# grep -vn 'df' test.txt
1:
2:123
3:abc
4:456
5:
6:abc123
7:
9:
10:23####
11:n##
12:##
指定要过滤字符出现的次数
代码语言:javascript复制root@kali:~# grep -En 'f{2}' test.txt
8:#adff
13:#adddff
清理进入的日志
代码语言:javascript复制grep /home/member/logs/access.log -v 174.122.136.104 -output cleaned.log
zip
代码语言:javascript复制zip 命令 生成的zip文件 被压缩的文件
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-z:替压缩文件加上注释;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-e 加密
-u:更换较新的文件到压缩文件内;
-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-D:压缩文件内不建立目录名称;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-h:在线帮助;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF CR字符;
-ll:压缩文件时,把LF cp字符置换成LF字符;
-L:显示版权信息;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-S:包含系统和隐藏文件;
-T:检查备份文件内的每个文件是否正确无误;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>:压缩效率是一个介于1~9的数值
unzip
代码语言:javascript复制zip 命令 生成的zip文件 被压缩的文件
-d 指定文件解压缩后所要存储的目录
-n 解压缩时不要覆盖原有的文件
-o 不必先询问用户,unzip 执行后覆盖原有文件
-q 安静模式,执行时不显示任何信息
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
-p 与 -c 参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-l 显示压缩文件内所包含的文件
-f 更新现有的文件
-t 检查压缩文件是否正确,但不解压
-u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
-z 仅显示压缩文件的备注文字
-v 执行时显示详细的信息。或查看压缩文件目录,但不解压
-T 将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间
-x 指定不要处理 .zip 压缩文件中的哪些文件
-a 对文本文件进行必要的字符转换
-j 不处理压缩文件中原有的目录路径
-aa 把所有的文件目录当作文本处理
-U use escapes for all non-ASCII Unicode
-UU 忽略 Unicode 编码字符
-C 压缩文件中的文件名称区分大小写
-L 将压缩文件中的全部文件名改为小写
-X 解压缩时同时回存文件原来的 UID/GID
-V 保留 VMS 的文件版本信息
-K 保留文件的 setuid/setgid/tacky 属性
-M 将输出结果送到 more 程序处理
-O 指定字符编码为 DOS,Windows 和 OS/2
-I 指定字符编码为 UNIX
awk
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符
语法:awk [选项参数] 'script' var=value file(s) 或awk [选项参数] -f scriptfile var=value file(s)
案例
- 截取文档中的某个段
awk -F ':' '{print$2}' test.txt
解释一下:
- -F 选项的作用是指定分隔符,如果不加-F指定,则以空格或者tab为分隔符。Print为打印的动作,用来打印出某个字段。
2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。
- 注意awk的格式,-F后紧跟单引号,然后里面为分隔符,print的动作要用 { } 括起来,否则会报错。print还可以打印自定义的内容,但是自定义的内容要用双引号括起来
- 匹配
# 以冒号分隔,让第一个字符段中匹配有123
awk -F ':' '$1 ~/123/' test.txt
# 多次匹配
awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' /etc/passwd
- 条件操作符
awk -F ':' '$3=="0"' /etc/passwd
awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,也可以理解为 ‘精确匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,即使$3为数字,awk也不会把它当数字看待,它会认为是一个字符。所以不要妄图去拿$3当数字去和数字做比较。
!= 为不匹配
另外还可以使用 && 和 || 表示 “并且” 和 “或者” 的意思。
- 内置变量
awk常用的变量有:
NF :用分隔符分隔后一共有多少段
NR :行数
[root@localhost ~]# head -n3 /etc/passwd
root:x:0:0:usr:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print NF}'
7 7 7
[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print $NF}'
/bin/bash /sbin/nologin /sbin/nologin
[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print NR}'
1 2 3
- 使用判断条件
[root@localhost ~]# awk 'NR>40' /etc/passwd
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD
Stack:/var/run/avahi-daemon:/sbin/nologin
cao:x:1001:1001::/home/cao:/bin/bash
usr:x:1002:1002:用户,offic,1234567,123:/home/usr:/bin/bash
test:x:1003:1003::/home/test:/bin/bash
test1:x:1004:1003::/home/test1:/bin/bash