上篇回顾:
1.bash shell (什么是bash shell)
2.bash提示符
3.bash 语法结构
4.bash 特性
命令补全;
路径补全; (确定路径是否输入错误;)
选项补全: 需要安装软件包 yum install bash-completion bash-completion-extras -y
(初学暂不建议安装)
5.历史记录 histry
例:需求:希望用户执行rm时,提示rm命令找不到
拒绝使用某个命令
alias rm='echo "rm command not found"' 由于alias别名下有rm命令,将此别名输出效果修改 6.别名 alias
文件管理:创建、删除、移动、复制、查看、编辑(vim)、过滤(筛选)
需要创建的文件他所在的路径,他为什么要创建在这个目录下
windows:多根 多个定点 linux 单根 所有东西都在 / 下面可以找到
路径概念:
什么是路径:目录+文件名称=路径《--对文件定位方式
如何访问路径 /usr/local
相对路径:相对于当前而言 /usr cd local/ 相对路径的表现形式之一 . 当前目录 cd ./local .. 当前目录的上一级目录; cd ../etc 绝对路径:一切从/开始的都是绝对路径 cd/usr/local
文件相关的一些管理类的命令:
创建:touch 创建文件
-p 递归创建
-v 显示过程
mkdir 创建目录 例:[root@oldxu ~]# mkdir /etc/{hosts,hosts_back} # 创建两个目录 /etc/hosts /etc/hosts_back
复制 cp
-r 复制目录
-p 保持文件属性
例:复制两个源文件, /etc/hosts /etc/hosts_back 没有写目标,所以最后一个源被当成目标文件;
[root@node ~]# cp /etc/{hosts,hosts_back}
移动 mv +源文件
删除 rm
-f 强制删除
-r 递归删除,删除目录,先删除目录中的文件,然后再干掉目录;(谨慎使用)
查看:head 头部:查看文件头部,默认10行
-number(可直接用数字代替)
head3 /etc/passwd 看前3行 tail 查看文件尾部,默认10行 -n 指定多少行 -f 动态追踪文件尾部变化(日志) 例:tail -f /var/log/secure 尝试在开启一个会话,查看是否监控正常
head 和tail组合使用:
例:[root@node ~]# ip a | head -3 | tail -1
#inet 127.0.0.1/8 scope host lo
| 管道:将左边的命令执行后的结果,传递给右边的输入
下载:
1.将互联网文件下载到linux服务器
用互联网下载wget(由于最小化安装的操作系统,没有wget命令,需要先运行 yum install wget -y,安装上)
将互联网的文件下载到Linux服务器;
选项
-O 可以指定路径+文件保持的名称
例:wget -O /opt/nginx-1.21.1.tar.gz https://nginx.org/download/nginx-1.21.1.tar.gz
2.将Linux上已有的文件下载到
rz 直接输入命令,选择win的文件,即可完成上传
(不支持断点续传)
(仅支持上传文件,可以选择将文件夹打成.zip包,在上传即可)
(不支持上传单个文件超过4G以上的)
sz /PATH路径 下载到windows
查找:which +命令
不是查找文件;而是查找命令的
获取一个命令的绝对路径,因为有些命令都带了别名,而当我们通过相对路径执行命令时,就会先执行别名
which mkdir
/usr/bin/mkdir
whereis 这个命令可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广
[root@node ~]# whereis mkdir mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz 可以看到,whereis不仅找到了 ls 可执行文件的位置,还找到了其 man 帮助文件,可见其搜索范围比较广,不局限于PATH [root@node ~]# whereis -b mkdir mkdir: /usr/bin/mkdir
查找失败:
1.根本不存在这个命令;
2.没有安装这个命令
[root@node ~]# which xxxxxx
/usr/bin/which: no xxxxxx in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
扩展
问题:为什么执行相对路径的命令,可以成功,而实际命令存储在某个目录下面,它们是如何关联起来的???? 1.它们通过一个叫环境变量的 关联起来;
[root@node ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 当执行ls命令时,他会读取 $PATH 存储的路径,通过这个路径去获取该命令是否存在,存在就执行;
/usr/local/redis/bin redis-server bash redis-cli
两种方式:
1.修改Path路径,但可能会带来不同版本执行顺序; [ 高版本 ---》 低版本 ] 只会运行低版本
2.将命令直接拷贝到 $PATH 查找命令的路径中;
过滤(行):1. grep "过滤关键字"+文件路径 取出只有关键字的
-v 取反,过滤掉关键字的所有数据 -E 支持多条件匹配 在grep中 | 代表 或 -i 忽略大小写(在linux中严格区分大小写) 在grep中. 代表任意单个字符 \. 去掉点,让. 回归到他原有作用 -o 提取关键字
在grep下特殊字符含义
^以什么开头 如^m 以m开头
$以什么结尾 如bash$ bash结尾 ^$ 空 . 任意单个字符 * 重复前面0次或多次 .* 所有
过滤包含xiaohong的行:
[root@node ~]# grep "xiaohong" students.txt
2.过滤不包含xiaohong的行;
[root@node ~]# grep -v "xiaohong" students.txt
3.同时查看xiaoma和xiaojun的信息:
[root@node ~]# grep -E "xiaojun|xiaoma" students.txt
取(列) awk
-F 指定分隔符(拆分成多列)
提取其中的某列 '{print $n}'
排序:sort
-k 指定列 默认一空格为分隔符
-n 以数字方式排序
-r 反转(从大到小)
-t 指定分隔符
问1.文件中数据不规则
例:小王 90 小红 89 小明 100 小xx 50
sort -k 2 -n -r students.txt
例
#号开头的都是注释(解释)
[root@node ~]# yum install vsftpd 最小化安装的系统,先要装此命令包 [root@node ~]# grep -Ev "^#|^$" /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
去重 uniq
选项
-c count 统计出现的次数
统计:wc-l 统计文件内容中有多少行
明确知道/etc/passwd 有多少行为/sbin/nologin
grep "/sbin/nologin$" /etc/pawsswd |wc -l
注意:只要是统计,先排序,再去重,最后统计
例: 需求:有一个日志文件,统计每个IP出现的次数,然后将top3 打印出来;
1.先排序; 2.去重,统计; 3.取前3; [root@node ~]# sort 1.log | uniq -c | sort -nr | head -3 153 161.35.86.181 60 180.97.165.74 42 101.72.213.150
替换 sed 's#旧#新#g'文件名称
-i 替换并保存
匹配---->> 打印到屏幕sed -r 's#()()()#\1\2\3#'
最小化安装的centos 7 没有ifconfig 命令,需要先执行
yum install ifconfig
但显示出信息是
No package ifconfig available.
Error: Nothing to do
此刻需要执行 yum serch ifconfig
serch 可以搜寻某个软件名称或是描述description的重要关键字。此命令可茶盏显示除相关的软件有哪些
查看最后一行 Matched: ifconfig 此处是分割行,查看:前面的数据
结合上面的信息,即 通过运行 yum search ifconfig 提示我们: 安装ifconfig 包 只需要安装 net-tools.x86_64 即可。
所以,执行 yum install net-tools.x86_64
安装后,ifconfig 命令可以正常执行。
并且,查看which ifconfi命令,此时 ifconfig 命令也出现了