前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux_shell脚本编程

Linux_shell脚本编程

原创
作者头像
大胖橘
发布2023-04-07 21:03:42
6650
发布2023-04-07 21:03:42
举报
文章被收录于专栏:R语言 / LinuxR语言 / Linux

Linux_shell脚本编程

1 vim编辑器
代码语言:javascript
复制
vim file1    #打开文件
i            #按 i 进入inssert模式
echo "Hi"
             #按esc退出
             #按 :进入末行模式
             #按 wq 退出
代码语言:javascript
复制
bash file1     #用bash执行这个文件,bash是一个命令,file1这个文件就称为shell脚本。
2 shell 脚本

(1)shell 脚本:为了和普通文本文件区分开,通常shell脚本都会以 .sh 为后缀名(不写.sh也可以执行,能否执行取决于文件里面写了什么样的代码以及用什么解释器进行解释。)

更标准的情况,在shell脚本的第一行写上 #!/bin/bash。脚本首行的 #! 是Linux的shebang符号,指定解释器。

(2)其他脚本:在Linux中使用其他编程语言,需要在 shebang(释伴) 中定义解释器,Python 是 python/python2/python3, R 语言是 Rscript,用 which 命令找到解释器位置。

shebang扩展:如何解决不同的平台或者不同的设备下的差异?

shebang的通用写法:

#!/usr/bin/env bash

#!/usr/bin/env python

#!/usr/bin/env Rscript

env的位置相对固定, 让env去调用当前环境下的编译器。

(3)Shell 脚本:修改shell脚本的文件权限后,可以直接通过路径调用(即充当command的作用)。

补充一个权限问题:

代码语言:javascript
复制
drwxrwxrwx    #d代表文件类型,l代表链接文件,-代表普通文件, r:4可读;w:2可写;x:1可执行。第一个rwx表示自己的权限,第二个rwx表示同组的权限,第三个rwx表示其他人的权限。

(4)参数传递

代码语言:javascript
复制
#首先编辑一个脚本
vim test.sh
i
#!usr/bin/env bash
cat $1
:
wq
​
#然后执行
bash test.sh readme.txt      #readme.txt这个文件是可以变的。

(5)脚本提交

代码语言:javascript
复制
cat test.sh
bash test.sh readme.txt 1>test.log 2>&1     # 进行分开重定向,正确与错误分别进入两个log文件。1:标准输出流 2:标准误输出流。  log文件是日志文件,命名可以自行更改。
任务提交
代码语言:javascript
复制
 nohup :不要挂断任务,即把任务提交到服务器上运行
 & :任务后台运行,通常与 nohup 连用
 top :实时显示系统中各个进程的资源占用状况,按 q 退出
 htop :优化过的 top 命令,界面更美观
 ps :Process Status列出当前系统中运行的进程列表, 一般加上–ef参数,搭配grep进行搜索:ps –ef | grep 用户名
 kill :杀掉进程,kill -9 PID
代码语言:javascript
复制
vim test3.sh
i
echo "start"
​
for i in {1..500}
do
  echo ${i}
  sleep 3s
done
esc
:wq
代码语言:javascript
复制
bash test3.sh
代码语言:javascript
复制
nohup bash test3.sh &   #将其提交到服务器   &可以单独使用,单独使用是挂在当前窗口的后台。
htop -u Jan211   #看自己的后台任务

查看命令的运行情况

代码语言:javascript
复制
用tail浮动查看输出结果
  • tail -f <log file>
用less的浮动查看
  • less <log file> → shift+F
• 用top或者htop进行监视
  top/htop 或者 top | grep ‘$ LOGNAME’

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux_shell脚本编程
    • 1 vim编辑器
      • 2 shell 脚本
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档