bash中的文件测试

如果下面的条件成立返回真...-e

文件存在
-a

文件存在

这个和-e的作用一样. 它是不赞成使用的,所以它的用处不大。
-f

文件是一个普通文件(不是一个目录或是一个设备文件)
-s

文件大小不为零
-d

文件是一个目录
-b

文件是一个块设备(软盘, 光驱, 等等.)
-c

文件是一个字符设备(键盘, 调制解调器, 声卡, 等等.)
-p

文件是一个管道
-h

文件是一个符号链接
-L

文件是一个符号链接
-S

文件是一个socket
-t

文件(描述符)与一个终端设备相关

这个测试选项可以用于检查脚本中是否标准输入 ([ -t 0 ])或标准输出([ -t 1 ])是一个终端.
-r

文件是否可读 (指运行这个测试命令的用户的读权限)
-w

文件是否可写 (指运行这个测试命令的用户的读权限)
-x

文件是否可执行 (指运行这个测试命令的用户的读权限)
-g

文件或目录的设置-组-ID(sgid)标记被设置

如果一个目录的sgid标志被设置,在这个目录下创建的文件都属于拥有此目录的用户组,而不必是创建文件的用户所属的组。这个特性对在一个工作组里的同享目录很有用处。
-u

文件的设置-用户-ID(suid)标志被设置

一个root用户拥有的二进制执行文件如果设置了设置-用户-ID位(suid)标志普通用户可以以root权限运行。[1] 这对需要存取系统硬件的执行程序(比如说pppd和cdrecord)很有用。如果没有设置suid位,则这些二进制执行程序不能由非root的普通用户调用。 -rwsr-xr-t 1 root 178236 Oct 2 2000 /usr/sbin/pppd

被设置了suid标志的文件在权限列中以s标志表示.
-k

粘住位设置

Commonly known as the "sticky bit," the save-text-mode flag is a special type of file permission. If a file has this flag set, that file will be kept in cache memory, for quicker access. [2] If set on a directory, it restricts write permission. Setting the sticky bit adds a t to the permissions on the file or directory listing. drwxrwxrwt 7 root 1024 May 19 21:26 tmp/

If a user does not own a directory that has the sticky bit set, but has write permission in that directory, he can only delete files in it that he owns. This keeps users from inadvertently overwriting or deleting each other‘s files in a publicly accessible directory, such as /tmp.
-O

你是文件拥有者
-G

你所在组和文件的group-id相同
-N

文件最后一次读后被修改
f1 -nt f2

文件f1比f2新
f1 -ot f2

文件f1比f2旧
f1 -ef f2

文件f1和f2 是相同文件的硬链接
!

"非" -- 反转上面所有测试的结果(如果没有给出条件则返回真).

  

时间: 2024-08-04 07:08:48

bash中的文件测试的相关文章

4、文件测试、字符测试、if、vim 学习笔记

bash编程之:字符测试,一般加引号 双目: > : 大于 < :小于 ==:等于,等值比较 =~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配:通常只在[[]]中使用 模式中可以使用行首.行尾锚定符,但是模式不要加引号 !=, <>: 不等于 单目: -n 字符串: 字符串是否不空,不空为真,空则为假 -z 字符串:字符串是否为空,空则为真,不空则假: 判定所有用户是否拥有可登录shell #!/bin/bash for userName in `cut

21.自学Linux之路:文件测试,参数轮替

bash知识点之文件测试: 知识回顾: 字符测试: 格式:test 表达式 :[ 表达式 ] :[[ 表达式 ]] 整数测试: 格式:test 表达式 :[ 表达式 ] :[[ 表达式 ]] 文件测试: 单目测试: -e /path/to/file:测试文件是否存在 -a /path/to/file:测试文件是否存在 -f /path/to/file:判断文件是否为普通文件 -d /path/to/file:判断文件是否为目录文件 -b /path/to/file:判断文件是否为块设备文件 -c

linux命令中bash常用的条件测试:整数测试eq,文件测试-e,字符串测试==

测试方法:expression: 表达,表示 [ expression ] [[ expression ]] test expression  bash中常用的条件测试有三种:  1.整数测试:      -eq 等于      -lt 小于      -ne 不等于      -gt 大于      -le 小于等于      -ge 大于等于 integer:整数      INTEGER1=63     INTEGER2=77     [ $INTEGER1 -eq $INTEGER2 ]

bash --文件测试、字符串比较

文件测试 : 需要加中括号 -e file  文件是否存在 -f file 文件是否为普通文件 -d file  文件是否为目录 -r file  文件对当前用户是否可读 -w file     写 -x file     执行 组合测试: -a 与关系 -o 或关系 !  非关系 写法: if [ $A -ge 4 -a $A -lt 7 ] if [ $A -ge 4]  && [ $A -lt 7 ] 大于等于4 且小于7 if [ $A -ge 4  -o  $A -lt 4 ]

bash脚本编程之(3/4)条件判断、算符运算、整数测试、文件测试、特殊变量等笔记

Shell编程: 编译器,解释器 编程语言: 机器语言.汇编语言.高级语言 静态语言: 编译型语言 强类型(变量) 事先转换成可执行格式 c\c++\JAVA\c# 动态语言: 解释性语言 弱类型 边解释边执行 asp/asp.net/php/shell/python/perl Shell: 弱类型编程语言 强类型: 变量在使用前,必须事先声明,甚至还需要初始: 弱类型: 变量用时声明,甚至不区分类型: 面向过程: Shell C 面向对象: JAVA Python, perl, c++ 变量:

如何在 Bash 中删除“除某些文件外的所有文件”?

我的一位同事曾经问过我这样一个问题:在 Linux 下,如何 删除目录中除某些文件之外的所有文件?当时,我告诉他可 以通过模式匹配的方法解决.但其实,除此之外,还有其他 的方法,正所谓"条条大路通罗马".让我们来逐一看看. 假设要删除 ~/Downloads 目录中除 *.iso 和 *.zip 外的 所有文件,那么在 bash 中可以按以下方法处理: 方法1:模式匹配法 shopt -s extglob # 确认开启 extglob 选项 cd ~/Downloads rm -v !

使用真机测试时,在eclipse中data文件夹打不开

我们知道,在真机测试的时候,在某个应用程序中产生的db文件存在于data/data/应用的包名/中,这是我们很可能需要去该文件夹去查看一下,但是这个文件夹很可能打不开.以下给出解决办法: 1)使用RE文件管理器把data文件夹的权限更改为可读写,问题就解决了 2)使用模拟器 使用真机测试时,在eclipse中data文件夹打不开

Linux bash 中,如何将正常信息和错误信息输出到文件

问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdout到output文件? 也就是,如何在bash的同一行,实现stderr和stdout重定向到不同的文件? 解决方法: 将它们放入同一行,command 2>> error 1>> output 然而,注意 >> 是如果文件有数据,会在文件尾部添加内容.而 > 将会重

Windows下Git Bash中VIM打开文件中文乱码

Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 [email protected] MINGW64 /d/项目GGE/Hard_for_GGE (master)$ cd /etc/ [email protected] MINGW64 /etc$ vi vimrc 步骤二 在打开的vimrc文件开头添加以下代码: set nu set fencs=utf-8,gbk,utf-16,utf-32,ucs-bom 保存并退出vimrc编辑文档. 步骤三 1.退出git