Linux文件管理类和用户管理基础命令
1.Linux上基础文件管理类命令
1.1 cd [/PATH/]
cd:切换回家目录 注意:bash中,~表示家目录 cd ~:切换回自己的家目录 cd ~USERNAME:切换至指定用户的家目录 cd -:在上一次所在目录与当前目录之间来回切换 相关的环境变量 $PWD:当前工作目录 $OLDPWD:上一次的工作目录
1.2 ls: list,列出指定目录下的内容
ls [OPTION]... [FILE]...
-a:显示所有文件,包括隐藏文件 -A:显示除.和..之外的所有文件 -l: --long,长格式列表,即显示文件的详细属性信息: -rwxrwxrwx 1 sysrls sysrls 368640 May 23 2018 Yw_Thrpay_Khqy.dmp -:文件类型:-,d,b,c,l,s,p rwxrwxrwx: 文件属主/属主/其他组的权限 1:数字表示文件被硬链接的次数 sysrls:文件属主 sysrls:文件属组 368640:数字表示文件的大小,单位是字节 May 23 2018:文件最后一次被修改的时间 -h:--human-readable:对文件大小单位换算:换算会结果可能会非精确值 -d:查看目录自身而非其内部的文件列表 -r:reverse,逆序显示 -R:recursive,递归显示
1.3 cat: concatencate
文件文本查看工具 cat [OPTION]... [FILE]... -n: 给现实的文本行编号 -E:显示行结束符
1.4 tac: concatencate
tac [OPTION]... [FILE]... -n: 给现实的文本行编号 -E:显示行结束符
1.5 file:查看文件内容类型
file [FILE]...
1.6 echo:回显
echo [SHORT-OPTION]... [STRING]... -n:不进行转行 -e:让转义符生效 \n:换行 \t:制表符 STRING可以使用引号,单引号和双引号均可用 单引号:强引用,变量引用不执行替换 双引号:弱引用,变量引用会执行替换
1.7文件管理类命令
文件管理工具:cp, mv, rm cp命令:copy 源文件:目标文件 单源复制:cp [OPTION]... [-T] SOURCE DEST 如果DEST不存在,则事先创建次文件,并复制源文件的数据流至DEST文件 如果DEST存在: 如果DEST是非目录文件,则覆盖目标文件 如果DEST是目录文件:创建一个同名文件,复制 多源复制:cp [OPTION]... SOURCE...DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 如果DEST不存在,错误 如果DEST存在: 如果DEST是非目录文件,错误 如果DEST是目录文件:分别复制每个文件至目标目录,并保持原名 常有选项: -i:交互式复制,即覆盖之前提醒用户确认 -f:强制覆盖目标文件 -r:递归复制目录 -d:复制符号链接文件本身,而非其指向的源文件 -a: --preserve mode: ownership: timestamps: context: xattr: links: all: mv命令:move mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE...DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... 常用选项: -i: interactive -f: force rm命令:remove rm [OPTION] ... FILE... 常用选项: -i: interactive -f: force -r: recursive
2.示例:创建/tmp/a1,/tmp/a2,/tmp/a1/a,/tmp/a1/b,在/tmp目录下创建目录
~]# mkdir -p /tmp/a{1/{a,b},2} ~]#/tmp ├── a1 │ ├── a │ └── b ├── a2
~]# mkdir /tmp/{x,q}_{y,z}
3.文件的元数据信息
文件的数据分两种:
-
-
一种元数据,既属性数据:metadata
-
一种就是数据本身:data
-
3.1元数据含义
[root@cnl20115353 tmp]# file mgrcli.log mgrcli.log: Non-ISO extended-ASCII text, with LF, NEL line terminators [root@cnl20115353 tmp]# stat mgrcli.log File: ‘mgrcli.log’ Size: 61013 Blocks: 120 IO Block: 4096 regular file Device: fd03h/64771d Inode: 67 Links: 1 Access: (0640/-rw-r-----) Uid: (50428/ ibps) Gid: (50428/ ibps) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2019-09-08 18:42:55.154195939 +0800 Modify: 2019-09-08 09:57:17.813663950 +0800 Change: 2019-09-08 09:57:17.813663950 +0800
文件时间戳
atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;
可用touch修改元数据中文件时间
[root@cnl20115353 tmp]# touch -a test.txt 修改访问时间 [root@cnl20115353 tmp]# stat test.txt File: ‘test.txt’ Size: 2 Blocks: 8 IO Block: 4096 regular file Device: fd03h/64771d Inode: 72 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2019-09-08 19:04:36.912410109 +0800 Modify: 2019-09-08 19:01:00.323046965 +0800 Change: 2019-09-08 19:04:36.912410109 +0800 Birth: - [root@cnl20115353 tmp]# touch -m test.txt 改变修改时间 [root@cnl20115353 tmp]# stat test.txt File: ‘test.txt’ Size: 2 Blocks: 8 IO Block: 4096 regular file Device: fd03h/64771d Inode: 72 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2019-09-08 19:04:36.912410109 +0800 Modify: 2019-09-08 19:05:07.920748864 +0800 Change: 2019-09-08 19:05:07.920748864 +0800 Birth: - [root@cnl20115353 tmp]# date Sun Sep 8 19:05:57 HKT 2019 [root@cnl20115353 tmp]# touch 201909081906.30 test.txt 自定义改变时间戳 [root@cnl20115353 tmp]# stat test.txt File: ‘test.txt’ Size: 2 Blocks: 8 IO Block: 4096 regular file Device: fd03h/64771d Inode: 72 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2019-09-08 19:06:24.221580886 +0800 Modify: 2019-09-08 19:06:24.221580886 +0800 Change: 2019-09-08 19:06:24.221580886 +0800 Birth: - [root@cnl20115353 tmp]#
4.在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名如tfile-2016-05-27-09-32-22
touch tfile-$(date +%F-%H-%M-%S)
5.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp -r /etc/p*[^0-9] /tmp/mytest1/
6.创建用户tom,指定UID为5001,指定家目录为/tmp/tom,指定shell为/bin/zsh,指定基本组为tom,附加组为jack
useradd -u 5002 -g tom -G jack -d /tmp/tom -s /bin/zsh tom
7.常用的用户以及文件管理命令
Linux用户和组管理 安全上下文: 进程以其发起者的身份运行 进行对文件的访问权限,取决于发起此进程的用户的权限 为了能够让那些后台进行或服务类进程以非管理员的身份进行,通常需要为此创建多个普通用户:这些用户从不登录系统 groupadd命令:添加组 group [OPTION] group_name -g GID:指定GID:默认是上一个组的GID+1 -r:创建系统组 groupmod命令:修改组属性 groupmod -g GID:修改组ID -n newname:修改组名 groupdel命令:删除组 useradd命令:添加用户 -u UID:指定UID -g GID:指定基本组ID,次组必须存在 -G group1,group2:添加用户的附加组 -c comment:用户描述 -d:创建新用户并指定其家目录,通过复制/etc/skel此目录并重命名实现:指定的家目录路径如果事先存在,则不会为用户复制环境配置文件 -s:指定用户默认shell,可用的shell--/etc/shells -r:创建系统用户 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs -D:创建用户时默认的配置列表 -D 选项: 修改默认选项的值: 修改的结果保存于/etc/default/useradd文件中; usermod命令:修改用户属性 -u:修改UID -g:修改用户所属的基本组: -G:修改用户所属的附加组,如果已有则覆盖原有的 -a:与-G一起使用,用于为用户追加新的附加组 -c comment:修改注释信息 -d HOME_DIR:修改用户家目录 -m:只能与-d选项一同使用,用于将原来的目录移动到新的家目录 -l NEW_LOGIN:修改用户名 -s:修改用户默认shell -l: 锁定用户密码,即在用户原来的密码字符串之前添加! -U:解锁用户的密码 userdel命令:删除用户 userdel[option] user -r:删除用户时一并删除其家目录 passwd命令: (1)passwd:修改用户自己的密码: (2)passwd USERNAME:修改指定用户的密码,root执行 -l,-u:锁定和解锁用户 -d: -e DATE:过期期限,日期 -i DAYS:非活动期限 -n DAYS:密码的最短使用期限 -x DAYS:密码的最长使用期限 -w DAYS:警告期限 --stdin echo "PASSWORD" | passwd --stdin USERNAME gpasswd命令: gpasswd [OPTION] group -a USERNAME:向组中添加用户 -d USERNAME:从组中移除用户 newgrp命令:临时切换指定的组为基本组 chage命令:更改用户密码过期信息 -d: -E: -W: -m: -M: id命令:显示用户真的和有效的用户信息 id [OPTION]...USER -u:仅显示用户有效UID -g:仅显示用户的基本组ID -G:仅显示用户所属的附加组ID -n:显示名字而非ID su命令:switch user 登录式切换:读取用户的配置文件来进行重新初始化 su - USERNAME 非登录式切换:不会读取用户的配置文件进行初始化 su USERNAME 注意:管理员可无密码切换至其它任何用户 -c 'COMMAND':仅以指定用户的身份运行此处指定的命令