1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
7、常用的用户以及文件管理命令有哪些,并演示命令以及用法。
1--- Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示
1、Linux上的文件管理类命令都有
①cd,②ls,③touch,④mkdir,⑤cp,⑥mv,⑦rm,⑧rmdir,⑨pwd,⑩tree `
2、使用方法
① cd
用来切换工作目录至dirname。其中dirName表示法可为绝对路径或相对路径。
[语法]
cd (选项) (参数)
[实例]
cd : 切换回家目录; 注意:bash中, ~表示家目录;
cd ~:切换回自己的家目录
cd ~USERNAME:切换至指定用户的家目录;
cd -:在上一次所在目录与当前目录之间来回切换;
cd .. : 返回上级目录
cd ../.. :返回上两级目录
'相关的环境变量':
~]#echo $PWD 或者 ~]# pwd:当前工作目录
~]#echo $OLDPWD:上一次的工作目录
image.png
[参数]
目录:指定要显示列表的目录,也可以是具体的文件。
1.[root@localhost ~]# ls
anaconda-ks.cfg test
2.[root@localhost ~]# ls -a #显示目录下的隐藏文件
. anaconda-ks.cfg .bash_logout .bashrc .lesshst test
.. .bash_history .bash_profile .cshrc .tcshrc .viminfo
3.[root@localhost ~]# ls -A #同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)
anaconda-ks.cfg .bash_logout .bashrc .lesshst test
.bash_history .bash_profile .cshrc .tcshrc .viminfo
4.[root@localhost ~]# ls -l # -l #长格式显示文件,显示文件的详细属性信息,属主、属组、文件大小、权限等]
总用量 4
-rw-------. 1 root root 1384 5月 14 2017 anaconda-ks.cfg
drwxr-xr-x. 3 root root 128 12月 23 17:17 test
5.[root@localhost ~]# ls -lh # -h # –human-readable ,配合 -l 使用 , 以容易理解的格式列出文件大小 (例如 1K 234M 2G)]
总用量 4.0K
-rw-------. 1 root root 1.4K 5月 14 2017 anaconda-ks.cfg
drwxr-xr-x. 3 root root 128 12月 23 17:17 test
6.[root@localhost ~]# ls -ld # -d # –directory,配合 -l 使用,显示目录本身属性而非其内部的文件列表]
dr-xr-x---. 3 root root 179 12月 2 10:27
7.[root@localhost ~]# ls -r # -r # 逆序显示
test anaconda-ks.cfg
8.-R # 递归显示
[root@localhost ~]# ls -R
.:
anaconda-ks.cfg test
./test:
1 anaconda-ks.cfg2222 anaconda-ks.cfgllllllll l+l pa paa passwd q
./test/1:
2
./test/1/2:
③touch
有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
[语法]
touch(选项)(参数)
[选项]
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
stat 命令 》 用于显示文件的状态信息。stat命令的输出信息比[ls]命令的输出信息要更详细。
access time:2015-12-10 16:12:22.776423693 +0800 最近访问
modify time:2015-12-10 16:12:22.776423693 +0800 最近更改 (数据改变)
change time:2015-12-10 16:12:22.776423693 +0800 最近改动 (元数据改变)
[参数]
文件:指定要设置时间属性的文件列表。
④ mkdir
建立新目录
[语法]
mkdir (选项)(参数)
[选项]
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。
[参数]
目录:指定要创建的目录列表,多个目录之间用空格隔开。
[实例]
1.'
[root@localhost test]# mkdir -p ./1/2/3/4/5/6/7/8/
[root@localhost test]# tree ./1
./1
└── 2
└── 3
└── 4
└── 5
└── 6
└── 7
└── 8
'
2.在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
'~]# mkdir -p-m 750 bin/os_1'
'
第一个数字表示文件所有者的权限
第二个数字表示文件所有者同属一个用户组的其他用户的权限
第三个数字表示其他用户组的权限。
权限分为三种:读(r=4),写(w=2),执行(x=1)。结合起来还有可读可执行(rx=5=4+1),可读可写(rw=6=4+2)等。
所以,chmod 755设置用户的权限为:
1.文件所有者可读可写可执行 --7
2.与文件所有者同属一个用户组的其他用户可读可执行 --5
3.其他用户组可读可执行 --5
'
⑤cp
用来将一个或多个源文件或者目录复制到指定的目的文件或目录
[语法]
cp(选项)(参数)
[选项]
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
[参数]
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
⑥ mv
用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
[语法]
mv(选项)(参数)
[选项]
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
[参数]
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
[实例]
1、_将文件ex3改名为new1
'~]# mv ex3 new1'
2、_将目录/usr/men中的所有文件移到当前目录(用.表示)中:
'~]# mv /usr/men/* .'
⑦ rm
可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。
[语法]
rm (选项)(参数)
[选项]
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
[参数]
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
⑧ rmdir
用来删除空目录
[语法]
rmdir(选项)(参数)
[选项]
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
[参数]
目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。
⑨ pwd
以绝对路径的方式显示用户当前工作目录
【语法】
pwd(选项)
【选项】
--help:显示帮助信息;
--version:显示版本信息。
⑩ tree
以树状图列出目录的内容。
【语法】
tree(选项)(参数)
【选项】
2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
1、创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b
'''~]# mkdir a1 a1/{a,b} a2
~]# tree /tmp
/tmp
├── a1
│ ├── a
│ └── b
├── a2
└── systemd-private-b10abdcd914e436cbd83a534b40fe4a4-vmtoolsd.service-dLcRyq
└── tmp
└── vmware-root
7 directories, 0 files
2、在/tmp目录下创建目录:x_y, x_z, q_y, qz
~]# mkdir x{y,z} q_{y,z}
~]# tree /tmp
/tmp
├── a1
│ ├── a
│ └── b
├── a2
├── q_y
├── q_z
├── systemd-private-b10abdcd914e436cbd83a534b40fe4a4-vmtoolsd.service-dLcRyq
│ └── tmp
│ └── vmware-root
├── x_y
└── x_z
11 directories, 0 files
3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1、元数据:指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者、以及文件数据块的分布信息等等;
包括:文件的大小,权限,属主属组,时间戳,inode等属性。
2、如何查看元数据&时间戳
【命令】 stat
用于显示文件的状态信息。stat命令的输出信息比[ls]
命令的输出信息要更详细。
【语法】
stat(选项)(参数)
【选项】
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
【参数】
文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。
[root@localhost ~]# stat /tmp/mylinux
File: ‘/tmp/mylinux’
Size: 143 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 277403 Links: 14
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-03-11 22:52:35.214307783 +0800
Modify: 2018-03-11 22:51:01.463298567 +0800
Change: 2018-03-11 22:51:01.463298567 +0800
Birth: -
file:文件名
size:文件大小
block:文件占了多少个数据块
IO Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱面
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属主
Gid:该文件所属的属组
context:安全上下文
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间
修改文件的时间戳信息
【命令】 touch
有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
【语法】
touch(选项)(参数)
【选项】
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;
ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
tmp]# stat a1
文件:"a1"
大小:24 块:0 IO 块:4096 目录
设备:802h/2050d Inode:17086787 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2018-12-23 19:39:48.307151080 +0800
最近更改:2018-12-23 19:39:42.944019056 +0800
最近改动:2018-12-23 19:39:42.944019056 +0800
创建时间:-
改变访问时间
touch -a /tmp/a1
[root@localhost tmp]# stat a1
文件:"a1"
大小:24 块:0 IO 块:4096 目录
设备:802h/2050d Inode:17086787 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2018-12-23 20:07:19.173340799 +0800
最近更改:2018-12-23 19:39:42.944019056 +0800
最近改动:2018-12-23 20:07:19.173340799 +0800
创建时间:-
改变修改时间
[root@localhost tmp]# touch -m /tmp/a1
[root@localhost tmp]# stat a1
文件:"a1"
大小:24 块:0 IO 块:4096 目录
设备:802h/2050d Inode:17086787 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2018-12-23 20:07:19.173340799 +0800
最近更改:2018-12-23 20:11:41.952711180 +0800
最近改动:2018-12-23 20:11:41.952711180 +0800
创建时间:-
自定义改变时间戳
tmp]# touch -t 208801010000.00 a1
tmp]# stat a1
文件:"a1"
大小:24 块:0 IO 块:4096 目录
设备:802h/2050d Inode:17086787 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2088-01-01 00:00:00.000000000 +0800
最近更改:2088-01-01 00:00:00.000000000 +0800
最近改动:2018-12-23 20:19:09.283920351 +0800
创建时间:-
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
答:ntpdate time.ntp.org
Mkdir tfile-date +%Y-%m-%d-%H:%M:%S
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
答:cp –r /etc/p^[0-9] /tmp/mytest1 或 cp –r /etc/p[^[:digit:]]
6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
答:groupadd jack
Useradd tom –u 5001–d /tmp/tom –G jack –s /bin/zsh
7、常用的用户以及文件管理命令有哪些,并演示命令以及用法。
什么是用户?用户就是计算机对使用者的唯一标识。
为什么要有用户?因为所有进程只有用户才能运行,没有运行的进程只是一个静止的文件 。无论何时何地只有用户才能登陆系统,才能使用计算机资源。
用户格式如下:用:分隔,没有就空白。
用户名:X:UID:GID:注释:家目录:shell
ajxzl:x:1000:1000:ajxzl:/home/ajxzl:/bin/bash
slackware:x:1001:1001::/home/slackware:/bin/tcsh
用户名:用户能见的登陆名
X:密码。已放在/etc/shadow文件中。X用来占位。
UID:计算机能识别的唯一标识。同GID样:0为root.1—999为系统用户。1000—60000普通用户。60000保留。
系统用户是什么?因为所有的进程都必须得有属主也就是必须得属性某个用户。为了能让某些进程开机启动或者后台进程,所以分配了用户就叫系统用户。这些用户从来不能登陆系统。纯粹只是为了运行某进程。
GID:用户基本组。GID值和UID值一样,名字也一样。
家目录:登陆时默认目录
shell:默认登陆shell
useradd 增加用户。
useradd [选项] 用户名
useradd ajxzl
-u UID useradd -u 3001 ajxzl2
-r 系统用户 useradd -r ajxzl3
-g GID 基本组GID.但是这个组必须得事先存在 useradd -g 1000 ajxzl4
-G GID 附加组GID,同样这个组必须得事先存在 useradd -G 1001 ajxzl5
-c 注释 useradd -c "This is a testusre" ajxzl6
-d directory 用户家目录。 useradd -d /tmp/ajxzl7 ajxzl7 默认/home/USER_NAME
假如用户家事先已存在,则不会复制模板文件到家目录。
家目录模板文件 /etc/skel/
修改这个目录内容就会影响所有新增用户家目录内容。
-s shell_name 设定用户shell。默认为/bin/bash.查看所有shell:cat /etc/shells
默认shell在哪设定?/etc/default/useradd 新增用户默认选项
useradd -s /bin/cash ajxzl8
-M 不创建家目录 useradd -M ajxzl10
注意-r也是不会创建家目录的。
用户密码管理
密码管理文件:/etc/shadow,格式如下.man 5 shadow
ajxzl9:$6$/DjwtprZ$sZ/Vw4d9.8hBGLkYCl7yaqMhKqXeIVAisTGVZ53o4v5AsY4HCSE0HqP5y7d2.K/FaaHzbuKTklXVrCMgbB3Bf.:17823:0:99999:7:::
用户名:加密之后的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码过期恕限时间:账户过期时间:保留字段
共9个字段。
用户名:用户登陆名
密码:密码。可以为空,表示不要密码。如果为*或者!表示禁止通过密码登陆。
最近一次密码修改日期:
密码最小使用期:0表示未 设置
最长使用期:99999
警告日期:表示密码到了最长使用期后的警告天数
密码禁用日期:表示过了过了警告期仍然没有改密码的使用天数。到了这个天数就会禁止使用密码登陆,但可能用其他方式登陆。
账号禁用期:禁止登陆。
保留字段
修改用户:usermod [动作] username
-ag 增加附加组
-d 家目录
-m 修改家目录后移动数据到新家目录
-L 锁定用户,使之不能登陆
-U 解锁用户
删除用户 userdel –r username
passwd :命令。更改用户密码
-l/-u 锁定/解锁用户密码
-d 清空用户密码
id命令:查看用户信息
-u 只看uid
-g 只看gid
-n 结果以名字显示
newgrp group_name 切换用户基本组
finger 显示用户登陆信息
pwck:默认按照/etc/passwd检查用户各项。
正确的字段数
一个唯一且有效的用户名
一个有效的用户和组标识符
有效的主组
有效的主目录
有效的登录 shell pwck shadow 检查用户密码是否有效,是否过期等。
转载于:https://blog.51cto.com/12479468/2349305