sh_config.sh 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. # ssh 配置
  2. alias ssh-tianyunperfect='ssh -i ~/.ssh/tianyun.pem root@www.tianyunperfect.cn'
  3. alias ssh-yizhi='ssh -i ~/.ssh/yizhi.pem root@www.yizhigj.com'
  4. # 快捷命令
  5. ## 未分类
  6. alias ll='ls -alh --time-style="+%Y-%m-%d %H:%I:%S"'
  7. #du -sh * 2>/dev/null | sort -hr
  8. alias du-sh='du -sh * 2>/dev/null | sort -hr'
  9. alias sourcevenv='source venv/bin/activate'
  10. alias notify='function _notify() { osascript -e "display notification \"$1\""; }; _notify'
  11. alias weather='curl wttr.in/beijing'
  12. alias dust1='dust -d 1'
  13. function gittagpush() {
  14. if [ $# -ne 2 ]; then
  15. echo "需要两个参数: <变量1> <变量2>"
  16. return 1
  17. fi
  18. git tag -a $1 -m "$2"
  19. git push origin $1
  20. }
  21. alias gittags='git --no-pager tag -l -n'
  22. function reloadrc() {
  23. if [[ "$0" =~ "zsh" ]]
  24. then
  25. source ~/.zshrc
  26. else
  27. source ~/.bashrc
  28. fi
  29. }
  30. ## k8s
  31. function k8s-getnamespace() {
  32. kubectl config view | grep namespace
  33. }
  34. function k8s-setnamespace() {
  35. k8s-getnamespace
  36. kubectl config set-context --current --namespace="$1"
  37. }
  38. function k8s-getpod() {
  39. k8s-getnamespace
  40. # 如果有参数,则过滤
  41. if [ ! -z "$1" ]; then
  42. kubectl get pods -o wide | grep "$1"
  43. else
  44. kubectl get pods -o wide
  45. fi
  46. }
  47. alias k8s-descpods='kubectl describe pods'
  48. function k8s-getlog() {
  49. k8s-getnamespace
  50. podName=$(kubectl get pods -o wide | grep "${1}" | awk '{print $1}')
  51. kubectl logs --tail=300 -f "${podName}"
  52. }
  53. alias k8s-delpod='kubectl delete pod ${1} --force'
  54. function k8s-inpod() {
  55. k8s-getnamespace
  56. podName=$(kubectl get pods -o wide | grep "${1}" | awk '{print $1}')
  57. kubectl exec -it "${podName}" -- /bin/bash
  58. }
  59. alias k8s-topnodes='kubectl top node ${1}'
  60. alias k8s-toppods='kubectl top pod ${1}'
  61. alias k8s-getsvc='kubectl get svc'
  62. alias k8s-descsvc='kubectl describe svc'
  63. alias k8s-deldeployment='kubectl delete deployment'
  64. alias k8s-getdeployment='kubectl get deployment'
  65. alias k8s-descdeployment='kubectl describe deployment'
  66. alias k8s-getdeploymentgrep='kubectl get deployment | grep'
  67. alias k8s-getingress='kubectl get ingress'
  68. alias k8s-descingress='kubectl describe ingress'
  69. alias k8s-getingressgrep='kubectl get ingress | grep'
  70. ## docker
  71. alias docker-rm-all-image='docker rmi $(docker images -q)'
  72. alias docker-rm-all-docker='docker rm $(docker ps -a -q)'
  73. alias docker-show-image-prune='docker image ls -f dangling=true'
  74. alias docker-image-prune='docker image prune -a'
  75. alias dkstats='docker stats'
  76. alias dkps='docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"'
  77. alias dkpsa='docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"'
  78. alias dkrm='docker rm -f $1'
  79. alias dkrmi='docker rmi -f $1'
  80. alias dkimage='docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"'
  81. alias dkip='docker inspect --format="{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" $(docker ps -aq)'
  82. alias dkin='docker exec -it $1 /bin/bash'
  83. alias dklog='docker logs -n 300 -f $1'
  84. alias dkinspect='docker inspect $1'
  85. ## go
  86. alias gobuildwinexe='GOOS=windows GOARCH=amd64 go build -o $1.exe $1.go'
  87. alias gobuildlinuxexe='GOOS=linux GOARCH=amd64 go build -o $1 $1.go'
  88. alias gobuildmacexe='GOOS=darwin GOARCH=amd64 go build -o $1 $1.go'
  89. ## version
  90. alias pythonversion='python --version'
  91. alias javaversion='java -version'
  92. alias nodeversion='node -v'
  93. alias centosversion='cat /etc/os-release'
  94. alias ubuntuversion='cat /etc/lsb-release'
  95. alias goversion='go version'
  96. ## ip查看
  97. alias ipremote='curl cip.cc'
  98. function iplocal() {
  99. # 如果是mac 过滤 en0,如果是linux 过滤 eth0
  100. if [[ "$OSTYPE" == "darwin"* ]]; then
  101. ifconfig en0 | grep inet | grep -v inet6
  102. else
  103. ifconfig eth0 | grep inet | grep -v inet6
  104. fi
  105. }
  106. ## 进程相关
  107. alias psgrep='ps aux | grep -v grep | grep'
  108. alias killport='kill -9 $(lsof -t -i:$1)'
  109. alias ps-mem-top6='ps aux --sort=-%mem | awk '\''{print $2, $11, $4, $6/1024 "MB"}'\'' | head -n 6'
  110. # node
  111. alias npminstall='npm install -g --registry=https://registry.npmmirror.com '
  112. # python
  113. alias pipinstall='pip install $1 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com'
  114. # 文件查找相关
  115. function findByName() {
  116. local pattern=$1
  117. find . -name "*$pattern*"
  118. }
  119. function findByContent() {
  120. local pattern=$2
  121. local dir=$1
  122. find $dir -type f -exec grep -l "$pattern" {} +
  123. }
  124. # 备份
  125. function tar_back()
  126. {
  127. time=$(date "+%Y-%m-%d_%H_%M_%S")
  128. tar -zcvf "${1}".${time}.tgz "$1"
  129. ll -h ${1}.${time}.tgz
  130. }
  131. pid-cmd-centos(){
  132. sudo ls -l /proc/$1/cwd | awk '{print $11}'
  133. sudo cat /proc/$1/cmdline
  134. echo ''
  135. }
  136. pid-cmd-ubuntu() {
  137. ls -l /proc/"$1"/cwd | awk '{print $11}'
  138. tr '\0' ' ' </proc/"$1"/cmdline; echo ""
  139. }
  140. function echo-arthas-install() {
  141. echo '
  142. # 判断是否存在 ~/arthas-boot.jar,如果不存在则下载
  143. if [ ! -f ~/arthas-boot.jar ]; then
  144. ( cd ~ && curl -O https://arthas.aliyun.com/arthas-boot.jar )
  145. fi
  146. # 判断是否在k8s里面
  147. if [[ ! -z "$KUBERNETES_SERVICE_HOST" && ! -z "$KUBERNETES_SERVICE_PORT" ]]; then
  148. echo "Running in Kubernetes environment"
  149. java -jar ~/arthas-boot.jar 1 --options json-format=true
  150. else
  151. echo "Not running in Kubernetes environment"
  152. java -jar ~/arthas-boot.jar --options json-format=true
  153. fi
  154. '
  155. }
  156. alias cparthas='echo-arthas-install | pbcopy'
  157. function curl-form() {
  158. curl -d "$2" "$1"
  159. }
  160. function watch-cpudiskmemory() {
  161. watch -n 1 '
  162. echo "===CPU占用摘要:"
  163. top -bn 1 -i -c | grep Cpu
  164. echo "
  165. ===内存占用摘要:"
  166. free -h
  167. echo "
  168. ===磁盘占用摘要:"
  169. df -h /'
  170. }
  171. #123
  172. function vimrc() {
  173. if [[ "$SHELL" =~ "zsh" ]]
  174. then
  175. code ~/.zshrc
  176. else
  177. code ~/.bashrc
  178. fi
  179. }
  180. merge_video_audio() {
  181. if [ "$#" -ne 3 ]; then
  182. echo "错误:参数数量不正确!"
  183. echo "用法:merge_video_audio video.mp4 audio.mp3 output.mp4"
  184. return 1
  185. fi
  186. ffmpeg -i "$1" -i "$2" -c:v copy -c:a copy "$3"
  187. }
  188. rm-all() {
  189. find . -name $1 | xargs -I {} rm -rf {}
  190. }
  191. ### mysql
  192. function echo-mysql-tables() {
  193. echo 'SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema = DATABASE();'
  194. }
  195. function echo-mysql-table-size() {
  196. echo 'select table_name,concat(round(sum(DATA_LENGTH/1024/1024),2),"MB") as data from information_schema.TABLES where table_schema =(SELECT DATABASE()) group by table_name;'
  197. }
  198. function echo-mysql-db-size() {
  199. echo 'select table_schema,concat(round(sum(DATA_LENGTH/1024/1024),2),"MB") as data from information_schema.TABLES where table_schema not in ("information_schema","mysql","performance_schema","sys") group by table_schema;'
  200. }
  201. function echo-npm() {
  202. echo '
  203. npm i webpack # 在module文件中安装
  204. npm i webpack -S # --save 常用,添加到package
  205. npm i webpack -D # --save-dev
  206. npm i webpack -g --registry=https://registry.npmmirror.com # 全局
  207. npm un webpack -g
  208. yarn add react
  209. yarn remove react
  210. yarn global add umi
  211. '
  212. }
  213. concat_params() {
  214. # 获取传入的参数个数
  215. num_params=$#
  216. # 判断参数个数是否大于等于1
  217. if [ $num_params -ge 1 ]; then
  218. # 使用循环遍历参数,并拼接在一起
  219. concat_str="$1"
  220. for ((i=2; i<=$num_params; i++)); do
  221. concat_str+="%20${!i}"
  222. done
  223. # 打印拼接后的字符串
  224. echo "$concat_str"
  225. else
  226. echo "没有传入参数"
  227. fi
  228. }
  229. function url_encode() {
  230. echo "$1" | sed 's/ /%20/g'
  231. }
  232. function bing() {
  233. ## 如果是windows系统,则使用start,否则使用open,后面的参数可以有多个空格
  234. if [[ "$OSTYPE" == "msys"* ]]; then
  235. search_query=$(concat_params "$@")
  236. start "https://www.bing.com/search?q=$search_query"
  237. else
  238. search_query=""
  239. for query in "$@"; do
  240. search_query+=" $query"
  241. done
  242. search_query=$(url_encode "$search_query")
  243. open "https://www.bing.com/search?q=${search_query}"
  244. fi
  245. }
  246. function mvn_clean_package() {
  247. mvn clean package -Dmaven.test.skip=true
  248. }
  249. ## ska快捷
  250. function ska_push_dev(){
  251. skaffold run -p dev --tail
  252. }
  253. function mvn_push_dev(){
  254. mvn_clean_package
  255. ska_push_dev
  256. }
  257. function mvn_push_test() {
  258. mvn_clean_package
  259. skaffold build -p test -n aimptest
  260. }
  261. function mvn_clean_deploy() {
  262. mvn clean deploy -Dmaven.test.skip=true
  263. }
  264. memo() {
  265. # 获取传入的参数
  266. updatedContent=$*
  267. # 转义特殊字符
  268. # escapedContent=$(echo -n "$updatedContent" | jq -sRr @uri)
  269. # 构建请求体数据
  270. # data="{\"content\": \"$escapedContent\"}"
  271. # 构建请求体数据
  272. data="{\"content\": \"$updatedContent\"}"
  273. # 发送请求
  274. response=$(curl -s -X POST -H "Content-Type: application/json" \
  275. -H "Authorization: bearer eyJhbGciOiJIUzI1NiIsImtpZCI6InYxIiwidHlwIjoiSldUIn0.eyJuYW1lIjoidGlhbnl1bnBlcmZlY3QiLCJpc3MiOiJtZW1vcyIsInN1YiI6IjEiLCJhdWQiOlsidXNlci5hY2Nlc3MtdG9rZW4iXSwiaWF0IjoxNzA5MTc5NTUyfQ.LFxWB4efya1sL7VoJ42xpXxbAip-udT_Kx2OwZ8Y3-E" \
  276. -d "$data" \
  277. "https://memos.tianyunperfect.cn/api/v1/memo")
  278. # 判断是否存在name字段
  279. if [[ $response == *"name"* ]]; then
  280. echo "记录成功 https://memos.tianyunperfect.cn"
  281. else
  282. echo "失败" $response
  283. fi
  284. }
  285. todo(){
  286. memo "#todo $*"
  287. }
  288. function upload_file() {
  289. file_path=$1
  290. if [ -z "$file_path" ]; then
  291. echo "Error: file_path is empty!"
  292. return 1
  293. fi
  294. if [ ! -f "$file_path" ]; then
  295. echo "Error: file not exist!"
  296. return 1
  297. fi
  298. oss_path=$2
  299. # 如果没有传入oss路径,则
  300. if [ -z "$oss_path" ]; then
  301. oss_path="file"
  302. fi
  303. curl -k -X POST -F "file=@$file_path" -F "oss_path=$oss_path" https://web_history.tianyunperfect.cn/oss/upload_file
  304. file_name=$(basename "$file_path")
  305. echo ''
  306. echo "https://alist.tianyunperfect.cn/oss_gang/$oss_path/$file_name"
  307. echo "https://tianyunperfect.oss-cn-hongkong.aliyuncs.com/$oss_path/$file_name"
  308. }
  309. function show_all_local_ip(){
  310. arp -a
  311. }
  312. alias nodels='fnm ls'
  313. alias nodeuse='fnm use'
  314. alias nodeinstall='fnm install'
  315. alias nodelsremote='fnm ls-remote'
  316. alias nodeuninstall='fnm uninstall'
  317. alias catnodeversion='node --version > .node-version'
  318. alias yarnglobaladd='yarn global add'
  319. alias yarnglobalremove='yarn global remove'
  320. alias yarnadd='yarn add'
  321. alias yarnremove='yarn remove'
  322. alias yarninstall='yarn install'