linux入门基操作

本文详尽列举了Linux系统中的各种基础操作和高级用法,包括命令帮助、文件及目录管理、文本处理、磁盘管理、进程管理工具、性能监控、网络工具、用户管理及IPC资源管理等方面。内容涵盖man命令、文件创建与删除、权限修改、文件查找、进程信息查询、网络端口监控、用户权限管理等多个实用技能,是Linux系统管理和运维的重要参考资料。
摘要由CSDN通过智能技术生成

基础操作

1. 学会使用命令帮助

man -k xxx  		// 忘记具体命令 
whatis xxx			// 查看具体信息,info也可
whatis -w "ca*"		// 正则表达式查找
info xxx			// 同whatis
man xxx				// 查看具体参数 

Linux分

(1)、用户可以操作的命令或者是可执行文件
(2)、系统核心可调用的函数与工具等
(3)、一些常用的函数与数据库
(4)、设备文件的说明
(5)、设置文件或者某些文件的格式
(6)、游戏
(7)、惯例与协议等。例如Linux标准文件系统、网络协议、ASCⅡ,码等说明内容
(8)、系统管理员可用的管理条令
(9)、与内核有关的文件

查找程序的bin文件夹所在位置

which xxxx

查看程序的搜索路径(查看执行的是哪一个程序)

whereis xxx

2. 文件及目录管理

文件,文件夹基本操作

ls 							// 列出当前目录下的所有文件
touch xx.x					// 创建一个文件
mkdir xxx					// 创建一个文件夹
mv FILE PATH				// 移动文件到指定位置
cp SRC	DESC				// 复制文件到那个文件(可以写路径)
cp -r ./aaa ./bbb			// 复制文件夹
rm -rf						// 删除(加单粗暴的删除)			

查看文件个数

find ./ |wc -l 				// 官方写法,个人觉得不太方便记忆
ls | cat -n					// 文件前面加序号

目录切换

cd xxx						// 进入到xx目录
cd -						// 进入到场次的路径
cd ~						// 进入到家目录
cd / 						// 记入到根目录
pwd							// 显示当前路径

列出文件

ls 							// 列出所有文件
ll							// 列出详细信息
ls -lrt						// 时间排序

别名修改
修改家目录下的bachrc文件设置命令别名,想当于快捷方式

alias lt='ls -lrt'			// 修改别名为lt 

文件查找

find ./ -name "xxx"			// 在当前目录查找xxx, xxx可以是正则表达式

文件内容查看

cat
vim
head
head -10 xxx				// 看前10行
tail -10 xxx				// 看倒数10行
tail -f xxx					// 动态显示文本最新信息
diff xx-1 xx-2				// 文件对比

查找文件内容

egrep 'str' file			// 查找文件内容
egrep 'str' file > outFile 	// 将查找到的内容输出到outFile

权限修改

chown user file				// 修改文件拥有者
chmod a+x  file				// 所用用户添加可执行权限a(all) u(user) g(group) o(other)

文件创建别名(快捷方式)

ln file-1 file-2			// 硬连接, 相当于复制
ln -s file1 file2			// 软连接, 相当于快捷方式

管道和重定向
批处理命令连接执行,使用 |
串联: 使用分号 ;
前面成功,则执行后面一条,否则,不执行:&&
前面失败,则后一条执行: ||

ls ./ && echo ok || echo failed

if ls ./;then echo ok; else echo failed;fi 			// 和上面等同

:> a.txt											// 清空文件
ls a.text >> a.out									// 重定向, 就是将原本输出到控制台的信息, 重新输出到别的地方

环境变量设置
bashrc: 系统启动时执行的文件
profile: 用户登陆后执行的文件

vim ~/.bashrc
vim /etc/profile

//修改其中的PATH变量
PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH

bash快捷键

Ctl-U   删除光标到行首的所有字符,在某些设置下,删除全行
Ctl-K   删除光标到行尾的所有字符
Ctl-W   删除当前光标到前边的最近一个空格之间的字符
Ctl-H   backspace,删除光标前边的字符

Ctl-R   匹配最相近的一个执行过的命令,然后输出
Ctl-J	回车
Ctl-B	左移一个字符
alt-B	左移一个单词(ubuntu失败)
Ctl-F	右移一个字符
alt-F	右移一个单词(ubuntu失败)
Ctl-A	移动到最前面
Ctl-E	移动到最后面
Ctl-P	上一条指令
Ctl-N	下一条指令(执行过的指令中上翻下翻,==>/下 键: 终于不用按上下了, 太爽了!!!)
Ctl-L	清屏(不用clear了, 解决痛点+1,+1)

综合应用
查找record.log中包含AAA,但不包含BBB的记录的总数:

cat -v record.log | grep AAA | grep -v BBB | wc -l // cat -v 显示文件原本在中的数据, 对中文字符有影响 直接翻译成acsii字符

3. 文本处理

文件查找

find ./ -name "*.txt"				// 文件名查找
find ./ -regex ".*?.txt"			// 正则表达式查找
find ./ ! -name "*.txt"				// 文件名反向查找
find . -maxdepth 1 -type f			// 指定深度查找, 深度为1	

文件操作时间查询
-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)

find ./ -atime 7 -type f			// 查找最近第7天修改的文件 f(file)
find ./ -atime -7 -type f			// 最近7天内
find ./ -atime +7 -type f			// 最近7天前 

按照大小查询文件

find ./ -type f -size +2			// 查找大于2k的文件
find ./ -type f -size -2			// 查找小于2k的文件

按照文件创建用户查找

find ./ -type f -user root			// root用户创建的文件

删除指定条件的文件

find ./ -type f -name "*.txt" -delete						// 删除当前目录下的xxx.txt文件

动作执行
exec后面可以跟执行的命令, {}代表符合条件的所有文件

find ./ -type f -name "*.txt" -exec cp {} ./OtherDir \ ;	// 将当前文件夹中的所有txt文件复制到当前目录下的OtherDir中 

结合多个命令
如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可:

-exec ./commands.sh {} \;

-print的定界符
默认使用’\n’作为文件的定界符;
-print0 使用’\0’作为文件的定界符,这样就可以搜索包含空格的文件;

grep文本搜索
-o 只输出匹配的文本行 -v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
grep -c “text” filename
-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名

grep -i -n 'hello' a.txt						// 查找文本中hello的位置, 忽略大小写

在多级目录中对文本递归搜索(程序员搜代码的最爱):

grep "class" . -R -n

xargs命令行参数转换

-d 定义定界符 (默认为空格 多行的定界符为 n)
-n 指定输出为多行
-I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时
-0:指定0为输入定界

cat xxx.txt | xargs -n 3						// 将内容三行在一行显示
cat xxx.txt | xargs -i echo -{}					// 将xx.txt中的数据按行读取,通过echo输出,并在前加 - 

sort排序
-n 按数字进行排序 VS -d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序

sort -n xxx.txt									// 默认n排序
sort -r xxx.txt									// 逆序
sort -d xxx.txt									// 字典排序

sort xxx.txt | uniq								// 去重
sort xxx.txt | uniq -c							// 每行出现次数
sort xxx.txt | uniq -d

文本拼接

paste F1 F2										// F1和F2进行拼接, 是对应行进行拼接,不知直接拼到下面, 默认分割是以tab进行分割的
past F1 F2 -d ","								// 使用","进行分割

字数统计

wc -l xxxx										// 统计行数
wc -w xxxx 										// 统计单词数
wc -c xxxx 										// 统计字符数
wc xxx											// 返回[行数, 单词数, 字符数]

文本替换 - sed

sed 's/xxx/***/' FILE							// 替换每行第一个匹配的字符[将FILE中的xxx替换为***]
sed 's/xxx/***/g' FILE							// 替换匹配到的所有的字符
sed	-i 's/xxx/***/' FILE						// 直接修改原文[上面的写法需要将修改后的内容重定位输出到新的文件才可以保存]
sed -i '/^$/d' FILE								// 直接将文件中的空白行删除[文本末尾的空白行没有删除]					

str = 9999
sed  "s/xx/$str/" FILE							// 双引号会替换变量的值, 单引号不会, 会将str替换为9999

awk数据流处理
awk脚本结构

awk ' BEGIN{ statements } statements2 END{ statements } '
  • 工作方式
    1.执行begin中语句块;
    2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
    3.执行end语句块;
echo 123 | awk 'BEGIN {print "Start"}{ print } END{print "END"}'	// 格式很关键,标点,大小写

在这里插入图片描述
print 以逗号分割时,参数以空格定界;

echo|awk '{a=1;b=2;c="dasdsa";print a,b,c;}'

在这里插入图片描述
print字符串拼接

echo|awk '{a=1;b=2;c="dasdsa";print a" ----***" b"----**   " c;}'

// 输出
1 ----***2----**   dasdsa

awk - 特殊变量: NR NF $0 $1 $2
NR:表示记录数量,在执行过程中对应当前行号;

cat xxx.txt | awk '{print NR}'							// 输出执行到的行数
cat xxx.txt | awk '{print NF}'							// 输出执行的当前行的单词数
cat xxx.txt | awk '{print $2}'							// 输出当前行的第2个单词

NF:表示字段数量,在执行过程总对应当前行的字段数;

$0:这个变量包含执行过程中当前行的文本内容;

$1:第一个字段的文本内容;

$2:第二个字段的文本内容;

// 每行求和 -e是将转移字符输出出来
echo -e "1\n 2\n 3\n 4\n" |awk 'BEGIN{sum=0;}{sum+=$1;}END{print sum}'			// 输出10

awk - 传递外部变量

var = 9999
echo | awk vara=$var '{print vara}'						// 传递外部变量, 变量放前后都行,但是不能加括号, 默认来自输入
echo | awk vara=$var '{print vara}' FILE				// 个人使用失败,可能是语法哪里写错了

用样式对awk处理的行进行过滤

awk 'NR < 5' #行号小于5
awk 'NR==1,NR==4 {print}' file #行号等于14的打印出来
awk '/linux/' #包含linux文本的行(可以用正则表达式来指定,超级强大)
awk '!/linux/' #不包含linux文本的行

使用-F来设置定界符(默认为空格)

awk -F: '{print $NF}' /etc/passwd

4. 磁盘管理

查看磁盘大小以及使用情况
-h: human缩写,以易读的方式显示结果(即带单位:比如M/G,如果不加这个参数,显示的数字以B为单位

df -h												// 查看磁盘信息

当前目录所占大小
-h 人性化显示
-s 递归整个目录的大小

du -sh												// 当前文件夹占用磁盘大小

查看当前目录下所有子文件夹排序后的大小:

du -sh `ls`| sort									// 当前文件夹中的文件按照大小排序

打包,压缩,解压缩
tar -cvf example.tar example ->将example文件夹归档变成了example.tar

  • c: create创建档案
  • v: verbose显示详情
  • f: file表示文件
tar -cvf example.tar example						// 只打包不压缩
gzip xxx.tar										// 压缩后生成-> xxx.tar.gz
gunzip xxx.tar.gz									// 解压后-> xxx.tar
tar -xvf xxx.tar.gz									// 解压后-> xxx

tar 解压参数
-z 解压gz文件
-j 解压bz2文件
-J 解压xz文件

5. 进程管理工具

查询正在运行的进程

ps -ef									// 查询所有进程
ps -ef|prep root						// 查询root用户的进程

pgrep -l ba								// 查询含有ba关键字的进程->查询进程ID(适合只记得部分进程字段)

ps -ajx									// 查看所有信息的完整信息

top										// 实时查看进程信息 实时更新

查看端口占用情况

lsof -i:3306 							// 查看3306的端口占用情况

查看用户username的进程所打开的文件

lsof -u username

利用进程名 查看进程使用的文件

lsof -c mysql							// 查看mysql进程占用的文件

利用pid 查看进程使用的文件

ls -i 22								// 查询占用22号端口的进程
lsof -p 774								// 根据进程pid号774查询 文件使用情况

查询制定文件夹内文件夹的使用进程

lsof +d ./								// 查询当前文件夹内的文件使用情况(进程信息)

结束进程

lsof -c NAME							// 查询进程的pid
kill PID								// 结束PID进程

(1) CTRL+Z挂起进程并放入后台
(2) jobs 显示当前暂停的进程
(3) bg %N 使第N个任务在后台运行(%前有空格)
(4) fg %N 使第N个任务在前台运行
默认bg,fg不带%N时表示对最后一个进程操作!
动态查看-top
P:根据CPU使用百分比大小进行排序。
M:根据驻留内存大小进行排序。
i:使top不显示任何闲置或者僵死进程。

top 									// top之后按下p/m/i

6. 性能监控

监控cpu

sat -u 1 2								// 查看cpu使用情况, 一秒钟采样两次, ubuntu没有sar需要安装
vmstart 1 2								// 和上面等效

查看内存

free									// 硬盘使用情况
free -m									// 内存使用情况

7. 网络工具

查询网络服务和端口

netstat -a								// 查看所有端口
netstat -at								// 列出所有tcp端口
netstat -au								// 列出所有udp端口

列出所有监听的服务 - netstat -x
[ netstat ]
-a 显示所有连接和侦听端口,默认不显示LISTEN相关
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。在此情况下,可执行程序的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在你没有足够权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项结合使用。

-i 显示网络接口列表
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。
interval 重新显示选定的统计信息,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计信息。如果省略,则 netstat 将打印当前的配置信息一次。
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-c 每隔一个固定时间,执行该netstat命令,netstat 将每隔一秒输出网络信息。

netstat -l								// 列出所有监听的服务

8. 用户管理工具

添加用户

useradd -m xxx							// 添加xxx用户, 单独的添加,没有任何权限 以及密码

用户切换

su xxx									// 切换xxx用户
su root									// 切换root用户

删除用户

userdel -r xxx							// 删除用户xxx
lsof -u xxx								// 查询xxx用户PID 
kill -9 PID								// 用户无法删除,显示进程占用, 先结束进程, 然后重新删除用户

权限管理
使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式

分组

  • u:用户
  • g:组
  • o:其它用户
  • a:所有用户

权限

  • r:读
  • w:写
  • x:执行
    数字方式:

数字方式直接设置所有权限,相比字母方式,更加简洁方便;

使用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。

chmod a+x FILE							// 对FILE文件的所用户添加可执行程序
chmod g+x FILE							// 对组用户添加可执行权限
chmod 777 FILE							// 所有权限打开

修改拥有者

chown USER File							// 修改拥有者
chown -R USER FILE						// 递归所有文件夹修改拥有者

环境变量

bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。

全局用户
bashrc(不登录) / profile(登录)bashrc (不登录) / profile (登录)

/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile ~/.bashrc用户目录下的私有环境变量设定

全局用户
/etc/profile,/etc/bashrc~/.profile ~/.bashrc

当登入系统获得一个shell进程时,其读取环境设置脚本分为三步:

首先读入的是全局环境变量设置文件/etc/profile,然后根据其内容读取额外的文档,如/etc/profile.d和/etc/inputrc
读取当前登录用户Home目录下的文件/.bash_profile,其次读取/.bash_login,最后读取~/.profile,这三个文档设定基本上是一样的,读取有优先关系
读取~/.bashrc
/.profile与/.bashrc的区别:

这两者都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次

9. 系统管理及IPC资源管理

查看cpu信息

cat /etc/cpuinfo							// 查看cpu信息

查看内存信息

cat /etc/meminfo							// 查看内存信息

查看cpu架构

arch										// 查案CPU架构

ipcs资源查询

ipcs	

参考:
https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/03_text_processing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值