Linux 常见的命令2

rm命令详解

删除/root/yyTest/目录下的文件yyTest.ini (系统会询问是否删除)

rm /root/yyTest/yyTest.ini 

强行删除/root/yyTest/目录下的文件yyTest.ini(直接删除,系统不会提示)

rm -f /root/yyTest/yyTest.ini

删除/root/yyTest/目录下的所有.log文件

rm -f /root/yyTest/*.log

删除/root/yyTest/目录下的 polo/文件夹

rm -r /root/yyTest/polo/

强行删除/root/yyTest/目录下的 polo/文件夹

rm -rf /root/yyTest/polo/

删除/root/yyTest/目录下的所有内容

rm -rf /root/yyTest/*

创建文件命令详解

touch

创建一个文件

touch yyTest.ini  

同时创建两个文件

touch test1.txt test2.txt

批量创建文件(如创建2000个文件)

touch test{0001..2000}.txt

更改文件 yyTest.ini时间为当前时间(yyTest.ini已存在)

touch yyTest.ini  

使用>、>>

>直接覆盖原文件,不会有任何提示

>>追加在原文件末尾,不会覆盖原文件的内容

直接用>创建空文件

> test.ini

注:清除文件·:> test.ini

  1. 将history命令执行的结果保存到history.log文件中

[root@gxzs-solr1 ~]# history > history.log      (history.log 文件 会自动生成)
[root@gxzs-solr1 ~]# cat history.log 
  1. 执行命令 curl ‘xxx’ ,将其返回结果保存到 log.log 中

[root@gx-solr1 ~]# curl 'http://192.168.0.110:8983/solr/scan_detail/admin/file?_=1544066402749&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json' > log.log
  1. 执行命令 cat /etc/hosts , 将其返回结果保存到 hosts.log 中

[root@slave1 ~]# cat /etc/hosts > hosts.log
[root@slave1 ~]# more hosts.log 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

注意:
使用 > ,执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)。
4. 使用 >> 向 hosts.log中追加 当前日期

[root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log

[root@slave1 ~]# ls -l hosts.log 
-rw-r--r--. 1 root root 11 Dec 13 16:04 hosts.log # 查看hosts.log 的日期
[root@slave1 ~]# cat hosts.log                    # 查看hosts.log 文件的内容
 I am OK! 
[root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log  # 向hosts.log中追加 当前日期
[root@slave1 ~]# cat hosts.log                    # 再次查看hosts.log 文件的内容
 I am OK! 
当前日期是 Thu Dec 13 16:05:18 CST 2018         
[root@slave1 ~]# ls -l hosts.log                  # 再次查看hosts.log 的日期
-rw-r--r--. 1 root root 56 Dec 13 16:05 hosts.log
[root@slave1 ~]# 

ls 创建文件(将结果写入文件)

ls > test.ini
ls >> test.ini

grep 创建文件(将结果写入文件)

ps -ef | grep java >test.ini
ps -ef | grep java >>test.ini

echo 创建文件(将结果写入文件)

echo $PATH > test.ini
echo $PATH >> test.ini

使用cp创建文件

只要目标文件是新文件则算创建文件

使用cat创建文件

简单使用>、>>

cat > test.ini
cat >> test.ini

其实用的也是 > 和 >> ,但是有一点不一样的是,敲完上述命令会进入 test.ini 的编辑模式,可以直接输入你想要写入的内容,最后按ctrl+z退出编辑模式自动保存

head命令详解

显示文件的前5行(两种方式)

head -n 5 test.txt
head -5 test.txt

显示文件的前100个字符

head -c 100 test.txt

显示文件的第10-20行

head -20 test.txt | tail -10

cat命令详解

获取test.txt文件所有内容

cat test.txt

无论是否为空行,都显示行号

cat -n test.txt

显示行号,除了空行

cat -b test.txt

连续读取两个文件,按顺序输出

cat test1.txt test2.txt

倒序输出

其实就是cat倒过来写即可

tac test.txt

nl命令详解

nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

显示行号,除了空行

默认就是这个

nl test.txt
nl -b t test.txt

无论是否为空行,都显示行号

nl -b a test.txt

行号靠最左显示

nl -n ln test.txt

行号靠最右显示

nl -n rn test.txt

行号靠最右显示,不足位数左边补0

nl -n rz test.txt

more命令详解

more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

每次显示5行

more -5 test.txt

从第5行开始显示

more +5 test.txt

每次翻页时,先清空屏幕内容

more -5 -p test.txt

若遇到连续两行以上的空白行,合并为一行空白行

more -s test.txt

执行more命令后,常用的操作

向下滚动一屏

z
空格键
ctrl+f

输出文件名和当前行的行号

:f

less命令详解

查看文件

less test.txt

ps查看进程并通过less分页显示

ps -ef | less

显示当前行数的百分比

less -m test.txt

显示当前行数/总行数和百分比

less -M test.txt

显示连续空行为一行

less -s test.txt

进入less模式之后的操作

g:移动到第一行 G:移动到最后一行 u:向前移动半屏 d:向后移动半屏 f:向后移动指定行数或一屏

b:向前移动指定行数或一屏 j:向下移动一行 k:向上移动一行 q:结束less模式

众所周知linux中命令cat、more、less均可用来查看文件内容,主要区别有:
cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;
more和less一般用于显示文件内容超过一屏的内容,并且提供翻页的功能。more比cat强大,提供分页显示的功能,less比more更强大,提供翻页,跳转,查找等命令。

tail命令格式

Linux tail命令 格式如下所示
tail [OPTION]... [FILE]...
Linux tail命令 参数如下所示

  • -f 循环读取

  • -q 不显示处理信息

  • -v 显示详细的处理信息

  • -c<数目> 显示的字节数

  • -n<行数> 显示行数

  • –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.

  • -q, --quiet, --silent 从不输出给出文件名的首部

  • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

使用示例

显示文件尾部内容(默认后 10 行)

tail fileName.log

实时追加文件中最新产生的数据

tail -f fileName.log

显示文件内容,从第 N 行至文件末尾

# 显示文件内容,从第 21 行至文件末尾
tail -n +21 fileName.log

显示文件内容,文件最后 N 行内容

# 显示文件内容,文件最后 21 行内容
tail -f -n 21 fileName.log
或者
tail -21f  fileName.log

在进程ID,PID死掉之后结束

PID等于 14325 死掉之后结束输出打印
tail -f --pid=14325 nohup.out

注意
在这里,我们需要强调一点,在我们是用tail -n +N 文件 命令时,可能我们会联想到,如果数值我使用-N又是什么效果呢?

tail -n -21 fileName.log
tail -n 21 fileName.log

显示的结果相同,均是文件末尾最后 21 行内容。

find命令基础使用

find命令相对于locate这种非实时查找的搜索命令,大大增加了我们搜索的便捷度以及准确性;并且能够方便的帮助我们对大文件、特定类型的文件查找与删除,特别是有超多小碎文件的时候,更是方便至极…

根据属主 属组查找

   -user username:查找属主是xx的文件
   -group group:查找属组的xx文件
   -uid useruid:查找uid号的文件
   -gid groupid:查找gid号的文件
   -nouser:查找没有属主的文件,即文件存在但是 user已被删除
   -nogroup:查找没有属组的文件

根据文件类型查找

   -type f:普通文件
   -type d:目录文件
   -type l:符号链接文件
   -type s:套接字文件
   -type b:块设备文件
   -type c:字符设备文件
   -type p:管道文件

根据大小查找

    -size +10M :大于10m的文件
    -size +10k:大于10k的文件
    -size +1G:大于1G的文件
    -size -1G:小于文件的文件

根据时间查找

    一天为单位
        -atime :访问时间
        -mtime :修改时间
        -ctime :改变时间
   以分钟为单位:
        -amin: 访问时间        -mmin:修改时间        -cmin:改变时间

根据权限查找

    -perm +mode:
    -perm +600:属主属组其他权限 只要有一个匹配就当成功;600代表三个对象,6属主 CentOS7上 使用 /600
    -perm -600:每个对象都必须同时拥有其指定的权限,三个对象同时成立 如:-003表示其他用户必须有写与执行权限

组合条件查找

   -a  :与
   -o  :或
   -not:非
   !  :非
find -size +10M -a -type f
find -size -1M -o -mtime 0
find /usr -not -type f
查找不是文件类型的

处理动作

    -print:打印到屏幕
    -ls:查找到的文件 进行 ls
    -delete:删除查找到的文件
    -ok command {}\; 对查找的文件执行由command指定的命令,交互式
    -exec command {}\;同上,非交互式
    {}:代表前面find找到的 文件名称本身
    例如:
    find ./ -type f -exec cp {} {}.bak \; 将查找到的文件都复制出一个.bak文件

find查找后的动作传递模式

默认:查找到指定类型的文件时进行一次性传递

xargs:xargs命令即让find查找的传递模式为 查找一个传递一个到动作上,删除较多碎文件很好用,例如:find -type f | xargs command;

查找/home/test目录下的符号*.txt的文件
find /home/test -name "*.txt" -print
查找权限是755的
find /home/test -perm 755 -print
查找属主是test的
find /home/test -user test -print
查找数组是test的
find /home/test -group test -print
查找更改时间小于5天的
find /home/test -mtime -5 -print
查找更改时间大于3天的
find /home/test -mtime +3 -print
查找更改时间24小时以内的
find /home/test -mtime 0 -print
查找所有目录
find /home/test -type d -print
查找除了目录的所有文件
find /home/test ! -type d -print
查找文件
find /home/test -type f -print
查找符号链接文件
find /home/test -type l -pint
不包括/home/test/test/目录下的test.sh
find /home/test -name "test.sh" -prune /home/test/test -print
删除test.sh文件
find /home/test -name "test.sh" -type f -exec rm {} \;
显示以test开头的文件
find /home/test -name "*test*" -type f -exec more {} \;

wc 命令

统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。
wc同时也给出所指定文件的总统计数。

-c  统计字节数
-l  统计行数
-m  统计字符数。这个参数不能与 -c 参数一起使用。
-w  统计字数。一个字被定义为空白、跳格或换行字符分隔的字符串。
-L  打印最长行的长度

查看文件的行数、单词数、字节数

[root@iZ2zebqeq8f5murg3r515qZ ~]# wc install.sh 
  744  2607 25166 install.sh
行数 单词数 字节数  文件名

用wc命令怎么做到只打印统计数字不打印文件名

[root@iZ2zebqeq8f5murg3r515qZ ~]# wc -l install.sh 
744 install.sh
[root@iZ2zebqeq8f5murg3r515qZ ~]# cat install.sh | wc -l 
744

用来统计当前目录下的文件数

[root@iZ2zebqeq8f5murg3r515qZ ~]# ls -l | wc -l
4

注意: 数量中包含当前目录。

[root@iZ2zebqeq8f5murg3r515qZ ~]# ls -l 
total 28
drwxr-xr-x 3 root root    22 Dec 25  2021 auto
drwxr-xr-x 3 root root    25 Jun 18 10:42 data
-rw-r--r-- 1 root root 25166 Jan 29  2022 install.sh

sort 命令

sort 是 Linux 的排序命令,而且可以依据不同的数据类型来进行排序。sort 将文件的每一行作为一个单位,相互比较。比较原则是从首字符向后,依次按 ASCII 码值进行比较,最后将它们按升序输出。
sort 命令格式如下:
sort [选项] 文件名

选项:
-f:忽略大小写;
-b:忽略每行前面的空白部分;
-n:以数值型进行排序,默认使用字符串排序;
-r:反向排序;
-u:删除重复行。就是 uniq 命令;
-t:指定分隔符,默认分隔符是制表符;
-k [n,m]:按照指定的字段范围排序。从第 n 个字段开始,到第 m 个字(默认到行尾);

Grep 命令

用于查找内容包含指定的范本样式的文件
若不指定任何文件名称,或是所给予的文件名为“-”,则grep 会从标准文件设备读取数据。
语法:grep 要过滤的字符 要过滤的文件

-c 只输出匹配行的计数
-h 查询多文件时不显示文件名
-n 显示匹配行以及行号
-v 显示不包含匹配文本的所有行
-i 不区分大小写
-l 查询多文件时只输出包含匹配字符的文件名

grep -c E test 对test 文件包含E关键字的行数的查找
grep -n F test 查找test文件中F关键字的匹配行及行号
grep -i f test 不区分大小写查找关键字信息
grep -l F test 只列出符合匹配文件名,而不列出具体行数

grep -r aa*  递归查找 在文件夹与文件中查找

网络通信命令

ifconfig命令:显示或设置网络设备

add<地址>:设置网络设备IPv6的IP地址
del<地址>:删除网络设备IPv6的IP地址
down:关闭指定的网络设备
up:启动指定的网络设备
IP:指定网络设备的IP地址

用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在了,要想将配置信息永远的保存在电脑里,就需要修改网卡的配置文件。

显示网络设备信息

[root@localhost ~]# ifconfig

启动关闭指定网卡

[root@localhost ~]# ifconfig enp0s3 down
[root@localhost ~]# ifconfig enp0s3 up

网卡介绍

eno1:板载网卡
ens33:PCI-E网卡
enp0s3:无法获取物理信息的PCL-E网卡
eth0:以上都不匹配时使用

ping命令:测试主机间网络连通性

-d:使用Socket的SO_DEBUG功能
-c:指定发送报文的次数
-i:指定发送信息的间隔时间
-I:使用指定的网络接口送出数据包
-l:设置在送出要求信息之前,先行发出的数据包
-n:只输出数值
-p:设置填满数据包的范本样式
-q:不显示指令执行过程
-R:记录路由过程
-s:设置数据包的大小
-t:设置存活数值TTL的大小
-v:详细显示指令的执行过程

Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令;而Linux下不会自动终止,此时需要我们按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。

[root@iZ2zebqeq8f5murg3r515qZ ~]# ping -c 6 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=50 time=15.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=6 ttl=50 time=15.2 ms

--- www.a.shifen.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5004ms
rtt min/avg/max/mdev = 15.163/15.196/15.240/0.075 ms

tcpdump命令:监视网络接口的数据包

tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。
tcpdump命令工作时先要把网卡的工作模式切换到混杂模式。所以tcpdump命令需要以root身份运行。tcpdump命令是linux下使用最广泛的网络协议分析工具。使用tcpdump命令时,必须精通TCP/IP协议工作原理。

监听eth1网络接口的数据包,默认监听eth0

[root@linuxcool ~]# tcpdump -i eth1

监视指定主机的数据包

[root@linuxcool ~]# tcpdump host 192.168.6.0

截取任意网卡上访问192.168.5.10的数据包,以ip形式显示(-n),不解析域名。

[root@linuxcool ~]# tcpdump -i any -n host 192.168.5.10

截获主机192.168.10.10 和主机192.168.10.20 或192.168.10.30的通信

[root@linuxcool ~]# tcpdump host 192.168.10.10 and \ (192.168.10.20 or 192.168.10.30 \)

截取任意网卡上访问80端口的数据包,以ip形式显示(-n),不解析域名。

[root@linuxcool ~]# tcpdump -i any port 80 -A

截取任意网卡上访问192.168.5.10,端口为80的数据包

[root@linuxcool ~]# tcpdump -i any -n host 192.168.5.10 and port 80

将捕获的数据包保存

[root@linuxcool ~]# tcpdump -i any -n host 192.168.5.10 and port 80 -w /tmp/filename

修改静态ip地址

即时生效:

ifconfig eth0 192.168.1.155 netmask 255.255.255.0

重启生效

修改/etc/sysconfig/network-scripts/ifcfg-eth0

在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0

开始编辑,填写ip地址、子网掩码、网关、DNS等。其中“红框内的信息”是必须得有的。
image-1660461584148
重启网络服务:service network restart或/etc/init.d/network restart
image-1660461613846

修改网关

在终端中输入:vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=Linux enterprise
GATEWAY=192.168.1.1

主机名相关

你查看主机名

hostname

修改主机名

提示符下输入 vi /etc/sysconfig/network
然后把HOSTNAME后面的值更改为想要设置的主机名。

防火墙相关

  • service iptables stop 关闭防火墙

  • service iptables start 启动防火墙

  • service iptables status 查看防火墙状态

  • service iptables restart 重启防火墙

  • chkconfig iptables off 关闭防火墙开启启动

  • chkconfig iptables --list 查看防火墙是否完全关闭开机启动

netstat命令详解

列出所有端口(包含TCP和UDP)

netstat -a

找出程序运行的端口

[root@iZ2zebqeq8f5murg3r515qZ ~]# netstat -tunlp | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      86427/sshd  

查看端口号占用者

windows :netstat -aon|findstr "80"
Linux: netstat -anp |grep "80"