rename:对文件重命名
rename [options] expression replacement file
# rename -v cut.exe cut.exe3 cut.exe
`cut.exe’ -> `cut.exe3′
注:rename 源文件名 改后名 源文件名
-V:显示版本信息并退出
# rename -V
rename from util-linux 2.23.2
tree:显示目录树
按树状结构显示某一目录下的文件列表
tree [options]
options:
-d:只显示目录
-L:设定显示的层次
tree -L 2 lianxi/
lianxi/
├── 8yu
├── a123
├── a123.bak
├── a123.bak.bak
├── access_log
├── acl2.txt
├── k\ 67
├── mode
│ ├── a123
│ ├── access_log
│ └── cut2.txt
├── m.z
├── passw
└── sort
1 directory, 13 file
mkdir: 创建目录
mkdir [OPTION]… DIRECTORY..
-p:自动创建父目录
mkdir -p haha/hehe
-v:显示详细信息
# mkdir -pv 666/888
mkdir: created directory ‘666’
mkdir: created directory ‘666/888’
-m:直接指定权限
mkdir -m 640 mc
rmdir:删除目录(非空目录不能删除)
-p:自动删除空的父目录
rmdir -p testdir/dir2/
索引节点:
inode:表中包含文件系统的所有列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件大小和不同的时间戳
有关文件的其他数据
inode在特定范围内是唯一的
cent6.8 根分区inode默认从2开始;centos7默认64开始
lost+found :相当于收容所,系统突然断电等非正常关机所找不到存放地的文件都在此。
目录:
文件引用一个inode号(系统自动分配)
人是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射。
对于目录:目录里存放的是子目录或文件对应的节点编号,文件名存放在目录里
df 参看磁盘空间使用状况
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 4029708 48373492 8% /
devtmpfs 918976 0 918976 0% /dev
tmpfs 933644 84 933560 1% /dev/shm
tmpfs 933644 9172 924472 1% /run
tmpfs 933644 0 933644 0% /sys/fs/cgroup
/dev/sda5 10475520 32944 10442576 1% /app
/dev/sda1 1038336 172112 866224 17% /boot
tmpfs 186732 16 186716 1% /run/user/42
tmpfs 186732 0 186732 0% /run/user/0
-i:查看节点使用情况,而不是空间
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 26214400 119707 26094693 1% /
devtmpfs 229744 401 229343 1% /dev
tmpfs 233411 6 233405 1% /dev/shm
tmpfs 233411 556 232855 1% /run
tmpfs 233411 16 233395 1% /sys/fs/cgroup
/dev/sda5 5242880 3 5242877 1% /app
/dev/sda1 524288 330 523958 1% /boot
tmpfs 233411 17 233394 1% /run/user/42
tmpfs 233411 1 233410 1% /run/user/0
watch -n 1 `command`
每隔1秒就执行一次后面的命令
cp命令(复制):
分配一个空闲的inode号,在inode表中生成新条目在目录中创建一个目录项,将名称与inode编号关联拷贝数据生成新的文件
语法格式:
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE..
options:
-a :same as -dR –preserve=all
-i : 交互式操作
-f : 强制操作
-r :递归
-v :显示过程信息
…
# cp -v sort haha/
‘sort’ -> ‘haha/sort’
rm 命令(删除文件或目录):
连接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际不会被马上删除,但当另一个文件使用数据块时将被覆盖。
语法格式:
rm [OPTION]… FILE…
-i : 交互式操作,需要用户确认(例如:输入y)
-f : 强制操作
-r :递归操作
-v :显示过程信息
…
# rm -i k\ 67
rm: remove regular empty file ‘k 67’? y
mv命令:
如果mv命令的目标和源在相同的文件系统,作为mv命令用新的文件名创建对应新的目录项,删除旧目录条目对应的旧的文件名,不影响inode表 (除时间戳)或磁盘上的数据位置;没有数据被移动!
如果目标和源在一个不同的文件系统,mv相当于cp和rm
语法格式:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
options:
-i: 交互式操作
-f: 强制操作
-v: 显示过程信息
示例:
# mv -v fule bufu
‘fule’ -> ‘bufu’
shred :碎纸机k,覆盖文件内容,并删除该文件内容
语法格式:
shred [OPTION]… FILE…
options:
-z 清零
-v 显示过程信息
-n 操作次数
示例:
# shred -zvn5 bufu
shred: bufu: pass 1/6 (random)…
shred: bufu: pass 2/6 (ffffff)…
shred: bufu: pass 3/6 (random)…
shred: bufu: pass 4/6 (000000)…
shred: bufu: pass 5/6 (random)…
shred: bufu: pass 6/6 (000000)…
hexdump:以不同的格式显示文件内容
语法格式:
hexdump [options] file […]
options:
-
-b: 以八进制格式显示
-
-C:以十六进制+ascII显示
-
-d: 以十进制显示
-
ln filename linkname 创建硬链接
-
硬链接:不同的路径名指向同一个文件
-
硬链接不支持目录,只支持文件
-
硬链接不能跨文件系统
-
创建硬链接会增加链接计数
-
每个目录引用相同的inode号
ln -s filename linkname:创建软连接,符号链接
-
一个符号链接指向另一文件
-
符号链接可以跨文件系统
-
不会增加inode引用计数
-
可以跨文件系统
-
可以跨目录
-
符号链接指向的是另一个文件路径,大小为指定路径的大小。
file 显示文件类型
语法格式:
file [options] filename
示例:
# file 666
666: setgid directory
options:
-b:列出文件辨识结果时,不显示文件名
# file -b 666
setgid directory
-f:列出文件中文件名的文件类型(前提是文件内保存的文件名是真实存在)
# file -f file.txt
/etc/passwd: ASCII text
/usr/share/: directory
-F:使用指定分隔符替换输出文件名后默认的”:”分隔符
-L:查看软连接对应的文件的文件类型
file -L /etc/localtime
/etc/localtime: timezone data, version 2, 2 gmt time flags, 2 std time flags, no leap seconds, 16 transition times, 2 abbreviation chars
reset:重置当前的工作环境
Linux给程序提供三种IO设备
-
标准输入(STDIN) -0 默认接受来自键盘的输入
-
标准输出 stdout -1 默认输出到当前终端窗口
-
标准错误 stderr -2 默认输出到终端窗口
I/O 改变默认位置
输出重定向:
-
> file: 覆盖输出重定向
-
>> file:追加输出重定向
错误输出重定向:
-
2> file 错误覆盖输出重定向
-
2>> file 错误追加输出重定向
联合重定向,正确和错误的都输出到同一个文件:
-
ls /err /boot > /app/all 2>&1
-
ls /err /boot &> /app/all
-
ls /err /boot >& /app/all
set -C :禁止覆盖已有文件
set +C: 取消上述功能
ls /boot >| /app/ls.log 强行覆盖
(echo err 1>&2) > /app/f1把正确输出转为错误输出
(cmd1;cmd2) > f1 把两个命令的结果输出到f1
多行重定向:
cat > filename << EOF(结束符)(此处生成文档)
>ddd
>skdfjlsd
>EOF
mail -s ‘sanqueyi’ username@hostname <<EOF
mail 邮件发送程序 -s 指定标题 username@hostname 邮件接收者地址,执行上述命令,则开始输入正文,输入EOF则结束输入,邮件发送
输入重定向操作(tr命令请看下面内容):
tr ‘a-z’ ‘A-Z’ > f2 < /etc/issue
cat > f1单行重定向
wall xxxx ;发送广播信息
tr:转换或删除字符
语法格式:
tr [options] set1 [set2]
options:
-
-c:取补集
-
-d:把set1中定义的内容删除
-
-s:把set1中重复的字符压缩为一个
-
-t:将set1中的字符转换为set2,对位替换
管道
cmd1 | cmd2 :把命令1的标准输出当作命令2的标准输入,一般情况前面的成功才能正确执行
-
ls /boot /err 2>&1 | tr ‘a-z’ ‘A-Z’
-
ls /boot /err |& tr ‘a-z’ ‘A-Z’\
stderr默认不能通过管道转发,不过可以利用2>&1或者|& 实现
最后一个命令会在当前shell进程的子shell进程执行、
一页一页地查看输入:
ls -l /etc | less
mail:通过电子邮件发送输入:
lpr:把输入发送给打印机
echo “test print” | lpr -P printer_name
– 符号:
-是取前一个命令的stdout
tar -zcf – /home | tar -zxf –
ls /etc | tee file3: tee命令可以把前一个命令的输出同时保存到指定文件又输出到屏幕
tee:重定向到多个目标
command1 | tee 文件名 | command2
把命令1的stdout保存到文件名中,然后管道输入给命令2
tee -a :附加,原文件的内容不进行覆盖操作,保留原有内容。
作用:
-
保存不同阶段的输出
-
复杂管道的故障排除
-
同时查看和记录输出
readlink linkname 查看链接文件对应的原始文件
chown 设置的属主属组(普通用户不可以执行,无权限)
-
chown onwer: file 默认把文件的属主改为onwer属组改为onwer的属组
-
chown :grp file 默认修改file的属组为grp,属主不改变
-
chown owner:grp file
-
chown [options] –reference=RFILE FILE..
-
chgrp 设置文件的属组信息 (普通用户属于的组可以执行)
-
chgrp [options]..group file..
-
chgrp [options] ..–reference=RFILE FILE..
options:
-R 递归修改
文件的权限主要针对三类对象进行定义:
owner:属主,u
group:属组,g
other:其它,o
每个文件针对对每类访问者都定义了三种权限:
r:readable
w:writeable
x:eXcutable
对目录:
-
r读:可以使用ls查看文件列表,使用ls等
-
w写:可以对目录内创建删除目录内的文件
-
x执行:cd到目录内或者ls -l
对文件:
-
r读:可以使用文件查看类工具获取其内容
-
w写:可以修改文件内部内容
-
x执行:可以将可执行文件提请为一个进程
-
X:大x,给目录设定x权限,不给文件x权限
X只设定目录执行权限,而不给文件执行权限(但是,当文件本身任何一权限拥有执行权限的时候,大X将赋予该文件执行权限)
例: aa文件权限为-r–rw—x+
执行chmod a+X 后,权限为-r-xrwx–x+
bb文件权限为-r–rw—-+
执行chmod a+X 后,权限为-r–rw—-+
X一般配合-R对目录使用;对目录下的子目录加x权限,但对无执行权限的文件不会加x
目录的执行权限是一个基本权限,通常会有该权限;
权限检查顺序:
所有者,组,其他人
先检查当前用户与当前文件的属主是否相同,相同则只运用文件的属主权限,而不管其他用户权限;如果用户属主不是文件的属主,则检查用户属组和文件属组是否相同,同,则运用属组权限,而不管其他权限;以上两者都不是,则只运用其他权限
chmod :改变文件的各执行权限
语法格式:
-
chmod [OPTION]… MODE[,MODE]… FILE…
-
chmod [OPTION]… OCTAL-MODE FILE…
-
chmod [OPTION]… –reference=RFILE FILE…(复制RFILE到FILE中)
options:
-R 递归修改
mode表示法
赋权表示法,直接操作某一类用户的所有权限
授权表示法:直接操作一个用户的一个权限
数字法:
umask本质意义:
对位最大权限的unamsk相应位的权限去除,得出默认权限
-
目录的默认权限:777-umask
-
文件的默认权限:666-umask
结果中,有奇数加一,偶数不
-
umask -S 模式方式显示
-
umask -p 输出方式可调用
-
umask -p >> /etc/bashrc
非特权用户umask是002
root的umask 是022·
文件的特殊权限:
SUID,SGID,Sticky
SUID:
只能作用在可执行的二进制程序,作用在目录上无意义,执行该程序时,继承的是该程序的属主身份,访问文件时,则以程序属主去访问文件
设置SUID(显示占用u的执行权限位):
chmod u[+|-]s file
如果文件本身有执行权限,则u的执行权限位为s,否则,为S。
SGID:可以作用在文件和目录上,对于目录,有SGID,在内部创建文件,默认继承目录的属组,对文件,如某程序,执行该程序时,继承了该程序的属组,访问某文件,就是以程序的属组身份去访问文件。
chmod g[+|-]s file
sticky:只作用在目录上有意义,用户只能在此目录内删除自己创建的文件,但可以看其他人的文件。
chmod o[+|-]t file
隐藏属性
chattr +i 不能删除,修改,更改
chattr +a 只能增加、追加,(编辑文件算修改),新建用户也不行,
lsattr 查看隐藏属性
chattr +A 锁定文件访问时间
ACL访问控制列表
-
Access Control List:实现灵活的权限管理,除了文件的所有者,所属组和其他人,可以对更多的用户设置权限。
-
-
centos7 默认创建的xfs和ext4文件系统有ACL功能。
-
-
centos7之前的版本,默认手工创建的ext4文件系统无ACL功能,需要手动增加:
-
tune2fs -o acl /dev/sdb1 调整文件系统的属性、增加acl功能
-
mount -o acl /dev/sdb1 /mnt/test 挂载文件系统,支持acl
-
-
文件属性上末尾有+代表设置了acl,一旦有了acl,中间原来文件属组位权限所代表的不是原来的含义了,即为facl的umask。
-
-
getfacl file|directory:获取文件或目录的访问控制列表
-
-
setfacl -m u:wang:r file 设定用户facl
-
-
setfacl -Rm u:wang:r f2 递归设置facl权限
-
-
setfacl -M file.acl file|directory
-
file.acl为facl模版文件,通常可执行getfacl f1.txt > file.acl 获取某文件facl来充当模版
-
-
setfacl -m g:admin:rw f2 设定指定组的facl权限
-
-
setfacl -m d:u:wang:rx directory:设定指定目录下文件的facl权限,但目录不设置,默认acl
-
-
setfacl -x u:wang f2 删除后续用户的facl权限
-
-
setfacl -X file.acl directory 以前一个文件内部的facl模版删除后续文件的facl权限
-
-
base ACL不能删除
-
-
setfacl -d dir 设置默认的facl权限 ( setfacl -m d:u:wang:rx directory )
-
-
setfacl -k dir 删除默认的facl权限(仅限于目录)
-
-
setfacl -b file 删除全部的扩展facl权限
-
-
setfacl -m mask::r file 设定facl的mask值
注意:后续设置的facl权限会影响到mask,mask会自动调整以使后续设置的facl生效,达到目的。
mask: 限高线,所有facl列表扩展用户的最高权限不能超过mask
acl mask只影响所有者和other以外的所有人:所属组,自定义用户,自定义组
setfacl -m mask::rx file:设定mask值
批量设置facl权限(备份和恢复acl):
1、getfacl file1 > file.acl
2、setfacl –set-file=file.acl file2
备份和恢复ACL
getfacl -R /tmp/dir > acl.txt :递归备份该文件和文件下的子文件acl
setfacl -R -b /tmp/dir 递归删除acl
setfacl -R –set-file=acl.txt /tmp/dir 递归恢复acl
setfacl –restore acl.txt :–restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除–test以外的任何参数一同执行。
–set选项会把原有的ACL项都删除,用新的代替,需要注意是一定要包含UGO的设置,不能像-m一样只是添加ACL
setfacl –set u::rw,u:wang:r,g::r,o::- file
执行时,遍历facl列表,如果某个用户存在于多个acl设定,可进行权限累加 ,最终权限是多个acl的权限和。
ACL生效顺序:所有者,所属组,自定义用户,自定义组,其他人
tune2fs -l /dev/ 查看文件系统的属性
mkfs.ext4 /dev/ 创建文件系统
blkid /dev/查看磁盘文件系统格式,UUID
mount -o loop /xx/file mountpoint 挂载本地文件,模拟成挂载磁盘
字典: /usr/share/dict/linux.words
netstat -nt 显示访问当前ip的链接信息
原创文章,作者:switch,如若转载,请注明出处:http://www.178linux.com/70027