linux常用命令

本文详述了Linux系统中的VIM编辑器使用技巧,包括一般模式、编辑模式和命令模式下的各种操作,如复制、粘贴、删除、撤销、查找替换等。此外,还涵盖了文件管理、系统操作、进程管理、壳脚本编写以及一些基础的Linux命令,如文件权限、磁盘空间查看、进程状态监控等。文章旨在帮助用户深入理解和熟练运用Linux系统及VIM编辑器。
摘要由CSDN通过智能技术生成

VIM(文本编辑器)

一般模式

主要用于删除复制粘贴操作

yy:复制本行 y$:从当前光标到本行结束复制 y^:从光标往前到本行开始复制 yw:复制当前单词

dd:删除本行,其余同复制,d$ d^ dw

p:粘贴 u:撤回 x:剪切

shift+x:退格,删除 shift+R 替换模式

shift+$ 行尾 shift+^:一行开头

复制粘贴前面带数字可以选择几行

编辑模式

aio进入

shfit+o跳转到上一行插入

shift+i跳转到行头插入

shift+A跳转到行尾插入

命令模式

输入:进入,主要用于保存,回滚,退出等

set nu:显示行数

set nonu:关闭行数

q:退出 q!:退出不保存 wq:退出保存 w:保存

s/old/new 替换当前行匹配的第一个old为new

s/old/new/g 替换当前行匹配的所有old为new

%s/old/new/g 全文替换old为new

系统操作

setup,更改启动项

sync,手动保存数据,一般在关机前操作

shutdown,关机,定时关机,后面可跟参数,使用shutdown -c取消关机

poweroff,断电

halt,停机但不断电,可用作维护等

reboot,重启

man ls 指令手册

man 后面跟外部指令可以看到指令的详情描述

man -f 跟内部指令,可以看到指令介绍目录,自行进入观看

help+内部命令可以看到帮助,外部命令+ --help可以看到帮助

ctrl+l推界面,不是清屏 clear 同理,reset清屏

which,查看指令在什么路径下

type查看指令类型

文件目录类

查看,创建,删除,复制文件或目录等

pwd,显示当前工作目录的绝对路径

cd,切换工作目录 cd- 切换到上一个路径 cd…/ 切换到同一目录下的同级路径

ls,列举出当前目录下的所有内容 ls-a 显示全部文件包括隐藏文件

ls-l显示文件的详细信息

mkdir 创建文件夹(目录) rmdir,删除文件夹(目录)

mkdir-p 连着目录一块创建,比如a/b/c,创建3个

删除要嵌套删除,比如要删除a/b/c,就要 a/b/c a/b a/ 或者rmdir-p a/b/c 直接删除全部

touch创建一个空文件,vim也能创建,不过vim如果没有内容并且不保存退出变不会存为文件

cp复制 cp a /home/feavzd/ 把A复制到fevzd目录下

复制整个文件夹要用cp -r,递归复制整个文件夹

rm删除文件 rm-f 强制删除,不询问, rm-r 递归删除整个文件夹

删除当前目录下所有内容 rm ./*

mv移动文件 和cp用法相同。后面加上文件名可以做到重命名,也可以直接重命名,不移动 mv a b

查看文件,输出,显示内容

cat 查看文件, -n显示行号 一般查看比较小的文件

more 分屏显示文件内容

less,跟more类似,但功能更强大,可以翻页。搜索,用/向下搜索,?向上搜索,Q退出。搜索结果多个可以按n向下切换,shift+N向上切换

echo,输出内容到控制台 -e 支持反斜杠转译字符比如/n换行

输入内容到文件 >> 和 > 两个是追加,一个是覆盖

head 显示当前文件头部内容 默认是前十行,head -n 5,显示前5行,5可以更改为随意数字

tail 显示当前文件尾部的内容,和head用法相同

tail -f实时追踪该文档的所有更新,可以用来查看日志的更新,适合使用在不断增长的文件上

ln软连接,相当于windows的快捷方式, ln -s 后面加目录

删除软连接可以用rm,不会影响真实链接,但如果使用rm-rf 软连接名/删除,就会直接删除真实地址

ln不加-s便是直接创建硬链接

history,用来查看以及执行过的历史命令,history -c可以清楚历史记录

日期时间类

date显示当前系统时间

date +%Y显示当前年份

date +%m显示当前月份

date +%d显示当前是那一天

date “+%Y-%m-%d-%H:%M:%S” 显示当前年月日,时分秒

date -d’ 1 days ago’ 代表当前日期一天前,数字可以随意更改,附属就是未来的时间

date -s 重新设置当前系统时间 格式"2000-01-01 00:00:00"

cal 显示本月日历 后面加年份会显示那一年的日历

用户管理命令

用户相关操作

su,切换用户,如果切换root需要输入密码

useradd 用户名 新增用户,useradd -g 组名 用户名,添加新用户到某个组

更改密码,passwd 用户名

cat /etc/passwd 查看当前有多少用户

su 切换其他用户

sudo 临时赋予超级权限 etc/sudoers查看超级用户权限

userdel 用户名 删除用户

组相关操作

usermod -g 组名 用户名, 把某个用户移到某个组

groupadd,创建组,cat /etc/group 查看组

-g 手动指定组id,不手动指定则会自增1

groupdel 删除组 groupmop为修改组 -n为重命名组

groupmod -n 新组名 旧组名 重命名组名

比如groupmod -g 7777 -n feavzd destiny,这句就是修改feavzd用户的组id为7777,并把组名修改为destiny

newgrp切换组

文件管理类

文件属性,权限,所有者

文件属性drwxr-xr-x 第一位d代表文件类型,1-3位代表属主权限,分别为读写执行,rwx,4-6位代表属组权限,分别为读写执行,7-9代表其他用户权限,分别为读写执行,如果没有权限就是一个减号-ugoa

chmod改变文件权限 cbmod (ugoa) (±=) (rwx) 目录或者文件名

chown改变文件的所有者 -R递归更改目录下的所有者,chgrp,改变文件的所属组

寻找,定位,过滤,统计文件,管道符

find 查找文件或目录,-name 可以搜索指定名称的文件

-size 指定大小,+10M就是大于10MB的文件

locate定位,使用之前需要更新数据库,updatedb

grep,查找过滤,可以查找文件内的内容,比如

grep -n boot 文件名 就是查找这个文件内带有boot的那一行,一般和管道符配合使用

| 管道符 可以两个命令组合使用,比如ls | grep .cfg 就是把当前目录下带有.cfg后缀的文件显示出来

wc 统计文件,第一个是行数,第二个是单词数量,第三个是所有字节大小

文件的解压和压缩

gzip,压缩文件命令 gzip+文件名

gunzip,解压缩文件命令 gunzip + 文件名.gz

zip 压缩,unzip 解压缩,跟上一个相同,但zip可以保留原文件,并且可以包括目录递归压缩,兼具了打包和压缩的功能 -d为指定解压地点

tar,打包,不做压缩 tar 选项 XXX.tar.gz -c 打包归档,-x解包 -v显示详细信息 -z打包同时压缩,-C解压到指定目录 f指定名称

可以同时使用多个

磁盘和分区类

tree 加目录可以查看目录下的文件,更详细,查看的更多

du 查看文件和目录占用磁盘的情况 -h,以kb,mb,gb单位显示

-a 不仅查看子目录,还要包括文件 -c 显示所有文件和子目录之和后显示总和,-s只显示总和 -sh 查看该路径的总大小

df 查看磁盘剩余空间大小 -h 详细查看

free 查看剩余空间,-h查看详细

lsblk 查看设备挂载情况 -f显示文件系统的相关信息

mount/umount 挂载,卸载

fdisk分区 fdisk -l 查看磁盘分区详情

fdisk 硬盘设备名,对新增硬盘进行分区操作 只能在root用户下使用

进程管理类

查看进程状态

linux进程分为前台显示的进程和后台看不见的正在运行的进程

ps 查看当前进程状态

ps aux | grep xx 查看系统中所有的进程

ps -ef | grep xx 可以查看子父进程的关系

选项

a 列出带有终端的所有用户的进程
x列出当前用户的所有进程,包括没有终端的 
u 面向用户的显示风格
-e 列出所有进程
-f显示完整格式的进程列表
-u 列出某个用户关联的所有进程

aux列出来的信息具体
user:该进程由哪个用户产生 
pid:进程的id号
%cpu该进程占用cpu资源的百分比, %mem该进程占用内存的百分比 stat,进程状态,常见:R运行,S睡眠,T暂停,Z僵尸
s包含子进程,l 多线程 start该进程的启动时间 command,产生此进程的命令名

systemctl + start/stop/restart/staus 服务名

kill 选项 进程号 通过进程号杀死进程 killall 进程名 通过进程名终止进程 -9表示强迫进程立刻停止

pstree 查看进程树 -p显示进程的pid -u显示进程的所属用户

top实时监控系统进程的状态 -d 描述,指定top每隔几秒更新,默认是3秒 -i使top不显示任何闲置或者僵死的进程 -p 通过指定监控进程id来监控某个进程的状态

netstat 显示网络状态和端口占用信息

netstat -anp | grep 进程号 查看该进程的网络信息

netstat -nlp | grep 端口号 查看网络端口号的占用情况

-a  显示所有正在监听和未监听的套接字socket 
-n拒绝显示别名,能显示数字的全部转化为数字 
-l仅列出在监听的服务状态 -p表示显示哪个进程在调用

crontab 系统定时任务

-e编辑定时任务 -l 查询定时任务 -r删除当前用户的所有crontab任务 首先要启动crond

crontab -e 进入 编辑
有五个* 第一个是分钟,0-59 第二个是小时,0-23 第三个是天 1-31 第四个是月1-12 第五个星期几 0-7 0和7都代表周末 
比如一个 * 就代表每分钟都要执行一次 逗号,代表不连续的时间,比如0 9,10,12 * * * * 就代表在每天的9 10 12的0分都要执行一次 
-代表连续的时间范围,比如 0 5 * * 1-6就代表在周一到周六的凌晨5点整执行命令 
*/n代表每隔多久执行一次 比如 */10 * * * *代表每隔10分钟执行一次
比如
*/1 * * * * echo "hello world" >> /root/hello 
就是每隔一分钟吧helloworld写入到root下的hello文件里


RPM软件管理工具

rpm-qa 查询所有已安装的rpm软件包 ,一般都是使用rpm-qa |grep rpm 比如要查询火狐浏览器 rpm -qa | grep firefox

rpm -qi 查询安装软件详细信息 rpm -e 卸载安装包 rpm --nodeps,不检查依赖便卸载软件包 一般不推荐使用

rpm -ivh rpm包全名 -i install 安装功能 -v 显示详细信息 -h 进度条 --nodeps 安装前不检查依赖,不推荐

yum软件包管理器

yum,基于rpm的软件包管理器,可以自动处理依赖关系,一次安装所有依赖的软件包,不用一次次的下载

yum 选项 参数 -y对所有提问都回答yes

install 安装rpm软件包 update更新软件包 check-update检查是否有可用的更新 remove移除指定的软件包 list 显示所有软件包信息 clean清理yum过期的缓存 deplist 显示yum软件包的所有依赖关系

Shell脚本

shell是一个命令行解释器,接收用户和程序的命令,然后调用操作系统内核

可以先创建一个以.sh结尾的文件,然后vim编辑,输入#!/bin/bash 之后输入命令

保存退出后使用sh或者bash +文件相对或者绝对路径打开

比如 sh ./info.sh 或者 bash /home/用户名/info.sh

也可以直接输入绝对路径执行脚本,但要给执行权限

变量

系统预定义变量:$HOME $PWD $USER $SHELL等

自定义变量 例如 info=a 注意中间没有空格,如果要输入带空格的内容可以带引号"" 之后可以echo 加$ 加变量名查看

自定义变量可以由字母数字下户线组成,不能以数字开头,环境变量名建议大写,等号两侧不能有空格

export 变量名升级为全局变量

在脚本里输入echo变量可以输出

变量赋值默认是字符串,如果想要进行计算需要加 符 号 和 两 个 小 括 号 ( ( ) ) 或 者 符号和两个小括号(())或者 加一对中括号[]

readonly a=10则定义该变量为只读变量,不能更改

特殊变量

$n n代表数字,比如$1就代表第一个参数 0 代 表 该 脚 本 名 称 , 10 以 上 的 参 数 需 要 用 大 括 号 , 比 如 0代表该脚本名称,10以上的参数需要用大括号,比如 010{10},主要在脚本里编写,然后在用命令启动脚本时后面跟上参数

$#获取输入参数的个数,常用于循环判断参数的个数是否正确以及加强脚本的健壮性

$* 代表命令行中所有的参数,*把所有的参数看成一个整体

$@ 也代表命令行中所有的参数,不过@把每个参数区分对待

$? 最后一次执行的命令的返回状态,如果这个变量为0,证明上一个命令正确执行,如果这个变量不是0,则证明上一个命令执行不正确,具体返回数字由命令自己决定

expr 计算 要在计算符两边加空格 如果是乘号需要 \ *

直接使用 ( ( ) ) 或 者 (())或者 (())[] 即可 例如在shell脚本里输入

#!/bin/bash

echo Num:$[$1*$2] 然后在外面输入两个数字就能计算出他们的结果


语法条件判断

一般用test condition 加echo $?查看,前者用于查看条件判断,后者用于查看结果,如果是0则正确执行 比如a=100,test $a=100 echo $? 最后结果就是0

或者直接使用中括号[ condition ] 注意括号两边要有空格。这个条件非空即true,如果里面随便写东西也是true,不写东西才是false

常用判断条件

-eq 等于 -ne 不等于 -lt 小于 -le 小于等于 -gt 大于 -ge 大于等于

如果是字符串比较,=判断,!=不等于

按文件权限判断

-r 有读的权限,-w 有写的权限 -x有执行的权限

按文件类型

-e文件存在 -f 文件存在并且是个常规的文件(file) -d文件存在并且是一个目录(directory)

多条件判断,如果是要两个条件都满足可以使用&& 如果其中一个条件满足可以使用 || 比如 [ abc ] && echo ok || echo notok 结果就会输出ok  [   ] && echo ok || echo notok 结果就会输出notok


流程控制

than 和分号;

单分支

if [条件判断式] 
then
    程序
fi
或者 if [条件判断式]; then echo ok; fi

用例1:
a=9
if [ $a -le 10 ]; then echo ok; fi
ok

用例2:
#!/bin/bash
if [ "$1"x = "feavzd"x ]
then
    echo "welcome,feavzd"
fi

之后调用脚本并传入用户名便可,x是为了避免空字符串

多分支的话也可以用之前使用过的&&和 || 如果在一个括号内可以使用-a (and) 和-o (or) 和之前两个用法相同

比如

if [ $a -gt 18 ] && [ $a -lt 40]; then echo ok; fi
这样就是判断他是否大于18并且小于40
如果要用一个中括号完成也可以这样
if [ $a -gt 18 -a $a -lt 40]; then echo ok; fi

如果一条判断两个结果可以使用else

比如
 if [ "$2"x -lt "18"x ]
 then
         echo "未成年人"
 else
         echo "成年人"
 fi
判断传入的第二个参数是否小于18,是就是未成年人,否便是成年人

如果是多分支多判断结果可以使用elif,最后使用else

if [???]
then
	echo ???
elif [???]
then
	echo ???
else
	echo ???
fi

case语句

case $变量 in
"值1")
	如果变量的值等于值1,则执行程序1
;;
"值2")
	如果变量的值等于值2,则执行程序2
*)
	如果变量的值都不是以上的值,则执行此程序
;;
esac
双分号相当于break
最后的 * 相当于是default

for循环

基本语法

for ((初始值;循环控制条件;变量变化))
do
	程序
done

实例
for ((i=1; i<=$1; i++))
do
	sum=$[ $sum+$i ]
done
echo $sum
比如输入的数字是10,则计算1+2+3一直加到10的和

基本语法2

for 变量 in 值1 值2 值3; do echo $变量名 done
会输出值123
比如
for a in aaa bbb ccc; do echo $a; done

也可以使用大括号加省略号
for i in {1..100}; do sum=$[$sum+$i]; done; echo $sum

while循环

while [条件判断式]
do
	程序
done
实例

i=1
while [ $i -le 100 ]
do
	sum=$[$sum+$i]
	i=$[$i+1]
done
echo $sum
也是1-100的和
可以使用let,之后就可以使用java中常用的语言,比如i++,i+=这种

读取控制台输入

read 选项 参数 -p指定读取值时的提示符 -t 指定读取值等待的时间秒,如果不加-t表示一直等待

参数,指定读取值的变量名

read -t 10 -p "请输入姓名:" name
echo "welcome,$name"

自定义函数

函数就是一个轻量级的脚本

脚本就是复杂化的函数

调用函数的地方之前必须先声明,shell脚本是逐行运行,不会像其他语言一样先编译

函数返回值只能通过$?系统变量获得,可以显示加return返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255) 0为成功,1-255表示执行错误

[function] 方法名()
{
	action
	[return int;]
}
实例
function sum(){
	s=$[$1+$2]
	echo "和为"$s 或者 直接echo $s
}
read -p "请输入第一个数字" a
read -p "请输入第二个数字" b
sum $a $b
或者
sum=$(sum $a $b)
echo "和为" $sum

文本处理工具

cut 选项参数 filename -f列号,提取第几行 -d 分隔符,默认是制表符\t -c 按字符进行切割,后加加n表示取第几列,比如-c 1

比如
cut -d "" -f 1 cut.txt 就是提取第一列

awk 可以把文件逐行读入,以空格为默认分隔符把每行切片,切开的部分再进行分析处理,可以同时处理行和列,功能比较强大

-f指定输入文件分隔符 -v赋值一个用户定义变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值