ls -l | awk '$9 ~ /core/ {print $9;}'命令解释

本文详细介绍了在Ubuntu系统中使用ls命令进行目录与文件管理,包括如何使用awk命令筛选特定文件,理解输出信息及执行相关操作。

ubuntu:~> ls -l
total 4600
-rwxrwxrwx 1 dev dev 24510464 Nov 16 03:12 core
drwxrwxrwx 3 dev dev     4096 Jun 26 02:52 Desktop
drwxrwxrwx 2 dev dev     4096 Jun 29 17:47 Documents
drwxrwxrwx 2 dev dev     4096 May  7  2013 Downloads
-rwxrwxrwx 1 dev dev     8445 May  7  2013 examples.desktop
drwxrwxrwx 2 dev dev     4096 May  7  2013 Music
drwxrwxrwx 3 dev dev     4096 Aug 24 17:08 Pictures
drwxrwxrwx 2 dev dev     4096 May  7  2013 Public
drwxrwxrwx 3 dev dev     4096 Dec 19  2013 pwSDK
drwxr-xr-x 2 dev dev     4096 May  7  2013 Templates
drwxr-xr-x 2 dev dev     4096 May  7  2013 Videos
drwxrwxr-x 6 dev dev     4096 Nov 16 21:34 workspace
ubuntu:~> ls -l | awk '$9 ~ /core/ {print $9;}'
core

ls -l | awk '$9 ~ /core/ {print $9;}'命令解释

后面awk命令的意思是$9要匹配core才会打印$9.

#!/bin/bash set -o errexit set -o pipefail source $(dirname $0)/../common.sh &>/dev/null source $(dirname $0)/../config.sh &>/dev/null source $(dirname $0)/../env.sh &>/dev/null SERVERS=$(echo ${MASTERS},${NODES},${APPNODES}) port_mapping ${SERVERS} SERVERS=$(echo ${SERVERS}| tr &#39;,&#39; &#39;\n&#39;|sed "/^$/d"| awk -F&#39;:&#39; &#39;{print $1}&#39;| tr &#39;\n&#39; &#39;,&#39;| sed &#39;s/,\+$//g&#39;) SERVER_PORT=22 masters="" nodes="" arr=(${SERVERS//,/ }) len=${#arr[@]} if [ "$(getArch)"x = "aarch64"x ];then mkdir -p /etc/docker cp $(dirname $0)/config/daemon.json /etc/docker bash -x $(dirname $0)/k8s_install_on_arm.sh 2>&1 |tee >(logger -t "supos") exit 0 fi echo -e "\033[32mServers ${SERVERS}. \033[0m "|tee >(logger -t "supos") if [ $(($(echo ${MASTERS}| sed &#39;s/,/ /g&#39; | wc -w)%2)) -eq 0 ];then echo -e "\033[31mK8s master NOT support even ${MASTERS}. \033[0m "|tee >(logger -t "supos") exit 1 fi masters=$(echo ${MASTERS}| sed &#39;s/,\+$//g&#39;) masters=$(echo ${masters}| tr &#39;,&#39; &#39;\n&#39;|sed "/^$/d"| awk -F&#39;:&#39; &#39;{print $1}&#39;| tr &#39;\n&#39; &#39;,&#39;| sed &#39;s/,\+$//g&#39;) nodes=$(echo ${NODES},${APPNODES} | sed -e &#39;s/,\+$//g&#39; -e &#39;s/^,\+//g&#39;) nodes=$(echo ${nodes}| tr &#39;,&#39; &#39;\n&#39;|sed "/^$/d"| awk -F&#39;:&#39; &#39;{print $1}&#39;| tr &#39;\n&#39; &#39;,&#39;| sed &#39;s/,\+$//g&#39;) if ! type docker &>/dev/null; then echo -e "\033[32m Install docker on localhost. \033[0m "|tee >(logger -t "supos") cp $(dirname $0)/../../debs/sealos/kube1.18.0.tar.gz /root/; tar xvf /root/kube1.18.0.tar.gz -C /root/ cp $(dirname $0)/../../debs/docker/docker-23.0.1.tgz /root/kube/docker/docker.tgz cp $(dirname $0)/config/ops/docker.sh /root/kube/shell/docker.sh cp $(dirname $0)/config/init.sh /root/kube/shell/init.sh cd /root/kube/shell/ && sh docker.sh /volumes/docker;cd -; if [ -n "${BIP_CIDR}" ];then [ -e /lib/systemd/system/docker.service ] && sed -i "/ExecStart=/c\ExecStart=/usr/bin/dockerd --bip ${BIP_CIDR}" /lib/systemd/system/docker.service || true [ -e /usr/lib/systemd/system/docker.service ] && sed -i "/ExecStart=/c\ExecStart=/usr/bin/dockerd --bip ${BIP_CIDR}" /usr/lib/systemd/system/docker.service || true systemctl daemon-reload;systemctl restart docker fi fi if ! systemctl is-active docker;then systemctl start docker || { echo -e "\033[31mStart docker failed. \033[0m\n" && exit 2; } fi echo -e "\033[32m Install k8s cluster with masters ${masters} nodes ${nodes}. \033[0m "|tee >(logger -t "supos") if type kubectl > /dev/null 2>&1 ; then if systemctl list-unit-files | grep "^kubelet.service"; then systemctl restart kubelet fi retrycmd_if_failure 60 10 30 kubectl get cs 2>/dev/null && { echo -e "\033[32m Skip install k8s. \033[0m "|tee >(logger -t "supos"); }|| { echo -e "\033[32m Already running kubelet, but kubernetes NOT health, retry install after fix it. \033[0m "|tee >(logger -t "supos") && exit 2; } else if [ "TSDB_SELECTION"x = ""x ];then sed -i "/TSDB_SELECTION=/c\TSDB_SELECTION=&#39;vxbase&#39;" $(dirname $0)/../env.sh fi for server in $(echo ${SERVERS}| sed &#39;s/,/ /g&#39;); do scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/../../debs/sealos/kube1.18.0.tar.gz ${SERVER_USER}@${server}:/root/ ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} tar xvf /root/kube1.18.0.tar.gz scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/../../debs/docker/docker-23.0.1.tgz ${SERVER_USER}@${server}:/root/kube/docker/docker.tgz scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/docker.sh ${SERVER_USER}@${server}:/root/kube/shell/docker.sh scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/init.sh ${SERVER_USER}@${server}:/root/kube/shell/init.sh ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "[ type docker &>/dev/null ] || { cd /root/kube/shell/ && sh docker.sh /volumes/docker; }" if [ -n "${BIP_CIDR}" ];then if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "[ -e /lib/systemd/system/docker.service ]";then ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "sed -i &#39;/ExecStart=/c\ExecStart=/usr/bin/dockerd --bip ${BIP_CIDR}&#39; /lib/systemd/system/docker.service" fi if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "[ -e /usr/lib/systemd/system/docker.service ]";then ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "sed -i &#39;/ExecStart=/c\ExecStart=/usr/bin/dockerd --bip ${BIP_CIDR}&#39; /usr/lib/systemd/system/docker.service" fi ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "systemctl daemon-reload;systemctl restart docker" fi ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "mkdir -p /etc/sysconfig/" if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "[ -d /var/lib/kubelet ]";then scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/kubelet-3.5 ${SERVER_USER}@${server}:/etc/sysconfig/kubelet else scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/kubelet ${SERVER_USER}@${server}:/etc/sysconfig/kubelet fi done chmod +x $(dirname $0)/../../debs/sealos/sealos && cp $(dirname $0)/../../debs/sealos/sealos /usr/local/bin/ && cd $(dirname $0)/../../debs/sealos/ HOME=/root ./sealos init --kubeadm-config $(pwd)/kubeadm-config.yaml.tmpl --master $(echo ${masters}| sed &#39;s/,/ --master /g&#39;) $([ "${nodes}"x != ""x ] && echo "--node $(echo ${nodes}| sed &#39;s/,/ --node /g&#39;)") --pk /root/.ssh/id_rsa --user ${SERVER_USER} --version v1.18.0 --vip ${VIP_ADDRESS} --podcidr ${POD_CIDR} --svccidr ${SVC_CIDR} --pkg-url=$(pwd)/kube1.18.0.tar.gz 2>&1 |tee >(logger -t "supos") cd - fi tmplfile=$(cat $(dirname $0)/config/kube-controller-manager.yaml.tmpl) eval "cat <<EOF $tmplfile EOF" > $(dirname $0)/config/kube-controller-manager.yaml tmplfile=$(cat $(dirname $0)/config/kube-scheduler.yaml.tmpl) eval "cat <<EOF $tmplfile EOF" > $(dirname $0)/config/kube-scheduler.yaml if [ ${len} -eq 1 ] && echo $(get_default_ip) |grep -E "$(echo ${SERVERS}| sed &#39;s/,/|/g&#39;| sed &#39;s/|*$//g&#39;)"; then mkdir -p /etc/kubernetes/manifests/ cp $(dirname $0)/config/etcd.yaml /etc/kubernetes/manifests/etcd.yaml selfIP=$(echo ${SERVERS}|cut -d&#39;,&#39; -f1) tmplfile=$(cat $(dirname $0)/config/kube-apiserver.yaml.tmpl) eval "cat <<EOF $tmplfile EOF" > $(dirname $0)/config/kube-apiserver.yaml cp $(dirname $0)/config/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml if [ -f "$(dirname $0)/config/kube-controller-manager.yaml" ]; then echo -e "\033[32m Copy kube-controller-manager.yaml to ${master}. \033[0m "|tee >(logger -t "supos") cp $(dirname $0)/config/kube-controller-manager.yaml /etc/kubernetes/manifests/ fi if [ -f "$(dirname $0)/config/kube-scheduler.yaml" ]; then echo -e "\033[32m Copy kube-scheduler.yaml to ${master}. \033[0m "|tee >(logger -t "supos") cp $(dirname $0)/config/kube-scheduler.yaml /etc/kubernetes/manifests/ fi sed -i &#39;/[[:space:]]apiserver.cluster.local$/d&#39; /etc/hosts echo 127.0.0.1 apiserver.cluster.local >> /etc/hosts else for master in $(echo ${masters}|sed &#39;s/,/ /g&#39;);do if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "[ -e /etc/kubernetes/manifests/etcd.yaml ]";then if ! ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "cat /etc/kubernetes/manifests/etcd.yaml| grep election-timeout";then echo -e "\033[32msed /etc/kubernetes/manifests/etcd.yaml on ${master}. \033[0m "|tee >(logger -t "supos") ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "sed -i &#39;/\- \-\-name=/a\ \- \-\-election\-timeout=15000\n \- \-\-heartbeat-interval=1500&#39; /etc/kubernetes/manifests/etcd.yaml" fi fi if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "[ -e /etc/kubernetes/manifests/kube-apiserver.yaml ]";then if ! ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "cat /etc/kubernetes/manifests/kube-apiserver.yaml| grep PodNodeSelector";then echo -e "\033[32msed /etc/kubernetes/manifests/kube-apiserver.yaml on ${master}. \033[0m "|tee >(logger -t "supos") ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "sed -i &#39;/- --enable-admission-plugins=/c\ - --enable-admission-plugins=NodeRestriction,PodNodeSelector,LimitRanger,NamespaceLifecycle&#39; /etc/kubernetes/manifests/kube-apiserver.yaml" fi fi if [ -f "$(dirname $0)/config/kube-controller-manager.yaml" ]; then echo -e "\033[32m Copy kube-controller-manager.yaml to ${master}. \033[0m "|tee >(logger -t "supos") ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "mkdir -p /etc/kubernetes/manifests/" scp -q -p -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/kube-controller-manager.yaml ${SERVER_USER}@${master}:/etc/kubernetes/manifests/ fi if [ -f "$(dirname $0)/config/kube-scheduler.yaml" ]; then echo -e "\033[32m Copy kube-scheduler.yaml to ${master}. \033[0m "|tee >(logger -t "supos") ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${master} "mkdir -p /etc/kubernetes/manifests/" scp -q -p -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/kube-scheduler.yaml ${SERVER_USER}@${master}:/etc/kubernetes/manifests/ fi scp -q -r -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@$(echo ${SERVERS}|cut -d&#39;,&#39; -f1):/root/.kube /root if ! type kubectl &> /dev/null; then scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@$(echo ${SERVERS}|cut -d&#39;,&#39; -f1):/usr/bin/kubectl /usr/bin fi sed -i &#39;/[[:space:]]apiserver.cluster.local$/d&#39; /etc/hosts echo $(echo ${SERVERS}|cut -d&#39;,&#39; -f1) apiserver.cluster.local >> /etc/hosts done fi for server in $(echo ${SERVERS}| sed &#39;s/,/ /g&#39;); do if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} cat /etc/sysconfig/kubelet |grep /volumes/kubelet ; then ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} systemctl stop kubelet if ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} [ -d /var/lib/kubelet ] ;then ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "if [ -f /var/lib/kubelet/pki/kubelet-client-current.pem ];then pem=\$(readlink -f /var/lib/kubelet/pki/kubelet-client-current.pem) && cp -r /var/lib/kubelet/* /volumes/kubelet/ && rm -f /volumes/kubelet/pki/kubelet-client-current.pem && cp /volumes/kubelet/pki/\${pem##*/} /volumes/kubelet/pki/kubelet-client-current.pem && rm -fr /var/lib/kubelet; fi" fi ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "sed -i &#39;s#/var/lib#/volumes#g&#39; /etc/kubernetes/kubelet.conf" ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "sed -i &#39;s#/var/lib#/volumes#g&#39; /etc/systemd/system/kubelet.service.d/10-kubeadm.conf" fi scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/config/kubelet.service ${SERVER_USER}@${server}:/etc/systemd/system/ if ! ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "docker version -f &#39;{{.Server.Version}}&#39; | grep 23.0.1";then ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} mkdir -p /root/kube/docker scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $(dirname $0)/../../debs/docker/docker-23.0.1.tgz ${SERVER_USER}@${server}:/root/kube/docker/docker.tgz ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} systemctl stop docker ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "systemctl is-active containerd && { systemctl stop containerd; systemctl disable containerd; } || true" ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "systemctl is-active docker.socket && { systemctl stop docker.socket; systemctl disable docker.socket; } || true" ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} "tar --strip-components=1 -xvf /root/kube/docker/docker.tgz -C /usr/bin/" ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} systemctl start docker fi ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} systemctl daemon-reload ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${server} systemctl restart kubelet done if ! docker version -f &#39;{{.Server.Version}}&#39; | grep 23.0.1;then mkdir -p /root/kube/docker cp $(dirname $0)/../../debs/docker/docker-23.0.1.tgz /root/kube/docker/docker.tgz systemctl stop docker systemctl is-active containerd && { systemctl stop containerd; systemctl disable containerd; } || true systemctl is-active docker.socket && { systemctl stop docker.socket; systemctl disable docker.socket; } || true tar --strip-components=1 -xvf /root/kube/docker/docker.tgz -C /usr/bin/ systemctl start docker fi for node in $(echo ${SERVERS}| sed &#39;s/,/ /g&#39;); do ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${node} "systemctl stop kubelet" scp -q -P ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r $(dirname $0)/../../debs/kubelet/kubelet ${SERVER_USER}@${node}:/usr/bin ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${node} "systemctl daemon-reload && systemctl restart kubelet" ssh -q -p ${SERVER_PORT} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SERVER_USER}@${node} "ls /opt/supos/*.tar | xargs -n1 -r docker load -i" done retrycmd_if_failure 60 10 30 kubectl get cs 2>&1 || { echo -e "**\033[31m Timeout to wait kubernetes running. \033[0m\n" && exit 2; } retrycmd_if_failure 60 10 30 kubectl -n kube-system set env ds/kube-proxy DISABLE_HTTP2=true || { echo -e "**\033[31m Config kube-proxy failed. \033[0m\n" && exit 2; } retrycmd_if_failure 60 10 30 kubectl -n kube-system set env deploy/coredns DISABLE_HTTP2=true || { echo -e "**\033[31m Config coredns failed. \033[0m\n" && exit 2; } retrycmd_if_failure 60 10 30 kubectl -n kube-system patch deploy/coredns -p &#39;{"spec":{"template":{"spec":{"nodeSelector":null}}}}&#39; || { echo -e "**\033[31mNodeselector coredns null failed. \033[0m\n" && exit 2; } retrycmd_if_failure 60 10 30 kubectl -n kube-system patch deploy/coredns -p &#39;{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/os": "linux","supos":"true"}}}}}&#39; || { echo -e "**\033[31mNodeselector coredns failed. \033[0m\n" && exit 2; } rm -fr $(dirname $0)/config/calico.yaml cp $(dirname $0)/config/calico.yaml.tmpl $(dirname $0)/config/calico.yaml echo -e "\033[32mreplace pod cidr from 100.64.0.0/10 to ${POD_CIDR}. \033[0m "|tee >(logger -t "supos") sed -i "s#100.64.0.0/10#${POD_CIDR}#g" $(dirname $0)/config/calico.yaml retrycmd_if_failure 60 10 30 kubectl -n kube-system apply -f $(dirname $0)/config/calico.yaml || { echo -e "**\033[31m Update calico failed. \033[0m\n" && exit 2; } 作用
09-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值