单行注释:#
多行注释::<<! !
cd # 进入家目录
cd ~ # 进入家目录
cd / # 进入根目录
cd - # 返回上一次目录
cd .. # 进入上一级目录
cd ../.. # 进入上上级目录
# 写法一
[命令] &
# 写法二
nohup [命令] &
两种写法都可以,但存在根本上的区别。直接使用 命令 & 推到后台执行后,当前终端窗口断开,那么后台命令自动退出;使用 nohup 命令 & 推到后台,当前终端窗口断开也不会退出。
sleep 10 &
ps u -p 7499
我们执行一个 sleep 命令后会自动被推到后台执行,并显示PID,通过PID可以查询该进程正在运行。
jobs # 查看当前窗口执行的后台命令
fg [id] # 将作业切换到前台
bg [id] # 将作业切换到后台
ls > tmp.log
可以看到,正常情况下 ls 显示了当前目录下的文件/文件夹,但是使用 > 重定向到另一个文件中,则当前终端就不会再显示,而是把输出都放到了 tmp.log 中。
★★★★★
> # 将内容覆盖到文件
>> # 将内容追加到文件
>/dev/null # 将正常的内容输出为空
1>/dev/null # 将正常的内容输出为空
2>/dev/null # 将异常的内容输出为空
&>/dev/null # 将全部内容输出为空(包括正常和异常)
tee [文件] # 将内容覆盖到文件
tee -a [文件] # 将内容追加到文件
!! # 执行上一个命令
!p # 执行上一次以p开头的命令
!20 # 执行历史命令编号为20的命令(使用 history 查看编号)
以 << 开头 + 开始语,最后以开头语一样的字符结尾
<<EOF
注释内容1
注释内容2
注释内容3
EOF
符号 | 解释 |
$$ | 表示当前脚本 PID |
$* | 表示所有的位置参数 |
$@ | 表示所有的位置参数 |
$# | 表示参数个数 |
$? | 返回上一个指令的状态(0表示正常,其他数字表示异常) |
$! | 表示上个后台运行的PID |
$0 | 表示当前脚本名 |
$1 | 表示第1个位置参数 |
$2 | 表示第2个位置参数 |
$n | 表示第n个位置参数 |
at 5pm tomorrow
at date > /root/date100.txt
atq
at now+2 minutes
at date > /root/date100.txt
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --remove-port=111/tcp
firewall-cmd --reload
firewall-cmd --permanent --query-port=111/tcp
telnet
top -d 默认是3秒刷新
:<<!内容!
上面是linux的多行注释
当行注释用的#
#!bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esca
案例 1 :从 1 加到 100 的值输出显示
#!/bin/bash
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$I]
done
echo "sum=$SUM"
#!/bin/bash
sum=0
i=0
while [ $i -le $1 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo "sum=$sum"
function getSum() {
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
read -p "请输入第一个数n1" n1
read -p "请输入第二个数n2" n2
getSum $n1 $n2
cat t.txt | cut -d "/" -f 3 | sort | uniq -c | sort -nr
cat t.txt | awk -F "/" '{print $3}' | sort | uniq -c | sort -nr
//要排序的前两位
cat t.txt | cut -d "/" -f 3 | sort | uniq -c | sort -nr | head -2
cat t.txt | awk -F "/" '{print $3}' | sort | uniq -c | sort -nr | head -2
systemctl list-unit-files | grep "rsyslog"
date "+%Y-%m-%d %H:%M:%S"
2024-05-27 11:17:34
date "+%y-%m-%d %H:%M:%S"
24-05-27 11:17:45
1. 在当前目录及子目录中,查找大写字母开头的txt文件
指令: $ find . -name '[A-Z]*.txt' -print
2.在/etc及其子目录中,查找host开头的文件
指令: $ find /etc -name 'host*' -print
3.在$HOME目录及其子目录中,查找所有文件
指令: $ find ~ -name '*' -print
4. 在当前目录及子目录中,查找不是out开头的txt文件
指令: $ find . -name "out*" -prune -o -name "*.txt" -print
灵活多变,积极沟通,这个社会什么物质都是需要争取的,积极争取就是了!!!
安装docker步骤:
yum -y install yum-utils
systemctl start docker//启动docker
systemctl stop docker //停止docker
systemctl restart docker //重启docker
systemctl enable docker //设置开机自启docker
docker ps
yum makecache fast
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://164cb9j1.mirror.aliyuncs.com"] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
//建立系统自动启动的文件
vi /etc/systemd/system/redis.service
//redis的图形化界面
redis-cli -h 192.168.127.128 -p 6379 -a redis
set class:user:1 '{"id":1,"name":"zhangsan"}'
set class:user:2 '{"id":2,"name":"zhangsanfeng"}'
//求无序数字列表的和并打印无序数字
sort -n a.txt | awk '{sum+=$0; print $0} END {print "和="sum}'
//查询home下面所有的文件统计个数和文件中的行数
find /home -name "*.*" -type f | xargs wc -l
ifconfig ens33 | sed -ne '2s/^.*inet //' -e '2s/ net.*$//p'
ifconfig ens33 | sed -n '2s/^.*inet//p' | cut -d " " -f 2
ifconfig ens33 | sed -n '2p' | awk '{print $2}'
cut命令是以单个空格作为分隔符进行切割的
awk无论是单个还是多个空格进行切割,awk默认就是按照空格切割的
ifconfig ens33 | awk 'NR==2 {print $2}'
上面 'NR==2 {print $2}'中的NR==2和后面不能有空格
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin