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
将history命令执行的结果保存到history.log文件中
[root@gxzs-solr1 ~]# history > history.log (history.log 文件 会自动生成)
[root@gxzs-solr1 ~]# cat history.log
执行命令 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
执行命令 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等。其中“红框内的信息”是必须得有的。
重启网络服务:service network restart或/etc/init.d/network restart
修改网关
在终端中输入: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"
评论