Linux笔记1:Linux命令行基础

基本概念

Shell与Bash:

用户>服务程序>系统调用接口>内核>硬件

  • 硬件设备由系统内核直接管理,但由于内核的复杂性太高,在访问时存在较大的风险,因此用户不能直接访问内核。
  • Shell是终端程序的统称,充当了人与内核(硬件)的“翻译官”,会根据用户的命令去调用相应的服务程序去完成某项工作。
  • 目前主流Linux系统默认使用的终端程序是Bash(Bourne-Again SHell)解释器。

Bash解释器的优势:

  1. 通过上下方向键来调取执行过的Linux命令;
  2. 命令或参数仅需输入前几位就可以用Tab键补全;
  3. 具有强大的批处理脚本;
  4. 具有使用的环境变量功能。

常见的Linux命令格式:

命令名称 [命令参数] 命令对象

命令名称:想要做的事情,如创建用户、查看文件、重启系统等;

命令参数:用于对命令进行调整,如创建一个编码为888的用户、仅查看文件的前20行等;

命令对象:一般指要处理的文件、目录、用户等资源名称,也就是命令执行的承受方,例如查看一个叫工资表的文件、重启一个IP为192.168.1.1的系统。

注意事项:

命令参数分为长格式(man --help)和短格式(man -h)

命令名称、命令参数和命令对象之间要用空格进行分隔,且字母严格区分大小写

查看命令的帮助信息:

这里以【在命令行终端中输入man man命令来查看man命令自身的帮助信息】为例:

man命令中帮助信息的结构及其代表意义
结构名称代表意义
NAME命令的名称
SYNOPSIS参数的大致使用方法
DESCRIPTION介绍说明
EXAMPLES演示(附带简单说明)
OVERVIEW概述
DEFAULTS默认功能
OPTIONS具体的可用选项(带介绍)
ENVIRONMENT环境变量
FILES用到的文件
SEE ALSO相关的资料
HISTORY维护历史与联系方式

常用的四个快捷键:

Tab键:实现对命令名称、命令参数、命令对象名称的自动补全,有效避免了手动输入容易输错的问题

Ctrl+C键:终止当前进程的运行

Ctrl+D键:表示键盘输入结束

Ctrl+I键:清空当前终端中已有的内容(相当于清屏操作)


常用系统工作命令

1.echo命令

echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:

echo [字符串] [$变量]

例:分别输出字符串和变量的值

2.date命令

date命令用于显示或设置系统的时间与日期,语法格式为:

date [+指定的格式]

date命令中的参数及其作用
参数作用
%S秒(00~59)
%M分钟(00~59)
%H小时(00~23)
%I小时(00~12)
%P显示出AM或PM
%m月份(1~12)
%a缩写的星期名称(例如,Sun)

%A

完整的星期名称(例如,Sunday)
%b缩写的月份名称(例如,Jan)
%B完整的月份名称(例如,January)
%q季度(1~4)
%y简写年份(例如,22)
%Y完整年份(例如,2022)
%d本月中的第几天
%j本年中的第几天
%n换行符(相当于按下回车键)
%t跳格(相当于按下Tab键)

例:

按照默认格式打印当前系统时间

按照指定格式打印当前系统时间

修改系统时间为指定时间

查看今天是当年中的第几天(可以用于区分备份时间的早晚)

3.timedatectl命令

timedatectl命令用于设置系统的时间,英文全称为“time date control”,语法格式为:

timedatectl [参数]

timedatectl命令中的参数以及作用
参数作用
status显示状态信息
list-timezones列出已知时区

set-time

设置系统时间
set-timezone设置生效时区

例:

查看系统时间与时区

手动设置时区

手动修改系统日期 

手动修改系统时间

4.reboot命令

reboot命令用于重启系统,输入该命令后按回车执行即可(这种操作会涉及硬件资源的管理权限,因此最好以root管理员身份来重启,普通用户在执行该命令时可能会被拒绝),语法格式为:

reboot

5.poweroff命令

poweroff命令用于关闭系统,输入该命令后按回车执行即可(同样最好以root管理员身份来操作),语法格式:

poweroff

6.wget命令

wget命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格式为:

wget [参数] 网址

wget命令中的参数以及作用
参数作用
-b后台下载模式
-p下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面内所有资源,包括图片、视频等
-r递归下载

 例:下载图灵社区的一张图片

例:递归下载网站内的所有页面数据以及文件

wget -r -p https://www.baidu.com

7.ps命令

ps命令用于查看系统中的进程状态,英文全称为“processes”,语法格式为:

ps [参数]

(通常会将ps命令与管道符技术搭配使用,用来抓取与某个指定服务进程相对应的PID号码)

ps命令中的参数以及作用
参数作用
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程

例:输入ps aux命令查看所有进程

标题栏:进程的所有者、进程ID号、运算器占用率、内存占用率、虚拟内存使用量(单位:KB)、占用的固定内存量(单位:KB)、所在终端、进程状态、被启动的时间、实际使用CPU的时间、命令名称与参数

Linux系统中时刻运行着许多进程,需要进行合理的管理,以优化系统的性能。

Linux系统中五种常见的进程状态(STAT):

  • R(运行):进程正在运行活在运行队列中等待
  • S(中断):进程处于休眠中(当某个条件形成后或者接收到信号时,则脱离该状态)
  • D(不可中断):进程不响应系统异步信号(即便kill命令也不能将其中断)
  • Z(僵死):进程已经终止,但进程描述符依然存在(直到父进程调用wait4()系统函数后将进程释放)
  • T(停止):进程收到停止信号后停止运行

五种进程状态的补充形式:

  • <(高优先级)
  • N(低优先级)
  • L(被锁进内存)
  • s(包含子进程)
  • l(多线程)

8.pstree命令

pstree命令用于以树状图的形式展示进程之间的关系,英文全称为“process tree”,输入该命令后按回车键执行即可。

pstree

▲ps命令产生的信息量太大又没有规律,而pstree能够有层次地展示进程之间的关系。 

9.top命令

top命令用于动态地监视进程活动及系统负载等信息,输入该命令后按回车键执行即可。

top

top命令执行结果的前5行是系统整体的统计信息,其所代表的含义如下:

第1行:系统时间、运行时间、登陆终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低。)

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示(“98.7 id”表示有98.7%的CPU处理器资源处于空闲)

第4行:物理内存总量、内存空闲总量、内存使用量、作为内核缓存的内存量

第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量

10.nice命令

nice命令用于调整进程的优先级,语法格式为:

nice 优先级数字 服务名称

在top命令输出的结果中,PR和NI值代表的事进程的优先级(数字越低,优先级越高,取值范围:-20~19)。可以将重要进程的优先级调高,来让它更多地利用CPU和内存资源。

例:将bash服务的优先级调整到最高

11.pidof命令

pidof命令用于查询某个指定服务进程的PID号码值,语法格式为:

pidof [参数] 服务名称

例:执行命令来查询本机上sshd服务程序的PID

(每个进程的进程号码值PID都是唯一的,可以用于区分不同的进程) 

12.kill命令

kill命令用于终止某个指定PID值的服务进程,语法格式为:

kill [参数] 进程的PID

例:使用命令将PID为1105的进程终止掉

如果系统提示进程无法被终止,可以加参数-9(表示最高级别地强制杀死进程):

kill -9 进程的PID

13.killall命令

kinllall命令用于终止某个指定名称的服务所对应的全部进程,语法格式为:

killall [参数] 服务名称

14.补充小技巧

  1. 如果在系统终端中执行一个命令后想要立即停止它,可以按下Ctrl+C组合键;
  2. 如果有些命令在执行时会不断地在屏幕上输出信息,影响到后续命令的输入,可以在执行命令时在末尾添加一个“&”符号,这样命令就会进入系统后台来执行。

系统状态检测命令

1.ifconfig命令

ifconfig命令用于获取网卡配置与网络状态等信息,英文全称是“interface config”,语法格式为:

ifconfig [参数] [网络设备]

主要查看的信息包括:

  • 网卡名称
  • inet参数后面的IP地址
  • ether参数后面的网卡物理地址(又称为MAC地址)
  • RX、TX的接收数据包与发送数据包的个数以及累计流量 

2.uname命令

uname命令用于查看系统内核版本与系统架构等信息,英文全称为“unix name”,语法格式为:

uname [-a](在使用uname命令时,一般会搭配上-a参数来查看完整信息)

其中的信息包括:

系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型、操作系统名称 

如果想要查看的是当前系统版本的详细信息,则需要查看redhat-release文件:

3.uptime命令

uptime命令用于查看系统的负载信息,输入该命令后按回车键执行即可:

uptime

其中的信息包括:

当前系统时间、系统已运行时间、启用终端数量、平均负载值等信息。

(负载值越低表示越安全省心,但是如果硬件设备长期处于空闲状态是一种资源浪费,建议负载值保持在1左右,在生产环境中不要超过5即可) 

4.free命令

free命令用于显示当前系统中内存的使用量信息,语法格式为:

free [-h]

带上参数-h会给数据自动匹配上合适的单位,更易于阅读(不带-h的话,默认以KB为单位)。 

标题行从左往右:

内存总量、已用量、空闲量、进程功效的内存量、磁盘缓存的内存量、缓存的内存存量、可用量

5.who命令

who命令用于查看当前登入主机的用户终端信息(如果有远程用户,还会显示来访者的IP地址),输入该命令后按回车键执行即可:

who

6.last命令

last命令用于调取主机的被访记录(每次的登陆信息都会记录),输入该命令后按回车键即执行可:

last

7.ping命令

ping命令用于测试主机之间的网络连通性,语法格式为:

ping [参数] 主机地址

ping命令中的参数以及作用
参数作用
-c总共发送次数
-i指定网卡名称
-I每次间隔时间(秒)
-W最长等待时间(秒)

例:分别ping一个在线的主机和一个不在线的主机

8.tracepath命令

tracepath命令用于显示数据包到达目的主机时途中经过的所有路由信息(当两台主机之间无法正常ping通时,可以用tracepath命令追踪一下数据包到达目的主机时途中所有路由信息),语法格式为:

tracepath [参数] 域名

9.netstat命令

netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为“network status”,语法格式为:

netstat [参数]

nestat命令中的参数以及作用
参数作用
-a显示所有连接中的Socket
-p显示所有正在使用的Socket信息
-t显示TCP协议的连接状态
-u显示UDP协议的连接状态
-n显示IP地址,不使用域名
-l仅列出正在监听的服务状态
-i显示网卡列表信息
-r显示路由表信息

例:分别查询详细的网络状况和网卡列表信息

10.history命令

history命令用于显示执行过的命令历史(默认为最近1000条命令记录,可以通过/etc/profile文件中的HISTSIZE变量值自定义数量),语法格式为:

history [参数]

历史命令会被保存在用户家目录中的.bash_histort文件中(Linux系统中以点.开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容)

例:

查询执行过的命令历史

使用-c参数来清空所有的命令历史记录

使用“!编码数字”的方式来重复执行某一次的命令

11.sosreport命令

sosreport命令用于收集系统配置及架构信息并输出诊断文档,输入该命令后按回车键执行即可:

sosreport

(当Linux系统出现故障需要联系技术支持人员时,需要用这个命令先收集系统的运行状态和服务配置信息。)


查找定位文件命令

1.pwd命令

pwd命令用于显示用户当前所处的工作目录,英文全称是“print working directory”,输入该命令后直接回车键执行即可:

pwd

2.cd命令

cd命令用于切换当前的工作路径,英文全称为“change directory”,语法格式为:

cd [参数] [目录]

例:

使用cd /etc命令进入/etc目录

使用cd ~命令切换到当前用户的家目录

使用cd Music进入当前用户的家目录下的音乐目录

使用cd -命令返回到上次所处的目录

使用命令进入/etc/gdm/Init目录

使用cd ..命令进入上级目录

使用cd ~ username命令切换到其他用户的家目录

3.ls命令

ls命令用于显示目录中的文件信息,英文全称为“list”,语法格式为:

ls [参数] [文件名称]

例:

加上-a参数可以查看当前目录中的全部文件(包括隐藏文件)

加上-l参数可以查看文件的属性、大小等详细信息

组合一下

加上-d参数,查看指定目录的属性信息

 

4.tree命令

tree命令用于以树状图形式列出目录内容及结构,输入该命令后按回车键执行即可。:

tree 

5.find命令

find命令用于按照指定条件来查找文件所对应的位置,语法格式为:

find [查找范围] 寻找条件

find命令中的参数以及作用
参数作用
-name

匹配名称

-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所属组
-mtime -n +n匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n匹配访问文件的时间(-n指n天以内,+n指n天以前)

-ctime -n +n

匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser匹配无所有者的文件
-nogroup匹配无所属组的文件
-newer f1 !f2匹配比文件f1新但是比f2旧的文件
--type b/d/c/p/l/f匹配文件类型(字母依次表示:块设备、目录、字符设备、管道、链接文件、文本文件)
-size

匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)

-prune忽略某个目录
-exec...... {}\;后面可跟用于进一步处理搜索结构的命令

例:

在/etc目录中,查找所有以host开头的文件列表

在整个系统中,查找所有权限中包括SUID权限的文件 

在整个文件系统中,查找所有归属于linuxprobe用户的文件,并复制到/root/findresults目录中

find / -user linuxprobe -exec cp -a {} /root/findresults/ \;

6.locate命令

locate命令用于按照名称快速搜索文件所对应的位置(使用find命令进行全盘搜索虽然准确但是效率低),语法格式为:

locate 文件名称

(在使用locate命令时,先使用update命令生成一个索引库文件,这个库文件的名字是/var/lin/mlocate/mlocate/db,后续在使用locate命令搜索文件时,就是在该库中进行查找操作,速度会快很多)

例:

生成索引数据库

使用locate命令搜索出所有包含“whereis”名称的文件所在的位置

7.whereis命令

whereis命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置(同样基于updatedb命令生成的索引库文件进行搜索),语法位置为:

whereis 命令名称

例:

分别查找出whereis和ls命令所在的位置 

8.which命令

which命令用于按照指定名称快速搜索出二进制程序(命令)所对应的位置,语法格式为:

which 命令名称

如果想找同名文件用——find或者locate

如果想直接找到命令对应的源代码和帮助文件用——whereis

如果只是想要找到命令本身的所在位置用——which

例:

分别找到命令whereis和locate的所在位置


文本文件编辑命令

1.cat命令

cat命令用于查看纯文本文件(适合内容较少的),英文全称为“concatenate”,语法格式为:

cat [参数] 文件名称

例:

加上参数-n,可以在显示文本内容的同时显示行号

2.more命令

more命令用于查看纯文本内容(适合内容较多的,会用百分比表示阅读进度,可以用空格键或者回车键向下翻页),语法格式为:

more [参数] 文件名称

3.head命令

head命令用于查看纯文本内容的前N行,语法格式为:

head [参数] 文件名称

4.tail命令

tail命令用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为:

tail [参数] 文件名称

加上-f参数,可以持续刷新一个文件的内容(适合需要实时查看足心的日志文件时)

5.tr命令

tr命令用于替换文本内容中的字符,英文全称是“transform”,语法格式为:

tr [原始字符] [目标字符]

例:

将文本中的英文全部替换成大写

cat anaconda-ks.cfg | tr [a-z] [A-Z]

6.wc命令

wc命令用于统计指定文本文件的行数、字数和字节数,英文全称为“word counts”,语法格式为:

wc [参数] 文件名称

wc命令中的参数以及作用
参数作用
-l只显示行数
-w只显示单词数
-c是显示字节数

例:

在Linux系统中,/etc/passwd是用于保存所有用户信息的文件,要统计当前系统中有多少个用户,可以使用一下命令来查询

  

7.stat命令

stat命令用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式为:

stat 文件名称

 Linux系统中的文件包含的3种时间状态:

Access Time:内容最后一次被访问的时间,简称Aitme

Modify Time:内容最后一次被修改的时间,简称Mtime

Change Time:文件属性最后一次被修改的时间,简称Ctime

8.grep命令

grep命令用于按行提取文本内容,语法格式为:

grep [参数] 文件名称

grep命令中的参数及其作用
参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-I忽略大小写
-n显示行号
-v反向选择(仅列出没有包含“关键词”的行)

在Linux系统中,/etc/passwd文件保存着所有的用户信息,一旦用户的登陆终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用grep命令查找出当前系统中不允许登陆系统的所有用户的信息:

9.cut命令

cut命令用于按“列”提取文本内容,语法格式为:

cut [参数] 文件名称

查看系统文件的原始信息的前十行(每一项值之间都用冒号来间隔)

用“列”的方式来提取文本内容(用-d参数设置间隔符号,用-f参数设置需要查看的列)

10.diff命令

diff命令用于比较多个文件之间内容的差异,英文全称是“different”,语法格式为:

diff [参数] 文件名称A 文件名称B

加上--brief参数来确认两个文件是否相同

加上-c参数来详细比较多个文件的差异之处 

例:

比较anaconda-ks.cfg和initial-setup-ks.cfg是否相同

列出anaconda-ks.cfg和initial-setup-ks.cfg的差异

11.uniq命令

uniq命令用于去除文本中连续的重复行(非相邻的默认不会去重),英文全称为“unique”(独特的,唯一的),语法格式为:

uniq [参数] 文本名称

12.sort命令

sort命令用于对文本内容进行再排序,语法格式为:

sort [参数] 文件名称

sort命令中的参数及其作用
参数作用
-f忽略大小写
-b忽略缩进与空格
-n以数值型排序
-r反向排序
-u去除重复行
-t指定间隔符
-k设置字段范围

例:

默认根据字母进行排序

加上参数-u进行去重(与uniq命令不同,就算内容不是相邻的也能去重)

加上参数-n对数字进行排序(不同位数的数字也能正常排序)

组合用法:用-t参数指定间隔符,用-k参数指定第几列,用-n参数指定数字排序


文件目录管理命令

1.touch命令

touch命令用于创建空白文件或设置文件的时间,语法格式为:

touch [参数] 文件名称

touch命令中的参数及其作用
参数作用
-a仅修改“访问时间”(Aitme)

-m

仅修改“修改时间”(Mtime)
-d同时修改Atime与Mtime

例:

用touch命令创建一个名为linuxstudy的空白文件

查询这个文件的修改时间(Jan 29 23:06)

往这个文件插入一段字符串

再次查询这个文件的修改时间(Jan 29 23:07)

用touch命令修改这个文件的修改时间(Jan 29 23:06)

再次查询这个文件的修改时间(Jan 29 23:06)

2.mkdir命令

mkdir命令用于创建空白的目录,英文全称为“make directory” ,语法格式是:

mkdir [参数] 目录名称

例:

正常创建一个空目录

加上参数-p,递归创建出具有嵌套层叠关系的文件目录

3.cp命令

cp命令用于复制文件或目录,英文全称为“copy”,语法格式为:

cp [参数] 源文件名称 目标文件名称

复制操作分三种情况:

  • 如果目标文件是目录,则会把源文件复制到该目录中
  • 如果目标文件也是普通文件,则会询问是否要覆盖它
  • 如果目标文件不存在,则执行正常的复制操作
cp命令中的参数及其作用
参数作用
-p保留原始文件的属性
-d若对象为“链接文件”,则保留该“链接文件”的属性
-r递归持续复制(复制目录时要加上)

-i

若目标文件存在则询问是否覆盖
-a相当于-pdr组合

例:

用touch命令创建一个名为“install.log”的普通空白文件,然后复制为一份名为x.log的备份文件,最后再使用ls命令查看目录中的文件

4.mv命令

mv命令用于剪切或重命名文件(原地剪切粘贴相当于重命名),英文全称为“move”,语法格式为:

mv [参数] 源文件名称 目标文件名称

例:

5.rm命令

rm命令用于删除文件或目录,英文全称为“remove”,语法格式为:

rm [参数] 文件名称

rm命令中的参数及其作用
参数作用
-f强制执行(免除确认信息)
-i删除前询问
-r删除目录
-v显示过程

例:

查看当前目录文件

删除happy

再次查看当前目录文件(发现happy删除失败)

加上参数-f,再次执行删除happy

再次查看当前目录文件(确认删除成功)

......

6.dd命令

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为:

dd if=参数值 of=参数值 count=参数值 bs=参数值

dd命令中的参数及其作用
参数作用
if输入的文件名称
of

输出的文件名称

bs设置每个“块”的大小
count设置要复制“块”的个数

例:

用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存为一个名为560_file的文件。

7.file命令

file命令用于查看文件的类型(在Linux系统中,由于文件、目录、设备等所有一切都统称为文件,但是它们又不一定有后缀),语法格式为:

file 文件名称

例:

查看当前文件夹下所有文件各自的类型

(在Windows系统中,用户双击鼠标,系统会自动匹配文件类型和用来打开的应用。而在Linux系统中,系统则是根据用户执行的命令来钓鱼你那个文件,比如执行cat命令查看文件,执行bash命令执行脚本等,所以不要求文件都要有后缀)

8.tar命令

tar命令用于对文件进行打包压缩或解压(在Linux中,主要使用的格式:.tar、.tar.gz、.tar.bz2),语法格式为:

tar 参数 文件名称

tar命令中的参数及其作用
参数作用
-c创建压缩文件
-x解压文件
-t查看压缩包内有哪些文件
-z用gzip压缩或解压
-j用bzip2压缩或解压
-v显示压缩或解压的过程
-f目标文件名
-P保留原始的权限与属性
-p使用绝对路径来压缩
-C指定压缩到的目录

注意事项:

-c参数和 -x参数不能同时使用(一个压缩,一个解压)

-z参数对应gzip格式的文件,-j参数对应bzip2格式的文件

-v参数推荐使用,对于长时间的压缩或解压操作来讲,方便判断是不是系统死机

-f参数特别重要,一定要放在参数的最后一位

例:

指定路径进行压缩

指定路径进行解压


<完>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值