shell符号
系统变量$0脚本本身、$?上个命令的执行结果,非0即为有问题、$#参数的个数、${n}表示脚本后面的第n个参数,如果n是个位数,可以省略花括号;$*表示所有参数;$$表示当前进程号
& #以后台的job的形式运行
nohup #不挂断的运行,注意并没有后台运行的功能
$a #取变量a的值
并发:
{command}& #将语句放到后台执行
wait #等待所有执行完毕
Linux目录
/dev/null#一个黑洞,通常用于丢弃不需要的数据输出
Shell变量定义
第一部分,不选择使用#!/bin/bash,目的是为了兼容更多的环境
#!bin/env bash
A=hello#定义变量
echo ${A}
unset A#取消变量
read -p "Input" name # -p 显示用户提示信息 -s 不显示用户提示信息
declare -i整型 -r只读 -x环境变量
export #导入环境变量
$RANDOM 产生一个随机整数
变量分类:本地变量【在当前进程中有效】、环境变量【当前进程有效,且能够被子进程调用】:用env查看当前变量,用set查询当前用户所有变量、用export导入环境变量;所有用户都能够调用,并且继承;
#所有文件修改后,都要通过source或退出重新登录才会生效,读取顺序标注如下:【环境变量优先】
3.$HOME/.bashrc #当前用户的bash信息,用户登录时读取【局部,看在source全局前还是后,决定哪个生效】
2.$HOME/.bash_profile #当前用户的环境变量,用户登录时读取
5.$HOME/.bash_logout #当前用户退出当前shell时读取
4./etc/bashrc #全局配置信息,所有用户都生效【全局】
1./etc/profile #全局环境变量信息
在shell中,点的含义和source是一致的
shell运算
默认情况下,shell只支持简单的整数运算,即整数的加减乘除求余数
#四则运算的四种方式
$((1=1))
$[]
expr 1 + 1 #需要有空格
let 1+3 #不需要有空格
shell条件判断
test条件表达式、[ 条件表达式 ]、[[ 支持正则,支持&& ]]:中括号两边都需要有空格,不然报错
[ ! -f ./file.name ];echo $?
test常用参数:-e:文件存在、-f:文件是否存在且是一个普通文件、-d:是否是一个目录
if [ condition ]; then
command#多条语句,无需封号
command
elif [ condition ]; then
command
else
command
fi
[ condition ] && command1 || command2
for&While循环
for variable in {begin..end..step}#也可以不用花括号
do
command
command
done
#例子
for i in $(seq 10);do echo $(i);done
#不带列表,则为bash后面的全部参数$@
for ((i=1;i<5;i++))#类c风格的循环
do
command
done
while 表达式
do
command...
done
Until 表达式 #条件为假就退出循环
do
command
done
sed
sed是一种有名的流处理器,有命令行模式和脚本模式;
sed -n '1,3p' file.name#打印1到3行
a#每一行的后面插入
i#每一行的前面插入
c#替换
awk语言
awk是一种编程语言,主要用于在linux/unix下对文本和数据进行处理,可以对标准输入,一个和多个文件,或其他命令的输出
awk option 'command' file.name#引用shell变量需要用双引号引起来
-F 定义字段分割符号,默认分割符号是空格
-V 定义变量并赋值
'/root/{awk语句}' sed:'/root/p'
'NR==1,NR==5{awk语句}'
VIM
#查找命令
/关键字 #使用shift+n跳转到上一个,使用n跳转到下一个
shift+g #跳转到文件末尾 gg跳转文件开头
#在命令模式下输入数字跳转到指定行
权限管理
#/etc/sudoer
root ALL=(ALL:ALL) ALL#用户账号,登录者的来源主机名=(可以切换的身份),可执行的命令
user_name ALL=(ALL) NOPASSWD:ALL !/sbin/shutdown,!/bin/rm -rf
#ALL字段指定的用户所在主机,因为用户可能是远程登录的,(ALL)指定的是用户能够以什么样的身份执行sudo,最后一个字段指能够执行的命令,NOPASSWD表示用户使用sudo不需要密码
文本工具
grep
cut -c #以字符为单位分割截取、-d 自定义分隔符、-f 与 -d 一起使用使用,指定截取区域
sort
> #标准输出重定向,默认会覆盖文件内容
>> #重定向追加到文件末尾
|#管道操作符 连接进程,进行进程间通信
tee#从标准输入读取并写入到标准输出文件
diff#用于逐行比较文件不同
paste#用于合并两个文件
tr#用于字符替换、转换和删除;命令的执行结果交给tr处理,其中Str1用于查询,str2用于转换处理【支持正则化】
command|tr str1 str2
tr str1 str2<filename#tr 'a-z' 'A-Z'< file.name tr '0-9' '@'< file.name
tr option str<filename
序列
seq 5#生成1到5的序列
seq -1 10 #生成-1到10的序列
基本语句
双引号内容中可以通过$符号引用其他变量的值,而单引号中禁止引用其他变量的值
touch #轻松创建空文件
cp #复制空文件
mkdir rmdir
rm
tar -zxvf file.tar.gz -C /path/to/
tar -xvf file.tar
unzip file.zip
unrar e file.rar
alias#给命令起别名
crontab#来定期执行程序的命令
wget
curl
file #查看文件类型
watch
head tail
mount #挂载
df #磁盘空间查看
find #最强大的搜索工具
history #查看历史记录
echo $[] #显示环境变量名
xinput;xinput disable 14;
nautilus cd vncviewer Metasploit nmap traceroute
ps -ef|grep XXXX #ps auxf
watch -n 1 nvidia-smi
adduser username;useradd -o -u 0 -g 0 user_name
kill -9 PID
快捷键
ctrl+c#终止前台运行程序
ctrl+z#将前台运行程序挂起到后台
ctrl+l#清屏
ctrl+u#删除光标前所有字符
ctrl+k#删除光标后所有字符
远程:
ssh user@ip_address
ssh-copy-id user@ip_address #拷贝公钥到对面的主机上,如此登入时就不必验证
ssh-keygen
scp username@servername:/path/filename /var/www/local_dir(download file to local_dir)
scp /path/filename username@servername:/path
yum install lrzsz -y
rz
sz
curl
wget
rsync#rsync是可以实现增量备份的工具
ubuntu
疑问:apt-get如果出现有 1 个软件包没有被完全安装或卸载?
因该只能去找/var/lib/dpkg/info 强制删除相关的信息
#apt-get没有search 可以用apt search 代替
vim /etc/apt/sources.list #配置更新源
apt-get update #更新软件列表信息(注意只是更新列表,并未更新程序,后接apt-get upgrade
apt-get upgrade #更新程序
apt-get dist-upgrade #版本升级
apt-get install packagename #安装程序包
apt-get remove packagename #卸载程序
apt-cache search packagename #搜索程序包
apt-get clean #删除所有已下载的包文件
apt-get autoclean #删除已下载的旧包文件
apt-get autoremove #卸载所有自动安装且不再使用的软件包
centos
//7.X
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl start firewalld.service
//6.X
service iptables start
dpkg -i xxxx.debx
yum xxxx.rpm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)