All posts

🔨工具:bash常用命令

(Updated: )

本文记录工作中常用的bash命令,忘性大,在此记录。

文件操作

  • 文件夹不存在则创建
path=/mnt/datasets/kitti/

if [ ! -d ${path} ]; then mkdir -p ${path} #创建目录及其子目录 fi

其中-d表示文件比较符,判断文件夹是否存在

  • 判断文件是否存在,若存在,则删除
file_path=/mnt/datasets/kitti/data.csv

if [ ! -f ${file_path} ]; then echo "file not exists..." else echo "file exists, delete it!" rm -f ${file_path} fi

其中-f表示文件比较符,判断文件是否存在

以下列举常用的文件比较符:

-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

循环

bash中定义数组的语法

variable=(arg1 arg2 arg3 ....)

获取下标为n的元素

variable[n]

而且不存在数组下标溢出的情况,如果 n>= 数组的长度,那么为空,不会报错。

获取数组长度

${#variable[@]} ```

或者

```bash
${#variable[*]} ```

### 遍历的两种方式

```bash
for i in ${variable[@]}; do     #do something done ```

或者

```bash
for i in $(seq 0 ${#variable[@]}); do     e=${variable[$i]}
    # do something....
done

以上两种方法 把 @ 换成 * 也行。

参考

  1. Shell脚本数组操作小结1
  2. Shell脚本数组用法小结2
  3. linux shell 中数组的定义和for循环遍历的方法
  4. Shell中创建序列和数组(list、array)的方法