Linux入门常识总结

2021-11-25 14:25:11 浏览数 (1)

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权限意义

  1. 权限位 -rw-r--r--. 1 root root 44736 7月 18 00:38 install.log
  2. 权限位是十位 第一位:代表文件类型 - 普通文件 d 目录文件 l 链接文件 其他九位:代表各用户的权限 (前三位=属主权限u 中间三位=属组权限g 其他人权限o) r 读 4 w 写 2 x 执行 1
  3. 权限对文件的含义:r:读取文件内容 如:cat、more、head、tail w:编辑、新增、修改文件内容 如:vi、echo 但是不包含删除文件 x:可执行 /tmp/11/22/abc ---------
  4. 权限对目录的含义:r:可以查询目录下文件名 如:ls w:具有修改目录结构的权限 如:touch、rm、mv、cp x:可以进入目录 如:cd

常用命令

find

find 查找位置 -name 文件名

代码语言:javascript复制
    -name 文件名      按照文件名查找
    -user 用户名      按照属主用户名查找文件
    -group 组名       按照属组组名查找文件
    -size            按照文件大小k M  如:find / -size  50k
    -type            按照文件类型查找(f=普通  d=目录  l=链接)
    -perm            按照权限查找  如:find /root -perm 644
    -iname           按照文件名查找,不区分大小写

示例:
    
    find / -name aabbcc    查找/目录下名为 aabbcc的文件

grep

grep 选项 '字串' 查找路径

代码语言:javascript复制
    -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

zip 命令 生成的zip文件 被压缩的文件

代码语言:javascript复制
-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

zip 命令 生成的zip文件 被压缩的文件

代码语言:javascript复制
    -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)

案例

  1. 截取文档中的某个段
代码语言:javascript复制
awk -F ':' '{print$2}' test.txt

解释一下:

  • -F 选项的作用是指定分隔符,如果不加-F指定,则以空格或者tab为分隔符。Print为打印的动作,用来打印出某个字段。
1为第一个字段,

2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。

  • 注意awk的格式,-F后紧跟单引号,然后里面为分隔符,print的动作要用 { } 括起来,否则会报错。print还可以打印自定义的内容,但是自定义的内容要用双引号括起来
  1. 匹配
代码语言:javascript复制
# 以冒号分隔,让第一个字符段中匹配有123
awk -F ':' '$1 ~/123/' test.txt

# 多次匹配
awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' /etc/passwd
  1. 条件操作符
代码语言:javascript复制
 awk -F ':' '$3=="0"' /etc/passwd

 awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,也可以理解为 ‘精确匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,即使$3为数字,awk也不会把它当数字看待,它会认为是一个字符。所以不要妄图去拿$3当数字去和数字做比较。

    != 为不匹配
另外还可以使用 && 和 || 表示 “并且” 和 “或者” 的意思。
  1. 内置变量
代码语言:javascript复制
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
  1. 使用判断条件
代码语言:javascript复制
[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

0 人点赞