linux命令(3)

目录


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
posted @ 2022-07-04 23:39  Tqing  阅读(90)  评论(0编辑  收藏  举报