目录管理
ls、cd、pwd、mkdir、rmdir、tree
ls(list) 列出,列表
用法:
ls
-l:长格式
文件类型:
-:普通文件 (f)
d: 目录文件
b: 块设备文件 (block)
c: 字符设备文件 (character)
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify,文件内容发生了改变
改变:change,metadata,元数据
-h:做单位转换
-a: 显示以.开头的隐藏文件
. 表示当前目录
.. 表示父目录
-A
-d: 显示目录自身属性
-i: index node, inode
-r: 逆序显示
-R: 递归(recursive)显示
cd(change directory)
用法:
cd ~USERNAME:进入指定用户的家目录
cd ..:进入父级目录
cd -:在当前目录和前一次所在的目录之间来回切换
cd:进入当前用户主目录
pwd(Printing Working directory)
显示当前路径
mkdir(make directories)
-p:创建目录树
-v:显示创建目录的信息
此两个命令联合使用最有效。
mkdir -pv /hehe/heihei/haha
创建多级目录
mkdir /test/{x/m,y}
mkdir /test/{a,d}_{b,c}
rmdir(remove directory)
-p 若目录为多级目录,从最后一个目录开始删除。
文件管理
touch、stat、file、rm、cp、mv
touch(change file timestamps)修改文件时间戳
-a:修改文件访问时间
-m:修改文件修改时间
-t:使用[[CC]YY]MMDDhhmm[.ss]格式修改文件时间戳
-c:创建空文件
rm(remove)
移除文件或者目录
-i:进行确认提示。(在同时给定了-f和-i选项时,列在最后的生效。)
-f:忽略不存在的文件,并且从不向用户提示。
-r:或者 -R 递归地移除目录树。
cp(copy)
-i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-f 覆盖已经存在的目标文件而不给出提示。
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l 建立硬链接,而非复制
-d 复制符号链接
mv(move)
移动(改名)文件
-t: 指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
日期时间
date、clock、hwclock、cal
显示日期的指令: date(显示系统时间)
hwclock(显示硬件时间)
-w:系统时间同步到硬件时间
-s:硬件时间同步到系统时间
显示日历: cal
计算器: bc
查看文本
cat、tac、more、less、head、tail、tee
cat 连接文件并在标准输出上输出
-n:显示文本行数
-E:在每行结束显示 $
head:查看前n行
tail:查看后n行
-n
tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;
tee:既显示输出内容,又把内容输入到文件中。
文本处理
cut:
-d: 指定字段分隔符,默认是空格
-f: 指定要显示的字段
-f 1,3
-f 1-3
文本排序:sort
-n:数值排序
-r: 降序
-t: 字段分隔符
-k: 以哪个字段为关键字进行排序
-u: 排序后相同的行只显示一次
-f: 排序时忽略字符大小写
uniq: 删除排序中重复的行
-c: 显示文件中行重复的次数
-d: 只显示重复的行
文本统计:wc (word count)
-l:输出换行符统计数
-w:输出单词统计数
-c:输出字节统计数
-L:输出最长的行的长度
字符处理命令:tr —— 转换或删除字符
tr [OPTION]... SET1 [SET2]
-d: 删除出现在字符集中的所有字符
命令历史
history 查看
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
用户与用户组及其权限管理
用户管理
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage
useradd,添加用户
-c 描述
-d 家目录
-g 所属组
-G 附属组
-s 环境变量
-u uid
例:useradd -c thisisauser -d /home -g whych -G whych -u 2017 -s /sbin/nologin
chage 修改账号密码有效期限
-M 最大天数
-m 最小天数
userdel 删除用户
-r 同事删除用户的家目录
usermod,修改用户信息
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。
id:查看用户的帐号属性信息
-u:显示用户id
-g:显示组id
-G:显示附加组
-n:显示真实id
finger: 查看用户帐号信息
finger USERNAME
chsh: 修改用户的默认shell
chfn:修改注释信息
组管理
groupadd, groupdel, groupmod, gpasswd
创建组:groupadd
groupadd
-g GID
-r:添加为系统组
groupmod
-g GID
-n GRPNAME
groupdel
gpasswd:为组设定密码
权限管理
chown, chgrp, chmod, umask
chown: 改变文件属主(只有管理员可以使用此命令)
chown USERNAME file,...
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,...
chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...
chgrp GRPNAME file,...
-R:同上
chmod: 修改文件的权限
chmod +|- MODE file,...
-R:同上
修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...
修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别+|-MODE file,...
特殊权限(suid、sgid、sticky)
一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置。
setuid: 使文件在执行阶段具有文件所有者的权限。
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
sticky bit: 该位可以理解为防删除位。一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件。
换种理解方法如下:
SUID:运行某程序时,相应进程的属主是程序文件本身的属主,而不是启动者。
SGID:运行某程序时,相应进程的属组是程序文件本身的属组,而不是启动者。
Sticky:在一个公共目录,每个都可以创建文件,删除,而其它人不能。
操作:
chmod u+s file — 为file加上setuid标志. (setuid 只对文件有效)
如果file本身有执行权限,则s显示小写,否则大写。
chmod g+s file — 为file目录加上setgid标志 (setgid 只对目录有效)
如果file本身有执行权限,则s显示小写,否则大写。
chmod o+t file — 为file文件加上sticky标志 (sticky只对文件有效)
如果file本身有执行权限,则t显示小写,否则大写。
权限位:SUID(4),SGID(2),STICKY(1)
000:
001:只有sticky
. . .:
111:suid+sgid+sticky(6)
chmod 3755 /tmp/test 此处是4位权限位。3就代表是sgid+sticky
所以经常看到的umask总是四位
umask 0022
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限+1
umask 022
默认创建文件和目录的权限就是:
文件:666-022
目录:777-022
facl (filesystem access control list)
可以针对单一用户、单一文件或者目录来进行rwx的权限控制。如某一个文件,不让单一的某个用户访问。
setfacl :设置某个文件/目录的ACL设置项目
-m:设置后续acl参数
-x:删除
-R:递归设置
getfacl:
取得某个文件/目录的ACL设置项目
文件查找
locate
非实时,模糊匹配,查找是根据全系统文件数据进行的。
速度快
find
实时,精确,支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢。
-name 'FILENAME':对文件名作精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找
-uid UID: 根据UID查找
-gid GID: 根据GID查找
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
-type
f:普通文件
d:目录
c:特殊字符文件
b:特殊块文件
l:符号链接
s:套接字
-size [+|-]
k
M
G
精确匹配:
-perm MODE
-MODE:任意以为匹配即满足条件
/MODE:文件权限能完全包含次MODE时才符合条件
find / -perm /222
组合条件
-a:and
-o:or
-not:
-mtime n 查找系统中最后n*24小时数据修改的文件
-ctime n 查找系统中最后n*24小时状态被改变的文件
-atime n 查找系统中最后n*24小时访问的文件
-mmin n 查找系统中最后n分钟数据修改的文件
-cmin n
-amin n
xargs与-exec
xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数。
# find . -name test11.txt | xargs rm
-exec rm {} ;:{} 表示命令的参数即为所找到的文件,以;表示comman命令的结束。是转义符。
# find . -name test222.txt -exec rm {} ; 对每个匹配的文件执行一个单独的rm操作
登录信息命令
w,who,last,lastb,lastlog
终端:
pty #:物理终端
tty #:虚拟终端
ttys #:串行终端
pts #:伪终端
w:显示已经登录的用户以及他们在做什么
who:显示已经登录的用户
last:显示 /var/log/wtmp文件用户登录历史及系统启动历史
-n #:显示最近#次的历史
lastb:显示/var/log/btmp文件,显示用户错误的登录尝试
-n #:显示最近#次的历史
lastlog:显示每一个用户最近一次的成功登录信息
-u USERNAME:显示特定用户最近的登录信息
basename:
$0:执行脚本时的脚本路径及名称