Linux最常用命令总结

本文大纲截图:

目录

一、远程连接

1、Windows下通过xshell与xftp远程操作Linux系统

2、Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell ,Teamviewer等。

二、系统运行

1、系统资源

1.1 系统信息相关

1.2 时间和日期

1.3 磁盘和目录空间

1.4 进行信息

1.5 系统性能管理

2、系统网络

2.1 ifconfig

2.2 ping

2.3 netstat

2.4 wget

2.5 其他

3、系统用户

3.1 用户权限

3.2 用户组管理

3.3 用户管理

4、目录&文件

4.1 系统目录结构

4.2 目录操作

4.3 文件操作

4.4 vim编辑器

4.5 打包/解包

4.6 压缩/解压缩

5、其他

5.1 快捷按键

5.2 shell脚本简介

5.3 管道

5.4 重定向

5.5 软硬链接

三、系统关机

1、重启

2、关机

3、注销

4、举例


一、远程连接

1、Windows下通过xshell与xftp远程操作Linux系统

xshell 是一个客户端软件, 我们在本地Windows上用它来连接Linux系统(服务器), 并通过它提供的命令行界面操作Linux;

xftp是一款文件传输软件, 可以将本地Windows上的文件传输到服务器Linux系统上

2、Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell ,Teamviewer等。

PuTTY下载安装:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

XShell下载安装:https://www.xshellcn.com/

Teamviewer下载安装:https://www.teamviewer.com/en/

二、系统运行

1、系统资源

1.1 系统信息相关

  • hostname: 查看主机名

  • who: 查询登录到系统的用户

  • whoami: 确认自己身份

  • pwd:显示当前用户所在工作目录位置

  • history: 查看当前用户运行命令的历史
    • -c 清空历史命令;

    • -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history;

    • 提示:默认保存1000/etc/profile HISSIZE=10000

  • clear:清屏

  • su:切换用户命令
    • 如切换到root用户:su root

  • passwd:设置用户密码

  • chkconfig --list:查看系统服务列表

  • service 服务名status/start/stop/restart:查看服务状态、启动、停止或重启服务

  • man -h:帮助

  • command --help:显示 command 命令的帮助信息

  • vmstat:查看虚拟内存

  • fdisk -l:查看硬盘及分区情况

  • uname -m:查看系统是几位操作系统

  • uname -a:查看详细的系统内核版本和系统的操作系统,包括内核名称、主机名、内核版本、处理器架构等

  • uname -r:显示正在使用的内核版本

  • cat /proc/meminfo:校验内存使用

  • cat /proc/cpuinfo:显示 CPU info 的信息

  • cat /proc/swaps:显示哪些 swap 被使用

  • cat /proc/interrupts:显示中断

  • cat /proc/version:显示内核的版本

  • cat /proc/net/dev:显示网络适配器及统计

  • cat /proc/mounts:显示已加载的文件系统

1.2 时间和日期

data:查看和设置系统时间【设置日期和时间格式:data 月日时分年.秒

cal:查看日历,-y:可以查看一年的日历

  • 举例:
    • cal 2022,查看2022年一年的日历

    • date 022722372022.00,设置系统时间为2022年02月27日 22:37分00秒

1.3 磁盘和目录空间

df:disk free 显示磁盘剩余空间

du:disk usage 显示目录下的文件大小

参数:-h,以人性化的方式显示文件大小

  • 举例:
    • df -h,显示磁盘剩余空间

    • du -h [目录名],显示目录下的文件大小

1.4 进行信息

缩写说明: UID:用户ID;PID: 进程ID;PPID: 父进程;C: 进程cpu占用率;Stime: 进程从启动到现在的时间;TTY: 终端号;CMD: 命令名称和参数

ps:process status 查看进程(动态)

  • 举例:
    • ps -ef-ef,显示所有运行进程, 并显示启动进程的命令

    • ps auxa:显示终端上的所有进程,包括其他用户的进程;u:显示进程的详细状态;x:显示没有控制终端的进程

top:动态显示运行中的进程并且排序;退出 top 可以直接输入 q

kill:终止指定代号的进程,-9表示强制终止【提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能会导致系统崩溃。】

  • 举例:

  • 通过进程名找到进程, 再杀死进程:
    • 1)通过命令|查找tomcat进程

    • ps –ef | grep tomcat

    • 说明:ps –ef 是查找所有运行的进程, 通过管道符找到所有进程中包含了”tomcat”字符串的进程, 即为tomcat进程,如:tomcat进程id为:5541

    • 2)杀死此进程

    • 格式:kill -9 进程id,即:kill -9 5541

  • 通过命令查找到占用此端口的进程编号:
    • 1)netstat –apn|grep 8080,根据8080查进程,假如为: 5541

    • 2)杀死进程: kill -9 pid (kill -9 5541)

1.5 系统性能管理

1)内存瓶颈:

  • free:查看内存使用

  • vmstat 3 100:查看swap in/out详细,定位是否存在性能瓶颈,其中 3 为间隔时间,100 为监控次数

  • sar -r 3:类似free,查看内存使用情况,但不包含swap的情况

2)磁盘瓶颈:

  • df -hl:查看磁盘剩余空间

  • du -sh:查看磁盘使用了多少空间

  • iostat -x:看系统各个磁盘的读写性能,重点关注await和iowait的CPU占比

  • iostat -x -k -d 1:详细列出磁盘的读写情况。当看到I/O等待时间所占CPU时间的比重很高时,首先要检查机器是否正在大量使用交换空间,同时关注iowait占比CPU的消耗是否很大,如果大说明磁盘存在大的瓶颈,同时关注await,表示磁盘的响应时间,以便于小于5ms。

  • iotop:查看哪个进程在大量读取IO。一般先通过iostat查看是否存在io瓶颈,再定位哪个进程在大量读取IO。

3)CPU瓶颈:

  • top:查看CPU总体消耗,包括分项消耗,如:user,system,idle,nice等消耗

  • top -H:按照CPU消耗高低进行排序 应用场景:top,然后shift+h:显示java线程;然后shift+M:按照内存使用进行排序;shift+P:按照CPU时间排序;shift+T:按照CPU累计使用时间排序。多核CPU,按"1"进入top视图

  • ps -Lp 进程号 cu:查看某个进程的CPU消耗排序

  • sar -u 3:查看CPU总体消耗占比,3 为间隔时间

4)网络瓶颈:

  • cat /var/log/messages:查看内核日志,查看是否丢包

  • cat /proc/net/snmp:查看和分析240秒内网络包量、流量、错包、丢包。用于计算重传率 tcpetr=RetransSegs/OutSegs

  • dmesg:查看系统内核日志

  • watch more /proc/net/dev:用于定位丢包、错包情况,以便看网络瓶颈。重点关注drop(包被丢弃)和网络包传送的总量,不要超过网络上限

  • sar -n SOCK:查看网络流量

  • netstat -na|grep ESTABLISHED|wc -l:查看tcp连接成功状态的数量。此命名特别消耗CPU,不适合进行长时间监控数据收集

  • netstat -na|awk'{print $6}'|sort|uniq -c |sort -nr:查看tcp各个状态数量

  • ss state ESTABLISHED| wc -l:更高效地统计tcp连接状态为ESTABLISHED的数量

  • dig 域名:查看域名解析地址

  • traceroute ip:查看路由经过的地址。常用于定位网络在各个路由区段的耗时

  • netstat -i:查看网络错误

  • ping ip:测试网络性能

5)应用瓶颈:

  • ps -ef | grep java:查看某个进程的id号

  • ps -efL | grep [PID] | wc -l:查看某个进程创建的线程数

  • ps -ef | grep httpd | wc -l:查看特定进程的数量

  • jstack -l pid:查看线程是否存在死锁

  • cat * .log | grep * Exception | wc -l:统计日志文件中包含特定异常数量

  • find / -type f -name "*.log" | xargs grep "ERROR":统计所有的log文件中,包含Error字符的行。这个在排查过程中比较有用。

  • grep -v 'HTTP/1.1''200':取出非200响应码的URL

2、系统网络

网卡是一个专门负责网络通讯的硬件设备。

IP地址是设置在网卡上的地址信息。 可以把 电脑 比作 电话,网卡相当于SIM卡,IP地址相当于电话号码。

防火墙:所谓”防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法, 它实际上是一种隔离技术,保护内部网免受非法用户的侵入,它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统, 依照特定的规则, 允许或是限制传输的数据通过。使用场景:线上环境的防火墙设置;运维/开发管理维护;测试环境的防火墙设置;若内网测试, 务须设置, 直接关闭。

即时生效, 重启后失效:

  • 开启: service iptables start

  • 关闭: service iptables stop

即时生效,重启后不失效:

  • 开启:chkconfig iptables on

  • 关闭:chkconfig iptables off

2.1 ifconfig

ifconfig:查看网卡配置信息(已启用的网络接口信息)

ifconfig | grep inet:查看网卡对应的 IP 地址

2.2 ping

pingWindows、UnixLinux系统下的一个命令。Ping也属于一个通信协议, 是TCP/IP协议的一部分。利用 ”ping” 命令可以检查网络是否连通

ping:查看网络是否连接通畅

ping ip地址:检测到目标主机是否连接正常

ping 127.0.0.1:检测本地网卡工作是否正常

2.3 netstat

netstat:查看网络状态(net status的简写),显示网络连接、路由表和网络接口信息

netstat –apn:查看所有端口【an:按一定顺序排列输出;p:表示显示哪个进程在调用】

2.4 wget

wget是一个下载文件的工具,它用在命令行下

安装wgetyum install -y wget

wget:从网路上自动下载文件

wget --help:查看帮助手册

wget -O:下载并以不同的文件名保存(-O:来指定一个文件名)

  • 例如:<a href="http://www.minjieren.com/wordpress-3.1-zh_CN.zip" rel="noopener">http://www.minjieren.com/wordpress-3.1-zh_CN.zip</a>

tail -f wget-log:查看下载进度

wget -spider: 模拟下载,不会下载,只是会检查是否网站是否好着

  • 例如:wget --spider www.baidu.com # 不下载任何文件

wget -c:断点续传;使用wget -c重新启动下载中断的文件:对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件

  • 例如:wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

wget –tries:增加重试次数;如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。

  • 例如:wget –tries=40 URL

wget -i:下载多个文件

  • 1)首先,保存一份下载链接文件cat > filelist.txt

  • 2)接着使用这个文件和参数-i下载:wget -i filelist.txt

wget –mirror:镜像网站

wget –reject:过滤指定格式下载

  • 例如:wget –reject=gif url,想下载一个网站,但你不希望下载图片

wget -o:把下载信息存入日志文件;不希望下载信息直接显示在终端而是在一个日志文件

  • 例如:wget -o download.log URL

2.5 其他

tcpdump:监视指定数据包

tcpdump -i eth1:监视指定网络接口的数据包;如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。

tcpdump host 210.27.48.1:监视指定主机的数据包;截获所有210.27.48.1 的主机收到的和发出的所有的数据包

telnet:远程登录

ssh:安全模式下远程登陆

ftp:文件传输

3、系统用户

在Linux系统中主要分为两类用户:超级用户root标准用户

超级用户root:Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限。在大多数版本的Linux中,都不推荐 直接使用root账号登录系统。

标准用户:在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”(只能在自己家目录下活动的用户,而不能修改系统设置相关的文件)。

sudo:当标准用户想要执行一些系统维护和管理相关的内容时,就可以在这个命令前加上 sudo,切换到 root 身份,来执行系统维护和管理的命令。如:添加用户,则只需要在 添加用户命令前 加上 sudo,这样就可以以 root 身份来执行添加用户的动作了。用户使用 sudo 时,必须先输入密码,之后有5分钟的有效期,超过期限必须重新输入密码。若其未经授权的用户企图使用 sudo,则会发出警告邮件给管理员。

su:是 substitute user 的缩写,表示使用另一个用户的身份。sudo 命令用来以其他身份来执行命令,预设的身份为 root

  • 例如:
    • 切换身份后添加新用户lisi:su root,切换到root用户;useradd lisi,root身份下添加新用户lisi

    • 不切换身份添加新用户zhangsan:sudo useradd zhangsan,标准用户下添加新用户zhangsan

3.1 用户权限

Linux系统是一种典型的多用户系统, 为了保护系统的安全性, Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定;不同的用户处于不同的地位, 也拥有不同的权限;在实际应用中,可以预先针对 用户组 设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。

在Linux中我们可以使用ll或ls –l命令来显示一个文件的属性以及文件所属的用户和组:

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

修改文件/目录的权限:

chown:修改文件/目录的拥有者

  • 格式:chown 用户名 文件名/目录名

chgrp:修改文件/目录的组

  • 格式:chgrp -R 组名 文件名/目录名,-R为递归修改修改文件/目录的组

chmod:修改 用户/组文件/目录 的权限

  • 格式一:加上权限:chmod +rwx 文件名/目录名减去权限:chmod -rwx 文件名/目录名

    • 举例:
      • chmod -rw 01.py,减去 文件拥有者的 读 和 写 的权限

      • chmod +r 01.py,加上 文件拥有者的 读 的权限

      • ls -l

      • cat 01.py # 查看01.py的内容

      • gedit 01.py # 使用gedit命令编辑 01.py 文件

  • 格式二:chmod [-R] 权限数字 文件或目录-R为递归修改文件权限

    • 举例:chmod –R 754 fanmao07chmod –R 777 fanmao07

    • 扩展:chmod在设置权限时,可以简单地使用三个数字分别对应 拥有者/组 和 其他 用户的权限。

  • 文件目录的权限:

    • 读(r)-4

    • 写(w)-2

    • 执行(x)-1

    • 无权限(-)-0

  • 常用数字组合u 表示用户、g 表示组、o 表示其他)

    • 777——>u=rwx, g=rwx, o=rwx

    • 755——>u=rwx, g=r-x, o=r-x

    • 644——>u=rw-, g=r--, o=r--

  • 举例:

  • 演练目标:

    • 1、将 01.py 的权限修改为 u=rwx,g=rx,o=r

    • 2、将 123.txt 的权限修改为 u=rw,g=r,o=-

    • 3、将 test 目录以及目录下的 所有 文件权限修改为 u=rwx,g=rwx,o=rx

  • 演练命令:

    • chmod 754 01.py

    • ls -l

    • chmod 640 123.txt

    • ls -l

    • chmod -R 775 test

    • ls -l

    • chmod -R 755 文件名/目录名:递归修改文件/目录权限

3.2 用户组管理

用户 是 Linux 系统工作中重要的一环,用户管理 包括 用户 与 用户组 管理。用户组:为了方便用户管理,提出了 组 概念。在实际应用中,可以预先针对 用户组 设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。

注意:

  • 创建组/删除组的终端命令都需要通过sudo执行。

  • 组信息保存在/etc/group文件中。

  • /etc目录是专门用来保存系统配置信息的目录。

groupadd:添加组

  • 格式groupadd 组名

  • 扩展groupadd -g 编号 组名,添加分组并指定编号

groupmod:修改组名

  • 格式:groupmod -n 新组名 原组名

  • 扩展:groupmod -g 编号 组名,修改组编号

chgrp:修改 文件/目录 所属组

  • 格式:chgrp -R 所属组组名 文件/目录名

cat /etc/group:确认组信息

groupdel:删除组

  • 格式:groupdel 组名

  • 扩展:groupdel 编号,通过组的编号删除组

  • 举例:
    • 1、在 python 用户的桌面文件夹下创建 Python学习 目录:mkdir /home/python/Desktop/Python学习

    • 2、新建 dev 组:sudo groupadd devcat /etc/groupls -l

    • 3、将 Python学习 目录的组修改为 dev:sudo chgrp -R dev Python学习/ls -l

newgrp: 切换用户组

  • 举例:newgrp root,将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

3.3 用户管理

注意:

  • 创建用户/删除用户/修改其他用户密码 的终端命令都需要通过sudo执行。

  • 创建用户时,默认会创建一个和 用户名同名 的组名。

  • 用户信息保存在 /etc/passwd 文件中。

  • 创建用户时,如果忘记添加 -m 选项指定新用户的家目录——最简单的方法就是 删除用户,重新创建。

用户信息:

  • whoami:显示登录的用户名

  • finger zhangsan:显示用户详细资料

  • id zhangsan:显示指定用户信息,包括用户编号,用户名 主要组的编号及名称,附属组列表

  • groups zhangsan:显示 zhangsan 用户所在的所有组

useradd:添加新用户

  • 格式:useradd -m -g 组 新用户名-m:自动建立用户家目录;-g:指定用户所在的组,否则会建立一个和新用户同名的组

  • 例如:useradd -g teacher zhangsan:为zhangsan用户指定所属组teacheruseradd -d /home/zhangsan zhangsan-d:为用户指定工作目录。

passwd 用户名:设置用户密码,如果是普通用户,直接用 passwd,可以修改自己的账户密码

usermod:修改用户

  • 修改用户所属组: usermod -g 新所属组组名 用户,例如:usermod -g stu zhangsan2

  • 修改用户名: usermod -l 原用户名 新用户名,例如:usermod -l zhangsan zhangsan2

userdel:删除用户

  • 格式:userdel -r 用户名-r:选项会自动删除用户家目录

cat /etc/passwd | grep 用户名:确认用户信息;新建用户后,用户信息会保存在 /etc/passwd文件中

su - 用户名:切换用户,并且切换目录;- 可以切换到用户家目录,否则保持位置不变;su 不接用户名,可以切换到 root ,但是不推荐使用,因为不安全。

exit:退出当前登录账户,返回到上次登录的用户。

举例:

  • 创建 zhangsan 新用户:sudo useradd -m -g dev zhangsan

  • 查看新用户家目录信息:ls -l /home

  • 设置指定用户密码:sudo passwd zhangsan

  • 查看 zhangsan 用户信息(-n 显示行号):cat -n /etc/passwd

  • 搜索查看 zhangsan 用户信息:cat /etc/passwd |grep zhangsan

  • 删除 zhangsan 用户(-r:选项会自动删除用户家目录):sudo userdel -r zhangsan

  • 查看用户信息(-n 显示行号)cat -n /etc/passwd

4、目录&文件

4.1 系统目录结构

Linux的文件系统是采用层级式的树状目录结构, 在此结构中的最上层是根目主目录, 下层是各种各样的子目录和文件。

4.2 目录操作

创建目录: mkdir

  • 格式: mkdir 目录名 –p-p:可以递归创建目录

  • 注意: 在Linux中,同一目录中的目录和文件不能重名。

修改目录: chown、chgrp、chmod

chown:修改目录的拥有者

  • 格式:chown 用户名 目录名

chgrp:修改目录的所属组

  • chgrp -R 组名 目录名,-R为递归修改修改目录的组

chmod:修改目录的权限

  • chmod [-R] 权限数字 目录, -R为递归修改目录权限

  • chmod +/-rwx 目录名

查看目录: pwd、tree、ll、ls -l

pwd:显示当前路径

tree 目录名:以树状图列出文件目录结构;tree -d-d只显示目录

ll 或 ls -l:显示文件/目录的属性

切换目录: cd

  • 格式: cd 目录路径
    • cd . 当前目录

    • cd .. 切换到上级目录

    • cd / 切换到根目录

    • cd ~ (或只有cd )切换到当前用户主目录(home底下以用户名命名的文件夹)/root目录

    • cd - 可以在最近两次工作目录之间来回切换

删除目录: rmdir、rm

rmdir:删除空目录

  • 格式一: rmdir 目录名rmdir 只能删除空目录,如果目录下有文件了则不能被删除;

  • 格式二: rm -rf 目录名/文件名-f:强制删除,忽略不存在的文件,无需提示;-r:递归地删除目录下的内容,删除文件夹时必须加此参数

  • 注意:rm -rf * 删库!!!整个系统就没了。

4.3 文件操作

在Linux系统中, 几乎所有内容包括文档、命令、设备和目录等都组织成文件的形式, 用文件来管理

新建文件: touch

touch

  • 格式: touch 文件名

  • 举例: touch filename.txt

  • 注意:
    • 如果文件不存在,可以创建一个空白文件;

    • 如果文件已经存在,可以修改文件的末次修改日期。

修改文件: chown、chgrp、chmod

chown:修改文件的拥有者

  • 格式: chown 用户名 文件名

chgrp:修改文件的所属组

  • 格式:chgrp -R 组名 文件名,-R为递归修改修改文件的组

chmod:修改文件的权限

  • 格式一:chmod [-R] 权限数字 文件名, -R为递归修改文件权限

  • 格式二:chmod +/-rwx 文件名

查找文件:ls、find、grep

ls

ls:查看目录及文件

  • 格式:ls [选项] 路径(若没有路径则显示当前目录的内容)

  • 选项:
    • -a 显示所有文件 隐藏文件

    • -l 显示文件属性,长格式显示文件

    • ls -l,从左到右依次是:权限、硬链接数、拥有者、组、大小、时间、名称(权限: 第 1 个字符如果是 d ,表示目录;硬链接数: 通俗地讲,就是有多少种方式,可以访问到当前目录/文件;子目录越多,其硬链接越多;通过绝对路径进入<在目录下输入 cd . 进入;在目录的不同子目录中输入 cd .. 进入>;拥有者: 家目录下 文件/目录 的拥有者,通常都是当前用户;组: 在Linux中,很多时候,会出现组名和用户名相同的情况)

  • 举例:
    • ls -l

    • ls -la

    • ls * [0-9]* :显示包含数字的文件名和目录名

find

find:查找文件

  • 格式:find [路径] [选项],如:find [路径] -name "* .py":查找指定路径下扩展名是.py的文件,包括子目录

  • 注意:

  • find 命令功能非常强大,通常用在特定的目录下搜索符合条件的文件。

  • 如果省略路径,表示在当前文件夹下查找。

  • 使用find命令时同时可用通配符:
    • *:代表任意个数字符

    • ?:代表任意一个字符,至少1个

    • []:表示可以匹配字符组中的任意一个

    • [abc]:匹配 a、b、c 中的任意一个

    • [a-f]:匹配从 a 到 f 范围内的任意一个字符

  • 举例:
    • find . –name * .log:在当前目录查找以.log结尾的文件

    • find / -name log:在根目录查找log命名的目录

    • find -name "*1*"find -name "*.txt"find -name "1*"

    • find / -name file1:从 '/' 开始进入根文件系统搜索文件和目录

    • find / -user user1:搜索属于用户 'user1' 的文件和目录

    • find /home/user1 -name \*.bin:在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件

    • find /usr/bin -type f -atime +100:搜索在过去100天内未被使用过的执行文件

    • find /usr/bin -type f -mtime -10:搜索在10天内被创建或者修改过的文件

    • find / -name \*.rpm -exec chmod 755 '{}' \:搜索以 '.rpm' 结尾的文件并定义其权限

    • find / -xdev -name \*.rpm:搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备

grep

grep:搜索文本文件内容或文件名

  • 格式:grep [选项] 字符串 文件名

  • 选项:
    • -n:显示匹配行及行号

    • -v:显示不包含匹配文本的所有行(相当于求反)

    • -i:忽略大小写

  • 参数:
    • ^a:行首,搜寻以 a 开头的行

    • ke$:行尾,搜寻以 ke 结束的行

  • 注意:
    • Linux系统中 grep 命令是一种强大的文本搜索工具

    • grep 在指定文件中查找字符(串)并打印该行,并允许对文本进行 模式 查找,所谓模式查找,又被称为正则表达式。

    • 过滤作用,经常跟管道符号一起出现 |

  • 举例:
    • grep band file:在file文件中找寻band字符串

    • grep as 123.txt:在123.txt文件中查找as字符串

    • grep -n as 123.txt:显示匹配行及行号

    • grep -v as 123.txt:求反,不包含 as 单词的所有行

    • grep -i as 123.txt:忽略大小写

    • grep -vn as 123.txt:显示不匹配行及其行号

    • grep -in "hello python" 123.txt:忽略大小写并显示匹配行及行号

查看文件内容: cat、head、tail、more、echo

cat

cat:显示文本文件内容,查看文件内容、创建文件、文件合并、追加文件内容等功能

  • 格式:cat [选项] 文件名

  • 选项:
    • -b:对非空输入行编号

    • -n:对输出的所有行编号

  • 注意:
    • 对应英文:concatenate

    • cat 会一次显示所有的内容,适合查看内容较少的文本文件。

    • Linux中还有一个nl的命令和cat -b的效果等价。

head

head:查看前几行

  • 格式:head –n 5 文件名:查看前5行

tail:查看后几行

  • 格式:tail –n 5 文件名:查看后5行

  • 例如:tail –f error.log:不断刷新, 看到最新内容(tail:从指定点开始将文件写到标准输出, 使用tail命令的-f选项可以方便查阅正在改变的日志文件)

more

more:分屏显示内容

  • 格式:more 文件名

  • 注意:

  • 分屏显示文件内容,每次只显示一页内容,适合查看内容较多的文本文件

  • 使用 more 的操作键
    • 空格键:显示手册页的下一屏

    • Enter键:一次滚动手册页的一行

    • b:回滚一屏

    • f:前滚一屏

    • q:退出

    • /word:搜索 word 字符串

echo

  • 格式:echo 文字内容,在终端中显示参数指定的文字,通常会和重定向联合使用

  • 举例:

  • echo Hello Python

  • echo和重定向的联合使用
    • echo Hello Python > a

    • cat a

    • ls -lh

    • ls -lh > a

    • echo Hello Python >> a

    • ls >> a

    • cat a

    • tree >> a

  • echo 和 touch 创建文件中的不同
    • echo 创建文件时可以同时将内容也写入文件中;touch 就只能创建文件,文件内容要后续加入。

    • touch b

    • cat b

    • echo Hello > b

    • cat b

    • rm b

    • echo Hello Python > b

    • cat b

复制文件:cp

cp

  • 格式:cp [选项] 源文件或目录 目标地址

  • 选项:
    • -f:已经存在的目标文件直接覆盖,不会提示

    • -i:覆盖文件前提示

    • -R:拷贝目录及目录下所有目录和文件 目录(文件夹)

    • -r:若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

  • 例如:cp a.txt b.txt:将a文件复制, 且另命名为b.txt文件(目录名)

  • 注意:
    • 复制后的文件不需要重命名,则只需要 接 复制的目标地址路径;

    • 复制后的文件需要重命名,则只需要在 目标地址后面加上新文件名。

移动文件:mv

mv

  • 格式:mv 源文件或目录 目标地址

  • 选项:-i:覆盖文件前提示

  • 例如:
    • mv a.txt ../:将a文件移动到上级目录(将一个文件移动到另一个目录没有重命名)

    • mv a.txt ../b.txt:将a文件移动到上一级并改名为b文件(将一个文件移动到另一个目录并重命名)

  • 注意:
    • mv命令可以用来移动文件或目录,也可以给 文件或目录 重命名

    • 移动后的文件需要重命名,则只需要在 目标地址后面加上新文件名

    • 利用 mv 重命名:只需要路径不变,修改文件名即可。

删除文件:rm

  • 格式:rm [选项] 文件名

  • 选项:
    • -f:强制删除

    • -r:递归删除目录

  • 例如:rm -rf 文件或目录:谨慎使用

4.4 vim编辑器

应用场景: 对服务器上的文件进行简单的修改,可以使用ssh远程登录到服务器上,并且使用vi进行快速的编辑即可;常见需要修改的文件包括源程序、配置文件、文本文件

vim键盘图:

vi 和 vim

  • vi 是 Visual interface 的简称,是Linux中最经典常用的、功能强大的文本编辑器。

  • 在很多Linux发行版本中,直接把vi做成vim的软链接,vivim 的快捷方式,输入vi ,打开的就是vim

  • vim = vi + improved,vim 是从 vi 发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能特别丰富

三种工作模式:

命令模式:入口

  • 打开文件首先进入命令模式,是使用vi的入口;

  • 通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除......

  • 在其他图形编辑器下,通过快捷键 或者 鼠标 实现的操作,都在命令模式下实现

末行模式:出口

  • 末行模式 是 vi 的出口

  • 执行保存、退出等操作

  • 要退出vi返回到控制台,需要在末行模式下输入命令:
    • w:保存

    • q:退出,如果没有保存,不允许退出

    • q!:强制退出,不保存退出

    • wq:保存并退出

    • x:保存并推出

编辑模式:正常的编辑文字

  • 文件编辑中输入如下命令
    • /Python:从光标开始处向文件尾搜索Python

    • ?Python:从光标开始处向文件首搜索Python

    • :set nu:显示每一行的行数

    • 按键盘G:可以直接定位到最末尾

    • 注意:键盘输入, 都是英文输入法进行输入

三种模式切换

命令模式

  • 打开文件,进入命令模式

  • 从 编辑模式 到 命令模式:直接按 ESC 键

  • 从 末行模式 到 命令模式:直接按 ESC 键

编辑模式

  • 从 命令模式 进入 编辑模式:输入i。(i为insert)

  • 从 末行模式 到 编辑模式:按下 ESC键 到 命令模式,在输入 i 进入编辑模式

  • 命令模式下,用 插入命令 进入
    • i:在当前字符前插入文本

    • I:在行首插入文本

    • a:在当前字符后添加文本

    • A:在行末添加文本

    • o:在当前行后面插入一空行

    • O:在当前行前面插入一空行

末行模式

  • 从 命令模式 到 末行模式:输入 : (冒号为英文状态下的冒号)

  • 从 编辑模式 到 末行模式:按下 ESC键 到 命令模式,再输入: 进入末行模式

  • 注意:编辑模式和末行模式不能直接切换,需要经过命令模式中转。

4.5 打包/解包

打包 / 解包:tar

tar 是 Linux 中最常用的 备份工具,此命令可以把一系列文件 打包到 一个大文件中,也可以把一个打包的大文件恢复成一些列文件。

打包文件:

  • 格式:tar -cvf 打包文件.tar 被打包的文件/路径...

  • 选项:
    • c:生成档案文件,创建打包文件

    • v:列出归档解档的详细过程,显示进度

    • f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后

  • 举例:
    • tar -cvf py.tar 01.py 02.py 03.py

    • ls -lh

解包文件:

  • 格式:tar -xvf 打包文件.tar

  • 选项:
    • x:解开档案文件

    • v:列出归档解档的详细过程,显示进度

    • f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后

  • 举例:tar -xvf py.tar

4.6 压缩/解压缩

压缩 / 解压缩:gzip、bzip2

gzip:

  • targzip 命令结合可以使用实现打包和压缩

  • tar 只负责打包文件,但不压缩

  • gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz

  • tar 命令中有一个选项 -z 可以调用 gzip ,从而可以方便的实现压缩和解压缩的功能。

压缩文件:

  • 格式:tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

  • 举例:
    • tar -zcvf py.tar.gz *.py

    • ls -lh

解压缩文件:

  • 格式一:tar -zxvf 打包文件.tar.gz

  • 格式二:tar -zxvf 打包文件.tar.gz -C 目标路径,解压缩到指定路径,-C:解压缩到指定目录,注意:要解压缩的目标目录必须存在

  • 举例:
    • tar -zxvf py.tar.gz

    • tar -zxvf py.tar.gz -C /home/Desktop/gz

bzip2:

  • tarbzip2 命令结合使用可以实现文件打包和压缩

  • tar 只负责打包文件,但不压缩;

  • bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2

  • tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能。

压缩文件:

  • 格式:tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...

  • 举例:tar -jcvf py.tar.bz2 * .py

解压缩文件:

  • 格式:tar -jxvf 打包文件.tar.bz2

  • 举例:
    • tar -jxvf py.tar.bz2 -C /home/Desktop/bz2

    • tree

5、其他

5.1 快捷按键

  • Tab键:补全命令,补全目录、补全命令参数等

  • 方向键:”上” 、”下”, 对历史命令, 上一个, 下一个进行查找

  • Ctrl+c:结束当前正在运行的程序

  • Ctrl+r:在历史命令中搜索

  • Ctrl+l:清屏

  • Ctrl+d:键盘输入结束或退出终端

  • Ctrl+s:暂停当前程序,暂停后按下任意键恢复运行

  • Ctrl+z:将当前程序放到后台运行,恢复到前台为命令 fg

  • Ctrl+a:将光标移至输入行头,相当于 Home 键

  • Ctrl+e:将光标移至输入行末,相当于 End 键

  • Ctrl+u:删除从光标所在位置到行首

  • Ctrl+k:删除从光标所在位置到行末

  • Alt+Backspace:向前删除一个单词

  • Shift+PgUp:将终端显示向上滚动

  • Shift+PgDn:将终端显示向下滚动

5.2 shell脚本简介

shell脚本:

  • 1.vi test.sh ---创建shell脚本文件

  • 2.#!/bin/sh ---解释器
    • a="hello world" ---对变量赋值:

    • echo "A is:" ---输出常量

    • echo $a ---输入变量值

  • 3.#./test.sh ---运行shell脚本

5.3 管道

管道命令: 管道使用”|”符号, 并且在命令之间建立管道, 将前面命令的输出作为后面命令的输入 例如:ll | grep abc,管道前面的命令显示当前目录下的文件, 后面从列出的文件名中寻找含有abc字符串的文件或者目录。

常用的管道命令:

  • more:分屏显示内容,ls -lha ~ | more

  • grep:在命令执行结果的基础上查询指定的文本,ls -lha ~ | grep vi

5.4 重定向

重定向 >>>

Linux允许将命令执行结果重定向到一个文件,将原本应显示在终端上的内容输出/追加到指定文件中。

  • ">" 表示输出,会覆盖文件原有的内容

  • >>” 表示追加,会将内容追加到已有文件的末尾

5.5 软硬链接

软链接: symbolic link,类似于 Windows里的快捷方式,这个软链接文件的内容,其实是另外一个源文件的路径和名称,当打开 软连接文件时,实际上系统会根据其内容找到并打开源文件。删除软连接文件,不会影响源文件。

  • 格式:ln -s 文件/目录名 软链接名

  • 例如:ln -s file1 lnk1:创建一个指向文件或目录的软链接

硬链接: hard link,这类文件会拥有自己的 inode 节点和名称,其 inode 会指向文件内容所在的数据块。同时,该文件内容所在的数据块的引用计数会加 1。当此数据块的引用计数大于等于 2 时,表示有多个文件同时指向了这一数据块。一个文件修改,多个文件都会生效。当删除其中某个文件时,对另一个文件不会有影响,仅仅是数据块的引用计数减 1。当引用计数为 0 时,则系统才会清除此数据块。

  • 格式:ln 文件/目录名 硬链接名

  • 例如:ln file1 lnk1:创建一个指向文件或目录的物理链接

三、系统关机

1、重启

  • reboot

  • shutdown -r now

  • init 6

  • 系统的运行级别
    • 0 关机

    • 1 单用户

    • 2 不 完全多用户,不包含NFS服务

    • 3 完全多用户

    • 4 未分配

    • 5 图形界面

    • 6 重启

2、关机

  • halt

  • shutdown -h
    • 无参数:不指定选项和参数,默认表示 1 分钟之后 关闭电脑;远程维护服务器时,最好不要关闭系统,而应该重新启动系统。

    • now:马上关机

    • hours:minutes:按预定时间关机

    • shutdown -c:取消按预定时间关机

  • init 0

  • poweroff:关机和关闭电源

3、注销

注销: logout

4、举例

  • shutdown -r now:重新启动操作系统,其中 now 表示现在

  • shutdown now:立刻关机,其中 now 表示现在

  • shutdown 20:25:系统在今天的 20:25 会关机

  • shutdown +10:系统在过10分钟后自动关机

  • shutdown -c:取消之前指定的关机计划

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值