一, 定义一个对所有用户都生效的命令别名
alias td='tcpdump -i ens192 -nnv not port 65022'
二, 显示 / etc/passwd 文件中不以 / bin/bash 结尾的行
grep -v "/bin/bash$" /etc/passwd
三, 找出 / etc/passwd 文件中, 包含二位数字或者三位数字的行
- grep "\<[0-9]{2,3}\>" /etc/passwd
- grep "\<[[:digit:]]{2,3}\>" /etc/passwd
四, 显示 / proc/meminfo 文件中以大写或小写 S 开头的行; 用三种方式实现
- grep -i "^s" /proc/meminfo
- grep "^[s|S]" /proc/meminfo
- sed -n "/^[s|S]/p" /proc/meminfo
五, 使用 echo 输出一个绝对路径, 使用 egrep 取出路径名, 类似执行 dirname /etc/passwd 的结果
echo /etc/sysconfig | grep -E -o "[^/]+/?$"
六, 找出 ifconfig 中的 ip 地址. 要求结果只显示 IP 地址.
ifconfig | sed -En 's/.inet (addr:)?(([0-9].){3}[0-9])./\2/p'
七, VIM 定制自动缩进四个字符
- VIM .vimrc
- set ai
- set ts=4
八, 编写脚本, 实现自动添加三个用户, 并计算这三个用户的 uid 之和.
- #!/bin/bash
- #
- sum=0
- for account in user1 user2 user3
- do
- if id $account &> /dev/null
- then echo "$account exists"
- else
- useradd $account
- fi
- uid=$(id -u $account)
- sum=$[$sum+$uid]
- done
- echo "sum_id = $sum"
九, find 用法及常用用法的实例演示
-name string: 根据文件名精确查找, 可用 glob 通配符.
-iname string: 不区分大小写的 - name.
-regex PATTERN: 根据正则查找, 匹配范围是整个路径, 比如要查找./fubar3, 应该用. bar. 或. b.3', 而不是 f.r3.
-user USERNAME/UID: 查找指定属主的文件.
-group GNAME/GID: 查找指定属组的文件.
-uid UID: 查找指定属主的文件
-gid GID: 查找指定属组的文件.
-nouser: 查找没有属主的文件.
-nogroup: 查找没有属组的文件.
-type [fdcblps]: 根据文件类型查找.
-size [+-]n: 根据文件大小查找, 可用单位[bcwkMG];+ 表示大于,- 表示小于, 不加表示精确匹配(也没那么精确, 10M 表示 9-10M 都符合条件)
-mtime [+-]days:- 表示 days 内修改过,+ 表示 days 前修改过, 不加表示正好在 days 修改过.
-ctime [+-]days: 改变时间,+- 含义同 - mtime.
-atime [+-]days: 访问时间,+- 含义同 - mtime.
-mmin n:n 分钟前修改过文件内容,
-cmin n:n 分钟前文件改变过.
-amin n:n 分钟前文件被访问过.
-perm [=-/] MODE: 按权限查找,- 表示文件权限是 MODE 超集,/ 和 + 表示权限中只要有一位能匹配就符合, 不指定任何符号表示精确匹配.
根据文件的类型查找:
typeTYPE:
f: 普通文件
d: 目录文件
l: 符号链接文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
s: 套接字文件
组合测试:
与:-a, 默认组合逻辑;
或:-o
非:-not,!
根据文件的大小查找:
-size[+|-]#UNIT
常用单位: k,M,G
- #UNIT:(#-1,#]
- -#UNIT:[0,#-1]
- +#UNIT:(#,oo)
根据时间戳查找:
以 "天" 为单位:
- -atime[+|-]# 访问时间
- #:[#,#-1)
- -#:(#,0]
- +#:(oo,#-1]
-mtime 修改时间 - n +n 按文件更改时间查找 -n n 天内, +n n 天前
-ctime 修改时间
以 "分钟" 为单位:
- -amin
- -mmin
- -cmin
根据权限查找:
-perm[/|-]mode
mode: 精确权限匹配;/mode: 任何一类用户 (u,g,o) 的权限中的任何一位 (r,w,x) 符合条件即满足;-mode: 每一类用户 (u,g,o) 的权限中的每一位 (r,w,x) 同时符合条件即满足;
处理动作:
-print: 输出至标准输出; 默认的动作;
-ls: 类似于对查找到的文件执行 "ls-l" 命令, 输出文件的详细信息;
-delete: 删除查找到的文件;
-fls/PATH/TO/SOMEFILE: 把查找到的所有文件的长格式信息保存至指定文件中;
-okCOMMAND{}\;: 对查找到的每个文件执行由 COMMAND 表示的命令; 每次操作都由用户进行确认;
-execCOMMAND{}\;: 对查找到的每个文件执行由 COMMAND 表示的命令;
实例演示
查找 root 目录下所有文件名为 test.txt 的文件
find /root -name test.txt
查找文件忽略文件名的大小写
find /root -iname test.txt
根目录下查找目录名为 test 的目录
find / -type d -name test
查找 root 目录目录下的所有 txt 文件
find /root -type f -name "*.txt"
查找权限为 664 的文件
find / -perm 644
查找大小为 10M 的文件
find / -size 10M -ls
查找文件大小在 1M-10M 之间的文件
find / -size +1M -size -10M -ls
查找最近 7 天修改过的文件
find / -mtime 7
查找最近 7 天被访问过的文件
find / -atime 7
找到 txt 类型的文件并删除
find . -type f -name "*.txt" -exec rm -f {} \;
找到权限为 755 的目录并改为 777find /root -type d -perm 755 -print -exec chmod 777 {} \;
Linux 基础知识(三)
来源: http://www.bubuko.com/infodetail-2898950.html