随笔- 23  文章- 0  评论- 0  阅读- 1896 

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
 posted on   春秋流千事  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示