linux 文件测试运算符

2023-11-13

文件测试运算符用于检测 Unix 文件的各种属性。

属性检测描述如下

-b file     检测文件是否是块设备文件,如果是,则返回 true。  [ -b $file ] 返回 false
-c file     检测文件是否是字符设备文件,如果是,则返回 true。     [ -c $file ] 返回 false
-d file     检测文件是否是目录,如果是,则返回 true。     [ -d $file ] 返回 false
-f file     检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。    [ -f $file ] 返回 true
-g file     检测文件是否设置了 SGID 位,如果是,则返回 true。  [ -g $file ] 返回 false
-k file     检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。  [ -k $file ] 返回 false
-p file     检测文件是否是有名管道,如果是,则返回 true。   [ -p $file ] 返回 false
-u file     检测文件是否设置了 SUID 位,如果是,则返回 true。  [ -u $file ] 返回 false
-r file     检测文件是否可读,如果是,则返回 true。  [ -r $file ] 返回 true
-w file     检测文件是否可写,如果是,则返回 true。  [ -w $file ] 返回 true
-x file     检测文件是否可执行,如果是,则返回 true。     [ -x $file ] 返回 true
-s file     检测文件是否为空(文件大小是否大于0),不为空返回 true。     [ -s $file ] 返回 true
-e file     检测文件(包括目录)是否存在,如果是,则返回 true。    [ -e $file ] 返回 true

实例
变量 file 表示文件”/var/etc/test.sh”,它的大小为100字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:

#!/bin/bash

file="/var/etc/test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

执行脚本,输出结果如下所示:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 文件测试运算符 的相关文章

  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • /proc/PID 文件格式

    我想从中检索一些流程信息 proc目录 我的问题如下 中的文件是否有标准格式 proc PID 例如 有这个proc PID status文件与Name t ProcName在第一行 我可以在其他地方用空格代替这个文件吗 t或者类似的东西
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 如何在bash中仅提取两个字符串之间多行的第一个实例?

    我的文件是 abc 123 xyz abc 675 xyz 我想提取 abc 123 xyz 123 可以是任何东西 重点是我想要第一次出现 我尝试使用这个 sed n abc xyz p filename 但这给了我所有的例子 我怎样才能
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she

随机推荐

  • Anaconada 几个系统基本命令

    1 python 命令加入系统路径 找出 anaconada 安装路径 打开系统变量并写入该路径即可在系统内运行 python 命令 2 pip 命令写入系统路径 pip 的写入路途则是如下 方法相同 3 conda 的运行 conda c
  • 028.PowerDesigner16:导入SQL脚本、显示中文注释

    导入SQL脚本 生成物理模型 1 击File gt Reverse Engineer gt Database 2 弹出弹窗对模型进行命名 同时在DBMS下拉选择框中需要选择自己对应的数据库类型 点击确定 3 新的弹窗 选中Using scr
  • 西米支付:如何选择自己需求的接口(传奇游戏支付接口)

    传奇游戏是中国网游无法绕过的一座碑 也是千万初代网游玩家的游戏启蒙 2001年一款游戏横空出世 靠着超爽的打击感 和多人同屏战斗迅速在网游火了起来 它就是传奇 随着 传奇 盛大的成长 兴盛与衰弱 一路走来 已经在14年 游戏的充值模式也由以
  • 达梦8常用性能优化相关SQL

    一 内存性能相关 1 1 查看数据库当前运行内存大小 select select sum n pages page size 1024 1024 from v bufferpool MB as BUFFER SIZE select sum
  • 计算shell脚本执行的时间

    我们在使用shell脚本进行一些批量活动的时候 在有的场景下会需要知道脚本执行用了多长的时间 一谈到这个话题 我们一般的想法就是记录时间再开始阶段 执行完成后再记录时间 然后求时间差 这样是可以的 但是要进行格式的转换 比较麻烦 今天我们使
  • Mysql 问题集锦

    一 Host is not allowed to connect to this MySQL server解决方法 1 在安装Mysql数据库的主机上登录root用户 mysql u root p use mysql select host
  • 巧用闭包拷贝对象

    我们知道对象的赋值实际上是赋值它的应用 并没有产生对象的副本 如 var p1 x 1 y 2 var p2 p1 p2 x alert p1 x 得出的结果是2 改变p2 x的值 p1 x的值随之改变 当然可以重新new一个对象 但是这样
  • 如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】

    如何把项目打jar包 然后暴露接口给第三方应用提供服务 实战讲解 下面这个例子 是我在开源项目CR949中使用到的部分代码 作为讲解 发布到这里 jar包中的controller 如何对外暴露接口 这样一个场景 比如 我去gitee上面 下
  • TypeError: __init__() got an unexpected keyword argument ‘autocompletion‘

    1 TypeError init got an unexpected keyword argument autocompletion 在使用mmclassification的时候会出现该错误 看起来是哪里的自动补全出了问题 在报错的文件里会
  • 如何快速下载Python解决在官网下载缓慢问题以及如何安装Python

    不知道你们碰到过这样的情况没有 在Python官网下载Python却很慢 刚开始我还以为是被限速了 后来才了解到这是因为Python官网的服务器是在外网 所以呢那我找到了一个Python的国内下载网址 CNPM Binaries Mirro
  • 史上最全SQL基础知识总结(理论+举例)

    div class markdown views div
  • 当了程序员才知道的事情

    坐在靠墙角的程序员王二狗 如果这哥们键盘敲的啪啪响 时不时面带笑容 很可能是在跟前台 测试 UI 美工 产品的小美眉聊今天又发现楼下新开的餐馆 如果嘴角带弧度 手不放在键盘上而是一直抓着鼠标擦滚轮且显示器角度靠内 那一定是摸鱼刷某乎 如果这
  • JDK 1.8中为什么HashMap使用红黑树而不是普通的AVL树

    概述 在JDK 1 8之前 HashMap使用的是数组和链表的组合来解决哈希冲突 然而 当链表过长时 查询性能会受到影响 为了解决这个问题 JDK 1 8引入了红黑树作为链表的替代结构 提高了HashMap的性能 为什么选择红黑树而不是其他
  • cesium地图

    cesium地图 开源基于js的3D地图框架 可视化框架 支持2D 3D 5D形式的地理数据 可以绘制几何图形 高亮区域 支持导入图片 使用webGL来进行硬件加速图形 使用是不需要任何插件来支持 但是浏览器必须支持webGl 1 配置视窗
  • 红蜘蛛 v6.2.1160解除键鼠屏蔽以及实现窗口化

    目录 声明 破解软件下载 环境 实现效果 简单使用方法 注意事项 1 还原 2 破解前已经被控制 3 调整窗口后窗口黑掉 4 自动替换补丁失败 5 基本原理 声明 自制 仅供学习交流 侵删 破解软件下载 https download csd
  • 关于Ubuntu ssh远程连接报错和无法root登录的解决方法

    一 使用远程工具连接Ubuntu提示报错 MobaXterm v22 0 版本直接可以远程连接上 前提是sshd服务是开启的状态 注意 须使用最新版本或较高版本的ssh远程连接工具 进行ssh连接 若使用较低版本的ssh远程连接工具 会报错
  • 安全编码规范-小羊的记录本

    目录 安全编码规范 安全目标 数据校验 SQL注入 OS注入 目录遍历攻击 XML注入 正则注入 日志注入 敏感数据保护 异常暴露敏感信息 线程同步 IO操作 反序列化 平台安全 线程同步 IO操作 反序列化 平台安全 安全编码规范 安全目
  • 网站弹窗公告一天弹窗一次源码简单好看

    介绍 简单好看到爆炸 上传到根目录使用即可 一天只弹一次 使用cookie记录 网盘下载地址 http kekewangLuo net T2ztQxJWt16 图片
  • kullback-leibler distance的计算(matlab)

    KL distance是用来计算两组离散数值的信息量 相对熵 的 一般针对的是离散数据 可以用来做特征筛选 但如果是连续数据 则先要离散化求每个bin内的frequency后再计算KL distance KL distance的解释 1 h
  • linux 文件测试运算符

    文件测试运算符用于检测 Unix 文件的各种属性 属性检测描述如下 b file 检测文件是否是块设备文件 如果是 则返回 true b file 返回 false c file 检测文件是否是字符设备文件 如果是 则返回 true c f