2021.7.8linux入门 上篇回顾及几个新命令

2021/7/9 7:08:41

本文主要是介绍2021.7.8linux入门 上篇回顾及几个新命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

上篇回顾:
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上已有的文件下载到上,将windows的文件上传到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 命令也出现了



这篇关于2021.7.8linux入门 上篇回顾及几个新命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程