touch
改变文件的修改时间和访问时间
touch [ -acm ] [ -t time ] file...
-a access time
-c no create
-m modification time
touch -m -t 201312310930 file
使用拓展名非常方便,因为允许使用通配符引用一组文件。
cp
cp [ -ip ] file1 file2
-i interactive -p preserve the same
cp
cp [ -ip ] file... directory
cp data1 data2 data3 backups
cp data[123] backups
cp data* backups
cp -r
cp -r [ -ip ] directory1... directory2
-r recursive(注意ls中递归为ls -R)
cp -r essay backups
复制目录中所有文件 cp documents/* backups
复制目录本身及其中包含的所有文件目录 cp -r documents backups
mv
mv [ -if ] file... directory
-i interactive -f force
mv
mv [ -if ] oldname newname
使用mv可以同时移动文件和重命名 mv incomplete archive/compete
rm
rm [ -fir ] file...
rm *
ls data*
rm –if
rm -r
危险!
在使用之前一定要先用pwd
和ls
,在许多系统上-f
选项覆盖率-i
选项。
文件权限 file permission
简称权限(permission)
读权限 read permission
写权限 write permission
执行权限 execute permission
普通文件
读 | 读取文件 |
---|---|
写 | 写入文件 |
执行 | 执行文件(程序或脚本) |
目录文件
读 | 读取目录中的文件名 |
---|---|
写 | - |
执行 | 搜索目录 |
setuid
setuid
set userid
)
passwd
setuid
只用来允许普通用户标识为了执行某个具体任务而以临时特权来运行程序。
Unix
维护文件权限的方式:id
、groups
id
groups=500(staff)
(主组),502(admin)
(辅组)
ls –
显示目录权限时,在设置-l
的同时还要设置-d
选项。
-rwxrwx--- 1 g staff 4 23:00 a.out
每行的第一个字符是文件类型指示符。
没有权限
Ower Groups Other File
rw- --- - - - a.out
文件模式 file mode
简称模式 (600)
属主的权限 组的权限 其他用户标识的权限
6 0 0
4 | 读 |
---|---|
2 | 写 |
1 | 执行 |
0 | 没有权限 |
chmod mode file...
chmod 644 essay
Unix
为新文件指定权限的方式:umask
用户掩码 user mask
umask [ mode ] umask 002
显示用户掩码的当前值 umask
shred
shred -fuzv [ file... ] 多层覆盖硬盘上已有的数据
-f force -u 覆盖后截断并删除文件 -z 最后一次使用0 进行覆盖以隐藏覆盖动作 -v verbose
stat
、ls -i
i节点(i-node
)
索引节点(index node)
i节点包含是用文件系统所需的全部文件系统信息。
stat filename
文件系统的i节点表(i node table)
i节点号(i - number)
索引号(index number)
ls -i
显示文件的i节点号
目录只包含文件的名称及文件的i节点号。
存放文件的过程:
1.准备存储空间——>2.查找空闲i节点,填充信息——>3.在目录中存放条目
文件名和i节点之间的连接称为链接,链接将文件名与文件连接起来,这就是为什么i节点不包含文件名的原因。
文件的唯一标识符是其i
节点号,而不是它的名称。
链接的基本思想是使同一个文件在不同的环境下可以拥有不同的含义。
Unix
平等地对待所有链接。
在Unix
中,文件不由他们的名称或位置控制,而只受所有权和权限控制。
ln
为单个文件创建新链接
ln file newname
为一个或多个普通文件创建新链接
ln file... direcrtory
分析文件命令是要从文件名和链接两方面进行理解。
1. 创建文件,创建目录[ mkdir
]
2. 复制文件[ cp
]
复制已有文件:Unix
用原内容替换目标文件内容,但不修改其i
节点。
复制不存在的文件:Unix
首先用新文件自己的i节点创建一个全新的文件。然后将旧文件的内容复制到新文件中。复制后将会有两个相同的文件,各自对应自己的i节点。
3. 重命名或移动文件[ mv
]
改变文件名或移动目录条目,但保持相同的i
节点号。
4. 创建链接[ ln
]
5. 移除链接[ rm
、rmdir
]
ln –s
相当于windows
的快捷方式
两个问题:1.不能为目录创建链接;2.不能为不同文件系统的文件创建链接。
符号链接 symbol link
/symlink
符号链接包含的不是文件的i节点号,而是原文件的路径名。
常规链接——硬链接(hard link)
符号链接——软链接(soft link)
mkdir extra
ln –s extra backups
ls -ld extra backups
默认cd -L
Unix
命令相关的文件:whereis
whereis [ -bms ] command…
-b binary -m manual -s source
locate
locate [ -bcirS ] pattern...
其中pattern是在路径名中查找的模式。
-b basename 例:locate -b temp -c count 例:locate -cr '.jpg$' -i ignorecase 例:locate -i x11 -r 使用正则表达式 例:locate -r '^/user*x114$' -S statistics
find
find path... test... action...
例:find /home/g -name important -print
find
命令:路径find /usr/bin
find /
find .
find ~
既可以搜索绝对路径名,也可以搜索相对路径名。
find /bin /sbin /usr/bin
可以搜索多个目录。
find
命令:测试文件名
-name patter -iname ignorecase 文件特征
-type [ fdbcpl ] f——regular file -perm mode -usr usrid -group groupid -size [-/+] n [ cbkMG ] -empty 访问时间、修改时间
-amin [-/+] n access time -anewer file file 文件之后访问 -atime [-/+] n n天之前访问 -cmin [-/+] n n分钟之前改变状态 -cnewer file file 文件之后改变状态 -ctime [-/+] n n天之前改变状态 -mmin [-/+] n n分钟之前修改 -mtime [-/+] n n天之前修改 -newer file file文件之后修改
如果使用通配符,则必须将它们引用起来,防止被shell
解释。
例:
find . -type f -name '*.c' -print
find . -type f -name 'data[123]' -print
find
命令:使用!
运算符对测试求反使用条件:
1.在!
号两边各留一个空格。
2.必须引用!
,防止被shell
解释。
find ~ -type f /! -name '*.jpg' -print
find ~ -type f '!' -name '*.jpg' -print
find
命令:处理文件权限错误信息将标准错误定位到位桶
find / type d -name bin -print 2> /dev/null
-print -fprint file 将输出写入到file中 -ls 显示长目录列表 -fls file 将输出写入到file中 -delete 删除文件 -exec command { } \; 执行command,{}指示匹配的文件名 -ok 同-exec。但是在运行command之前确认 对于GNU版本的用户来说,如果不指定路径,则假定工作目录是默认路径,如果不指定动作,则假定-print是默认动作。
-ls和-delete的动作的使用类似于将搜索的输出分别发送给ls和rm命令。但是find命令更具有一般性:可以使用-exec动作将搜索输出发送给任何希望的程序。 command包含了选项和参数。{ }表示find查找到的路径名,为了表示命令的末尾,必须以;结束命令。
find ~ -type d -exec chmod 700 { } \;
xargs
xargs [ -prt ] [ -istring ] [ command [ argument…] ]
string是占位符
find . -type f | xargs echo
find . –type f | xargs -i echo { } { }
echo对其参数进行求值,并写入到标准输出中。允许使用{ }作为占位符,占位符在命令运行之前被参数取代。
-i insert
-p prompt
find . –type f | xargs -i mv { } ~/backups/{ }.old
一定确保不要将-i
选项和其他选项一起使用,xargs
将认为-i
之后的是占位符。
默认xargs
运行指定的命令至少一次,-r
选项告诉xargs
如果没有输入参数,则不运行命令。