linux命令(3)
目录
- linux基础命令
- 1.如何获取命令帮助
- 2 文件查找 grep
- 3 find -name 时查找,精确性强,遍历指定目录中所有文件完成查找。
- 语法 find+要寻找的路径(不输出默认为当前路径) +参数+名字
- 3.1-iname 对文件名匹配时不区分大小写
- 3.2-user 根据属主来查找
- 3.3 -group 根据数组来查找
- 3.4 -uid 跟据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
- 3.5 -gid 根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
- 3.6 -nouser 查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
- 3.7 -nogroup 查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
- 3.8 -type 根据文件类型来查找(f,d,c,b,l,p,s)
- 3.9 -size 根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M
- 3.10 -mtie 修改时间 ( 多少天访问过)
- 3.11 -mmin 修改时间 (多少分钟以内或以前访问过)
- 4 组合条件
- 5 重定向与管道
- 6 管道 前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程
- 7 tee 从标准输入读取数据,输出一份到屏幕上,一份保存到文件
- 8 bash字符串处理
linux基础命令
1.如何获取命令帮助
1.1 内部命令
[root@YL ~]# help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
1.2 外部命令
[root@YL ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
1.3 在线文档
[root@YL ~]# info bash
Next: Introduction, Prev: (dir), Up: (dir)
Bash Features
*************
[root@YL ~]# man COMMAND
BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1)
NAME
bash, :, ., [, alias, bg, bind, break, builtin, caller,
cd, command, compgen, complete, compopt, continue,
declare, dirs, disown, echo, enable, eval, exec, exit,
1.4 用于查看COMMAND出现在man的哪一章节中
[root@YL ~]# whatis COMMAND
COMMAND (1) - bash built-in commands, see bash(1)
man手册注意事项 | |
---|---|
[] | 可选 |
<> | 必选 |
... | 可以出现多次 |
管道符 | 多选一 |
{} | 分组 |
NAME | 命令名称及功能简要说明 |
SYNOPSIS | 用法说明,包括可用的选项 |
DESCRIPTION | 命令功能的详尽说明,可能 包括每一个选项的意义 |
OPTIONS | 说明每一个选项的意义 |
FILES | 此命令相关的配置文件 |
BUGS | 报告bug |
EXAMPLES | 使用示例 |
SEE ALSO | 另外参照 |
man翻屏 | |
---|---|
向后翻一屏 | SPACE |
向前翻一屏 | b |
向后翻一行 | enter |
向前翻一行 | k |
查找 | |
---|---|
/KEYWORD | 向后 |
?KEYWORD | 向前 |
n | 下一个 |
N | 前一个 |
q | 退出 |
2 文件查找 grep
2.1 -i忽略大小写
[root@YL ~]# grep -i qwe 5.txt
qwe
QWE
2.2 -v 显示没有被模式匹配到的行
[root@YL ~]# grep -v qwe 5.txt
abc
QWW
Qop
Abc
QWE
2.3 -o 只显示被模式匹配到的字符串
[root@YL ~]# grep -o qwe 5.txt
qwe
2.4 -E 使用扩展正则表达式。grep -E相当于使用egrep
[root@YL ~]# grep -E 'abc|qwe' 5.txt
abc
qwe
2.5 -q 静默模式,不输出任何信息
[root@YL ~]# grep -q qwe 5.txt
[root@YL ~]#
2.6 -A 被模式匹配到的内容以及其后面一行的内容都显示出来,如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
[root@YL ~]# grep -A 1 QWW 5.txt
QWW
Qop
2.7 -B 被模式匹配到的内容以及其前面一行的内容都显示出来, 如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
[root@YL ~]# grep -B 1 QWW 5.txt
qwe
QWW
2.8 -C 被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2就表示被模式匹配到的内容以及其前后的行各显示2行。
[root@YL ~]# grep -C 1 QWW 5.txt
qwe
QWW
Qop
3 find -name 时查找,精确性强,遍历指定目录中所有文件完成查找。
语法 find+要寻找的路径(不输出默认为当前路径) +参数+名字
[root@YL ~]# find -name 5.txt
./5.txt
3.1-iname 对文件名匹配时不区分大小写
[root@YL ~]# find -iname abc
./Abc
3.2-user 根据属主来查找
[root@YL ~]# find -user root
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
3.3 -group 根据数组来查找
[root@YL ~]# find -group ly
./Abc
[root@YL ~]# ll
total 12
-rw-r--r--. 1 root root 70 Jul 2 21:39 4.txt
-rw-r--r--. 1 root root 24 Jul 2 21:43 5.txt
drwxr-xr-x. 2 root ly 6 Jul 4 20:26 Abc
3.4 -uid 跟据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
[root@YL ~]# find -uid 1001
./Abc
3.5 -gid 根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
[root@YL ~]# find -gid 1003
./Abc
3.6 -nouser 查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
[root@YL ~]# find -nouser
./Abc
3.7 -nogroup 查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
[root@YL ~]# find -nogroup
./Abc
3.8 -type 根据文件类型来查找(f,d,c,b,l,p,s)
[root@YL ~]# find -type d
.
./asAsd
./Abc
3.9 -size 根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M
[root@YL ~]# find -size -5k
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
3.10 -mtie 修改时间 ( 多少天访问过)
[root@YL ~]# find -mtime +5
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
3.11 -mmin 修改时间 (多少分钟以内或以前访问过)
[root@YL ~]# find -mmin +15
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
4 组合条件
[root@YL ~]# find -size -10k -type f
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
4.1 -print 显示
[root@YL ~]# find -type f -print
./.bash_logout
./.bash_profile
4.2 -ls 类似ls -l的形式显示每一个文件的详细信息
[root@YL ~]# find -type f -ls
34233363 4 -rw-r--r-- 1 root root 18 May 11 2019 ./.bash_logout
34233364 4 -rw-r--r-- 1 root root 176 May 11 2019 ./.bash_profile
4.3 -deleye 删除查找到的文件
[root@YL ~]# find -nouser
./Abc
[root@YL ~]# find -nouser -delete
[root@YL ~]# ls
4.txt 5.txt anaconda-ks.cfg asAsd
4.4 --fls 查找到的所有文件的长格式信息保存至指定文件中
[root@YL ~]# find -type f -fls 5.txt
4.5 -ok {} \ ; 对查找到的每个文件执行COMMAND,每次操作都需要用户确认
[root@YL ~]# find -type f -ok rm -rf {} \;
< rm ... ./.bash_logout > ? n
< rm ... ./.bash_profile > ? n
< rm ... ./.bashrc > ? n
4.6 -exec {} \ ; 对查找到的每个文件执行COMMAND,操作不需要确认
[root@YL ~]# find -type f -exec mv {} 4.txt \;
4.7 xargs 通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可
[root@YL ~]# find -type f | xargs rm -rf
文件层级系统 | |
---|---|
FHS | 文件层级系统 |
/ | 文件层级系统 |
/boot | 系统启动相关的文件,如内核 |
/dev | 设备文件。不能单独分区 |
/etc | 配置文件 |
/home | 普通用户的家目录,每一个用户的家目录 通常默认为/home/USERNAME。 |
/root | 管理员的家目录。不该单独分区 |
/lib | 库文件 |
/lib/modules | 内核模块文件 |
/media | 挂载点目录,通常用来挂载移动设备 |
/mnt | 挂载点目录,通常用来挂载额外的临时文件 系统,比如另一块硬盘 |
/opt | 可选目录,早期通常用来安装第三方程序 |
/proc | 伪文件系统,内核映射文件(伪文件系统实 际上里面是没有任何内容的 |
/sys | 伪文件系统,跟硬件设备相关的属性映射文件 (伪文件系统实际上里面是没有 |
/tmp | 临时文件/var/tmp |
/var | 可变化的文件,比如log、cache。 存放日志信息、pid文件、lock文件 |
/bin | 可执行文件,用户命令 |
/sbin | 管理命令 |
/usr | shared,read-only,全局共享只读文件。 提供操作系统核心功能,可以单独分区 |
/usr/local | 第三方软件安装路径 |
/etc,/bin,/sbin,/lib | 是系统启动就需要用到的程序, 这些目录不能挂载额外的分区, 必须在根文件系统的分区上 |
/usr/bin,/usr/sbin,/usr/lib | 提供操作系统核心功能,/usr可以单独分区 |
/usr/local/bin, /usr/local/sbin,/usr/local/lib, /usr/local/etc/usr/local/man |
在/usr/local目录下的内容都是第三方软件, 建议单独分区 |
5 重定向与管道
系统设定: | |
---|---|
默认输入设备 | 标准输入,STDIN,0(键盘) |
默认输出设备 | 标准输出,STDOUT,1(显示器) |
标准错误输出 | STDERR,2 显示器) |
5.1 > 覆盖输出
[root@YL ~]# find /sys/ -size +5k > 1.txt
[root@YL ~]# cat 1.txt
/sys/kernel/btf/vmlinux
/sys/devices/pci0000:00/0000:00:10.0/resource3
/sys/devices/pci0000:00/0000:00:10.0/rom
5.2 >> 追加输出
[root@YL ~]# find /sys/ -size +500k >> 1.txt
[root@YL ~]# cat 1.txt
/sys/kernel/btf/vmlinux
/sys/devices/pci0000:00/0000:00:10.0/resource3
/sys/devices/pci0000:00/0000:00:10.0/rom
5.3 2> 重定向错误输出
[root@YL ~]# find afjdaf 2> 1.txt
[root@YL ~]# cat 1.txt
find: ‘afjdaf’: No such file or directory
5.4 2>> 追加重定向错误输出
[root@YL ~]# find afjmsdfh 2>> 3.txt
[root@YL ~]# cat 3.txt
gfds
find: ‘afjmsdfh’: No such file or directory
5.5 &> 覆盖重定向标准输出或错误输出至同一个文件
root@YL ~]# find /opt/ +5k &> 1.txt
[root@YL ~]# cat 1.txt
/opt/
find: ‘+5k’: No such file or directory
5.6 &>> 追加重定向标准输出或错误输出至同一个文件
[root@YL ~]# find /sys/ -size +50k &>> 3.txt
[root@YL ~]# cat 3.txt
gfds
find: ‘afjmsdfh’: No such file or directory
find: ‘dlkgdsjfjd’: No such file or directory
/sys/kernel/btf/vmlinux
/sys/devices/pci0000:00/0000:00:10.0/resource3
/sys/devices/pci0000:00/0000:00:10.0/resource1
5.7 < 输入重定向
[root@YL ~]# cat > 1.txt < 3.txt
[root@YL ~]# cat 1.txt
gfds
find: ‘afjmsdfh’: No such file or directory
find: ‘dlkgdsjfjd’: No such file or directory
/sys/kernel/btf/vmlinux
5.8 << Here Document
[root@YL ~]# cat > 2.txt << ikk
rtr
reth
erth
hretg
hrte
ikk
6 管道 前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程
[root@YL ~]# find -size +5k | rm -rf *
7 tee 从标准输入读取数据,输出一份到屏幕上,一份保存到文件
[root@YL ~]# find /sys/ -size +5k | tee /opt/1.txt
/sys/kernel/btf/vmlinux
/sys/devices/pci0000:00/0000:00:10.0/resource3
/sys/devices/pci0000:00/0000:00:10.0/rom
/sys/devices/pci0000:00/0000:00:10.0/resource1
[root@YL ~]# cat /opt/1.txt
/sys/kernel/btf/vmlinux
/sys/devices/pci0000:00/0000:00:10.0/resource3
/sys/devices/pci0000:00/0000:00:10.0/rom
/sys/devices/pci0000:00/0000:00:10.0/resource1
8 bash字符串处理
8.1bash特性之截取变量的字符串
[root@YL ~]# echo ${LY#*/}
sys/dev/block/
[root@YL ~]# echo ${LY##*/}
block
[root@YL ~]# echo ${LY%/*}
/sys/dev
8.1字符串切片
[root@YL ~]# echo ${LY:2:6}
ys/dev
8.2 取字符串的最右侧几个字符(自右向左取)
[root@YL ~]# echo ${LY: -5}
block
8.3 查找替换
[root@YL ~]# echo ${LY/sys/opt}
/opt/dev/block
[root@YL ~]# echo ${LY//sys/opt}
/opt/dev/block
[root@YL ~]# echo ${LY/#sys/abc}
/sys/dev/block
[root@YL ~]# echo ${LY/%sys/abc}
/sys/dev/block
8.4 查找并删除
[root@YL ~]# echo ${LY/sys}
//dev/block
[root@YL ~]# echo ${LY//dev}
/sys//block
[root@YL ~]# echo ${LY/%block}
/sys/dev/
[root@YL ~]# echo ${LY/#sys}
/sys/dev/block
8.5 字符大小写转换
[root@YL ~]# echo ${LY,,}
/sys/dev/block
[root@YL ~]# echo ${LY^^}
/SYS/DEV/BLOCK