shell 脚本常用命令

我们要学会用工具解放双手,比如批量给文件夹下某些文件建立软链接,我们可以写个脚本实现。下面记录这个工程中用到的一些命令。

变量

定义变量时,变量名不加美元符号

your_name="12"

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

your_name="qinjx"
echo $your_name
echo ${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

获取某目录下文件夹/文件的名称

  1. 如果是需要深度遍历,即输出文件夹已经文件夹里的文件/文件夹,命令如下
#!/bin/bash
cd 目标目录
for file in $(ls *)
do
   echo $file
done
  1. 如果只想获取第一层的文件已经文件夹,则如下
#!/bin/bash
cd 目标目录
for file in $(ls )
do
   echo $file
done

文件夹和文件的判断

首先判断的语法是
if [ condition ]
两个命令:

  1. -f "file":判断file是否是文件;
  2. -d "file":判断file是否是目录(文件夹)。

结合获取文件/夹的语法,比如判断是否为文件夹可以这么写

#!/bin/bash
cd 目标目录
for file in $(ls )
do
   if [ -d "$file" ]; then

     echo "$file is a directory "

   elif [ -f "$file" ]; then

     echo "$file is a file"  
   fi
done

数组是否包含某个值

我们知道 javascript 包含可以直接使用 [].includes('xxx')。 用 shell可以这么写:

if [[ " ${array[@]} " =~ " ${value} " ]]; then
  echo true
fi
if [[ ! " ${array[@]} " =~ " ${value} " ]]; then
  echo false
fi

流程控制

if 语句

if condition
then
    command1 
    command2
    ...
    commandN 
fi

if else

if condition 
then
    command1 
    command2
else 
    command
fi

if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

获取某个文件的绝对路径

  1. 获取文件的绝对路径可以使用
$(pwd)
  1. 如果想要获取一个相对文件的绝对路径,可以这样写
$(cd ${basePath}; pwd)

贝贝的前端
爱健身的前端狗
317 声望
24 粉丝
0 条评论
推荐阅读
写给高年级小学生的《Bash 指南》
若让计算机理解我的意图,可以有两种方式,说和指。这与生活中我为了让他人能够理解我的意图所采用的方式相似。譬如,我想让朋友去超市帮我买瓶饮料,我可以使用祈使句,「帮我去超市买瓶可乐,如何?」我也可以...

garfileo17阅读 3.5k评论 1

100 行 shell 写个 Docker
在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup、Namespace、RootFs,如果本身对虚拟化的发展没有深入的了解,那么很难对这几个概念有深入的理解,本文的目的就是通过在操作系统中以交互式的方式去理...

vivo互联网技术2阅读 398

Bash 常用命令记录
find $SEARCHING_DIR -name "*.wav" -exec cp {} $TAR_DIR \;若只查找文件,后面可加上-type f

Oops阅读 1.4k

[TIL] 在 Finder 中打开 iOS 模拟器的文件系统
分享两个脚本用于打开 iOS simulator 的设备文件系统与特定 App 的文件系统设备文件系统设备文件系统是指从 simulator 的“文件”应用中的 On My iPhone 这里看到的文件: {代码...} 运行即可:App 文件系统是指每...

AlanZhang阅读 953

别催了,别催了,这篇文章我一次性把Shell的内容说完
在这个例子中,我们搜索的文件全都位于当前目录下。因此,我们只使用了简单的 shell 模式 *.c 来匹配以 .c 结束的文件,并没有在文件名前再添加路径。

博学谷狂野架构师阅读 764

13种Shell逻辑与算术,能写出5种算你赢!
相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。

博学谷狂野架构师阅读 508评论 1

shell 备份文件脚本+自动清理
自动清理超出备份数的最老备份文件 {代码...} 可执行权限 {代码...} 在想要备份的文件夹下执行 ./bak.sh 即可

big_cat阅读 466评论 2

317 声望
24 粉丝
宣传栏