ubuntu 编写shell脚本文件夹_ubuntu如何编写shell脚本 - CSDN
精华内容
参与话题
  • ubuntu 脚本sh编写

    2019-08-02 15:24:31
    常用 # 查看所有环境变量 - 打印环境变量 env echo $PATH export LD_LIBRARY_PATH=$PWD #定义和取消变量 var1="123" unset var1 # 打印系统信息 grep -v "U" 反向不匹配 uname -a ...# 打开文...

    常用

    # 查看所有环境变量 - 打印环境变量
    env
    echo $PATH
    export LD_LIBRARY_PATH=$PWD
     
    #定义和取消变量
    var1="123"
    unset var1
     
    # 打印系统信息 grep -v "U" 反向不匹配
    uname -a
     
    # 账号和密码 - 切换账号 - 设置账号密码
    su root
    su -
    sudo passwd root
     
    # 打开文件管理器 - 切换到用户目录 - 切换到上次访问目录
    cd 
    cd -
    nautilus .
     
    # 目录快速操作 目录入栈 出栈 列出栈目录 切换目录 弹出指定栈中目录
    # + 从左至右 - 从右至左  序号从0开始计数
    pushd .
    popd  
    dirs
    pushd -0
    popd +2
     
    # 查看命令位置
    which git
    

    基本命令详情

    # echo 显示文本
    # -e 激活转义字符,不当字符串输出
    echo "\nHello"
    echo "\nHello\b1"
     
    # yes 重复输出字符串
    yes 
    yes n
     
    # 创建目录和删除文件
    mkdir  dir
    rm -rf dir
     
    # 复制 符号链接+d参数
    # 复制 目录+r参数
    cp -df  libdtypestd.so  ..
    cp -r   skia ..
    

    其他

    # 文件所在目录 相对或者绝对路径
    aa=`dirname $0`
     
    # 执行脚本文件名
    aa=`dirname $0 .sh`
     
    # 执行脚本文件名(加后缀)
    aa=`dirname $0`
     
    # 标准获取脚本所在绝对目录
    # 直接执行脚本,启动另一个shell,初始化$0,如$0为./build/copy_std.sh
    build_dir=$(cd $(dirname $0);pwd) 
    # 即使在source *.sh也正常,source并不会另起一个新的shell进程,推荐写法
    build_dir=$(cd $(dirname ${BASH_SOURCE[0]});pwd) 
    

    控制语句

    分支控制if

    # 单分支 
    a=4
    if [ $a -eq 4 ]
    then
       echo "4 == 4"
    fi
     
    # 双分支
    # -e 文件存在
    # -d 是否为目录
    # -r 可读 -w 可写 -x 可执行
    # 注意[]内部两边有空格
    if [ ! -e TextEngineLib ];then
        echo "TextEngineLib not exist"
    else
        echo "TextEngineLib exist "
    fi
     
    # 多分支
    if [];then
       echo "1"
    elif [];then
       echo "2"
    else
       echo "3"
    fi
    

    循环控制for

    # 执行6次循环
    for((i=0;i<6;++i))
    do
        echo $i
    done
    # 另一种方式
    for i in {2..7}
    do
        echo $i
    done
     
    # 给定列表循环
    for file in a.so b.so c.so 
    do 
        echo $file 
    done 
     
    # 文件
    for file in *.txt
    do 
        echo $file
    done
    # 
    for file in `ls *.txt`
    do 
        echo $file
    done
    

    常见脚本写法

    获取运行目录,脚本目录,上级目录

    #!/bin/bash
    run_dir=${PWD} 
    build_dir=$(cd $(dirname ${BASH_SOURCE[0]});pwd) 
    cd ${build_dir}/.. 
    root_dir=${PWD} 
    echo $run_dir 
    echo $build_dir 
    echo $root_dir 
    cd $run_dir 
    

    原文:https://blog.csdn.net/dadan1314/article/details/86627770

    我们在使用Ubuntu系统开发的过程中,经常会遇到一些重复的操作,想copy, push等等。这个时候我们就可以自己编写一个sh脚本,使用sh脚本操作这些重复的动作。
    1.在编写sh脚本前了解一下基本语法
    1.1 if语句

    #!/bin/sh
    myPath="/var/log/httpd/"
    myFile="/var/log/httpd/access.log"
    -x 判断myPathif[x&quot;myPath是否存在并且是否具有可执行权限 if [ -x &quot;myPath" ];then
    #mkdir “$myPath”
    echo $myPath
    fi

    -d 判断myPathif[d&quot;myPath是否存在 if [ -d &quot;myPath" ];then
    #mkdir “$myPath”
    echo $myPath
    fi

    -f 判断myFileif[f&quot;myFile是否存在 if [ -f &quot;myFile" ];then
    #touch “$myFile”
    echo $myFile
    fi

    -n 判断一个变量是否有值
    if [ -n “$myVar” ];then
    echo $myVar “is empty”
    exit 0
    fi

    判断两个变量是否相等
    if [ “var1&quot;=&quot;var1&quot; = &quot;var2” ];then
    echo “$var1 eq var2&quot;elseecho&quot;var2&quot; else echo &quot;var1 not eq $var2”
    fi

    1.2 for语法

    #!/bin/bash

    for ((i =1;i<=5;i++));
    do
    sleep 1
    echo $i
    done

    1. 下面我自己写了一些简单的sample
      2.1 扫描指定文件夹下面的so文件

    filehead=“so”
    index=0
    function getAllFileFromDire(){
    #echo $1
    for f in 1/doif[d&quot;1/* do if [ -d &quot;f" ]
    then
    getAllFileFromDire felif[f&quot;f elif [ -f &quot;f" ]
    then
    name=fstart=f start={name:0-2:3}
    #echo “start&quot;if[&quot;start&quot; if [ &quot;start” = “filehead&quot;];thenecho&quot;filehead&quot; ];then echo &quot;name”
    let index++
    fi
    fi
    done
    }

    getAllFileFromDire /home/bob/Desktop/Document/1.7.1/out-of-source

    echo $index

    2.2 对当前目录下面的所有apk文件进行签名,把签名后的文件放到以当前时间为名字的文件夹下面

    #!/bin/bash
    key=t1S9D21N03nX
    out=date '+%Y%m%d_%H%M'
    mkdir $out
    for f in *.apk
    do
    echo $f
    #echo $key |
    java -jar signapk.jar platform.x509.pem platform.pk8 $f out/out/f
    done

    2.3 把制定的文件夹下面的所有扩展名为so的文件copy到制定的位置

    date
    source_path=/home/…/Desktop/Document/1.9/out-of-source
    #source_path=/home/…/Desktop/Document/out-of-source
    target_path=/home/…/tftpboot/avs_libs/
    filehead=".so"
    index=0
    function getAllFileFromDire(){
    #echo $1
    for f in 1/doif[d&quot;1/* do if [ -d &quot;f" ]
    then
    getAllFileFromDire felif[f&quot;f elif [ -f &quot;f" ]
    then
    name=fstart=f start={name:0-3:3}
    #echo “start&quot;if[&quot;start&quot; if [ &quot;start” = “filehead&quot;];thenecho&quot;filehead&quot; ];then echo &quot;name”
    let index++
    cp $name $target_path
    fi
    fi
    done
    }

    getAllFileFromDire $source_path

    echo “copy $index librarys to $target_path”

    cp $source_path/Integration/test/app $target_path/…/tools/

    2.4 抓取当前系统的memory info到指定文件

    #sn=$(adb shell getprop ro.boot.serialno)
    out=date '+%Y%m%d_%H%M'_meminfo.txt
    echo > $out
    #echo SN: ${sn} >> $out
    echo >> $out
    while true
    do

    date >> $out
    #cat /proc/meminfo | grep -E "Mem|Cached|Buffers" >> $out
    cat /proc/meminfo >> $out
    echo  >> $out
    sleep 60
    

    done

    原文:https://blog.csdn.net/bogongjie/article/details/83270331

    展开全文
  • 1、sudo gedit realsense.sh .../home/suns/Workspace/zz/ '''输出sh文件所在的文件夹''' 3、go to /usr/share/applications: sudo gedit realsense.desktop 4、add: [Desktop Entry] Enc...

    1、sudo gedit realsense.sh
    #! /bin/bash
    realsense-viewer

    2、pwd
    /home/suns/Workspace/zz/   '''输出sh文件所在的文件夹'''

    3、go to  /usr/share/applications:
    sudo gedit realsense.desktop

    4、add:
    [Desktop Entry]
    Encoding=UTF-8
    Name=realsense
    Type=Application
    Icon=cheese        '''图标可自选,换对应的路径即可'''
    Categories=Application;
    StartupNotify=true
    Terminal=false
    Exec=sh /home/suns/Workspace/zz/realsense.sh  '''sh 后跟 要执行sh文件的绝对路径即可'''

    5、sudo chmod a+x realsense.desktop  '''给该文件赋予权限'''

    6、把生成的图标拖到桌面上即可直接点击打开

    展开全文
  • Ubuntu系统中sh脚本编写

    万次阅读 2018-12-07 14:53:22
    我们在使用Ubuntu系统开发的过程中,经常会遇到一些重复的操作,想copy, push等等。这个时候我们就可以自己编写一个sh脚本,使用sh脚本操作这些重复的动作。 1.在编写sh脚本前了解一下基本语法 1.1 if语句 #!/bin/sh...

    我们在使用Ubuntu系统开发的过程中,经常会遇到一些重复的操作,想copy, push等等。这个时候我们就可以自己编写一个sh脚本,使用sh脚本操作这些重复的动作。

    1.在编写sh脚本前了解一下基本语法
    1.1 if语句
    #!/bin/sh
    myPath="/var/log/httpd/"
    myFile="/var/log/httpd/access.log"
    # -x 判断$myPath是否存在并且是否具有可执行权限
    if [ -x "$myPath" ];then
      #mkdir "$myPath"
    	echo $myPath
    fi
    
    # -d 判断$myPath是否存在
    if [ -d "$myPath" ];then
      #mkdir "$myPath"
    echo $myPath
    fi
    
    # -f 判断$myFile是否存在
    if [ -f "$myFile" ];then
      #touch "$myFile"
    echo $myFile
    fi
    
    # -n 判断一个变量是否有值
    if [ -n "$myVar" ];then
      echo $myVar "is empty"
      exit 0
    fi
    
    # 判断两个变量是否相等
    if [ "$var1" = "$var2" ];then
      echo "$var1 eq $var2"
    else 
      echo "$var1 not eq $var2"
    fi
    
    1.2 for语法
    #!/bin/bash
    
    for ((i =1;i<=5;i++));
    do
    	sleep 1
    	echo $i
    done
    
    2. 下面我自己写了一些简单的sample
    2.1 扫描指定文件夹下面的so文件
    filehead="so"
    index=0
    function getAllFileFromDire(){
        #echo $1
        for f in $1/*
        do
    	    if [ -d "$f" ]  
            then   
              getAllFileFromDire $f 
            elif [ -f "$f" ]  
            then
              name=$f  
              start=${name:0-2:3}
              #echo "$start"
              if [ "$start" = "$filehead" ];then
                echo "$name"
                let index++
              fi 
            fi 
        done
    }
    
    getAllFileFromDire /home/bob/Desktop/Document/1.7.1/out-of-source
    
    echo $index
    
    2.2 对当前目录下面的所有apk文件进行签名,把签名后的文件放到以当前时间为名字的文件夹下面
    #!/bin/bash
    key=t1S9D21N03nX
    out=`date '+%Y%m%d_%H%M'`
    mkdir $out
    for f in *.apk
    do
    	echo $f
    	#echo $key | 
    	java -jar signapk.jar platform.x509.pem platform.pk8 $f $out/$f
    done
    
    2.3 把制定的文件夹下面的所有扩展名为so的文件copy到制定的位置
    date
    source_path=/home/.../Desktop/Document/1.9/out-of-source
    #source_path=/home/.../Desktop/Document/out-of-source
    target_path=/home/.../tftpboot/avs_libs/
    filehead=".so"
    index=0
    function getAllFileFromDire(){
        #echo $1
        for f in $1/*
        do
    	    if [ -d "$f" ]  
            then   
              getAllFileFromDire $f 
            elif [ -f "$f" ]  
            then
              name=$f  
              start=${name:0-3:3}
              #echo "$start"
              if [ "$start" = "$filehead" ];then
                echo "$name"
                let index++
                cp $name $target_path
              fi 
            fi 
        done
    }
    
    getAllFileFromDire $source_path
    
    echo "copy $index librarys to $target_path"
    
    cp $source_path/Integration/test/app $target_path/../tools/
    
    2.4 抓取当前系统的memory info到指定文件
    
    #sn=$(adb shell getprop ro.boot.serialno) 
    out=`date '+%Y%m%d_%H%M'_meminfo.txt`
    echo > $out
    #echo SN: ${sn} >> $out
    echo >> $out
    while true
    do
    	
    	date >> $out
        #cat /proc/meminfo | grep -E "Mem|Cached|Buffers" >> $out
        cat /proc/meminfo >> $out
        echo  >> $out
        sleep 60
    done
    
    展开全文
  • ubuntu上第一个shell脚本

    万次阅读 2017-05-27 10:20:08
    参考:https://billie66.github.io/TLCL/book/zh/chap25.htmlUbuntu下第一个shell脚本在home目录下新建文件夹xkmkdir xk进入xk文件夹,新建文件helloshelltouch helloshell在helloshell文件中输入如下内容:#!...

    参考:https://billie66.github.io/TLCL/book/zh/chap25.html

    Ubuntu下第一个shell脚本

    在home目录下新建文件夹xk

    mkdir xk

    进入xk文件夹,新建文件helloshell

    touch helloshell

    在helloshell文件中输入如下内容:

    #!/bin/bash
    # This is our first script.
    echo 'Hello World!'

    保存并退出

    ls -l helloshell
    chmod 755 helloshell
    ./helloshell
    ps -ef | grep helloshell

    ps -aux | grep helloshell

    脚本执行完之后,进程就结束了,所以此时执行 kill -9 [PID]没有作用,该PID从上面ps中获取,并发现此刻pid每次都是变化的;

    查看用户xk目录下面是否有bin文件夹,若没有,新建bin文件夹

    mkdir bin
    pwd

    查看环境变量的内容

    echo $PATH

    发现如果没有当前用户/home/xk/bin:/home/xk/.local/bin:/homexk/bin/目录,
    这里写图片描述

    此刻在根目录执行helloshell,会提示该命令不存在
    这里写图片描述

    则添加环境变量:

    export PATH=~/bin:"$PATH"

    这里写图片描述

    执行source ./.profile 使环境立即生效

    echo $PATH

    路径发生变化,新的路径添加加进去了

    在根目录下,再次执行helloshell,即可打印出结果

    展开全文
  • 当前目录下有一些文件和目录,其中每个目录里都有若干.txt文件, ...在ubuntu12.04的shell脚本实现如下: #!/bin/sh # 提示信息 echo "start:" # 定义变量 dst=all pst=.txt # 复制文件到目标文件夹 if [ -d
  • 1.编写一个shell脚本文件,例如python_auto.sh,文件内容: 2.编写start.py文件,里面执行你需要服务器开启执行的操作 3.在 /etc/profile 这个文件中,添加shell脚本文件路径,例如: 在服务器开机时会自动...
  • 目的1:提取文件夹名称到txt文件(包括文件夹内文件名称,遍历所有文件夹及子文件夹)find -name \*&gt; viewname.txt(单层文件夹)Folder_A="/home/Neo/shell/gotfilename/bin" Output_file="...
  • Ubuntu中向菜单栏添加程序(脚本)

    万次阅读 2012-05-31 12:34:52
    Linux中下载压缩包解压后得到的程序或者自己写的脚本在菜单栏中没有相应的选项,用起来可能不是很方便。  查看资料后得知菜单栏是通过管理/usr/share/applications/中的.desktop文件管理的。  查看此文件夹下的...
  • 最近因为要提取很多图片,自己的图片的数据集采用的是LFW Face Database,该数据集如下图所示。...因为这里涉及到了上万张图片,所以写了个shell脚本来帮我完成这些事,代码如下:#!/bin/bash echo this script
  • 一 创建监控脚本 首先在文件夹下建一个.sh格式的空文档 在终端root权限下输入命令打开.sh文件进行编辑 sudo vim /*/*……/**.sh //vim编辑输入时请按先按I键,编辑好之后按Esc键退出编辑选项,接着在不可编辑状态...
  • /etc/init.d/rcS #!/bin/sh # Start all init scripts in /etc/init.d # executing them in numerical order. # for i in /etc/init.d/S??* ;do ... # Ignore dangling symlinks (if any). ... ] ...
  • ubuntu——mkdir命令详解

    千次阅读 2019-06-10 21:31:57
    ubuntu14.04为例 mkdir make directory,创建目录 语法1:mkdir (路径)文件夹 不写路径就是在当前目录创建文件夹 语法2:mkdir -p 路径 当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错 语法3:mkdir ...
  • 操作系统:ubuntu 16.04 编程语言: C++ 编译链接工具:g++ 实现目标 将cpp文件自动编译并且生成同名的.out文件。 自动运行.out文件查看输出。 脚本程序 将以下脚本程序命名为autorun.sh #!/bin/bash ...
  • 最近接了个项目,具体做什么都不说了,其中有个工作就是批量更改文件夹,然后批量更改文件夹下的文件名字,一会儿先贴代码,再详细解释步骤。 下面是我的简化版的目录结构,实际上有上百个。 project dir1 dir1...
  • ubuntu下PATH路径的设置——工作笔记

    万次阅读 2012-08-18 00:29:25
    在自己编写了一个shell小的脚本,而此脚本只在固定文件夹下可以执行,在其他的路径下,该脚本不能使用。 所以就想将脚本的所在目录设置为环境变量PATH下,这样可以在任何路径下执行。 1、用export命令设置当前...
  • 就在刚刚,想着用shell实现每天自动备份...导致在下载备份文件时,总会弹出一个提示:failed to open target file for writing备份的shell脚本如下:# !/bin/bash mysqldump -uusername -ppassword lvxing1788 ...
  • shell脚本编写笔记

    千次阅读 2020-08-20 17:41:26
    本文主要介绍如何编写简单的shell脚本,给shell脚本传参,shell脚本获取当前运行时间,通过shell执行hql语句。
  • 今天小研究了一下MAC的终端命令,主要为了方便调试程序用,XCODE用不来啊。...cd(folder) 进入文件夹 cd .. 上级目录 cd ~ 返回root cd - 返回上一个访问的目录 rm 文件名 删除 c
  • 操作系统原理-课后作业2编写Shell程序从文件中读取每一行显示并统计总行数一、编写Shell脚本打开gedit文本编辑器。输入以下代码,并保存为read.sh。read -p "请输入文件名:" name awk '{print} END {...
  • Linux下编写脚本实现Daemon

    千次阅读 2011-07-30 22:06:57
    在Linux(以Redhat ... Linux Enterprise Edition 5.3为例)下,有时需要编写Service。Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Service。Linux下的Service一般称为Daemon。
1 2 3 4 5 ... 20
收藏数 4,919
精华内容 1,967
关键字:

ubuntu 编写shell脚本文件夹