1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
1)chown命令:将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
用法:
chown [选项]... [所有者][:[组]] 文件...
命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
选择参数:
--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
--help 显示帮助信息
--version 显示版本信息
示例:
[root@localhost tmp]# ll etc.conf
-rw-r--r--. 1 root root 3130 8月 29 21:54 etc.conf
[root@localhost tmp]# chown test:users etc.conf
[root@localhost tmp]# ll etc.conf
-rw-r--r--. 1 test users 3130 8月 29 21:54 etc.conf
[root@localhost tmp]#
2)passwd命令:修改用户密码
用法: passwd [选项...] <帐号名称>
-k, --keep-tokens 保持身份验证令牌不过期
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, --lock lock the password for the named account (root only)
-u, --unlock unlock the password for the named account (root only)
-e, --expire expire the password for the named account (root only)
-f, --force 强制执行操作
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
实例:
[root@localhost tmp]# echo "hello_world"|passwd test --stdin
更改用户 test 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost tmp]#
3)useradd命令:创建新用户
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
实例:
[root@localhost tmp]# useradd -d /opt/hello -s /sbin/nologin hello
[root@localhost tmp]# tail -1 /etc/passwd
hello:x:507:507::/opt/hello:/sbin/nologin
[root@localhost tmp]#
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令行展开:
~:展开为用户的主目录
~USERNAME:展开为指定用户的目录
{}:可展开为多个路径,多个路径以逗号分隔。
如:/tmp/{a,b,c} 则展开为/tmp/a , /tmp/b , /tmp/c 三个目录或者文件
命令的执行结果状态:
Bash使用特殊变量$?保存最近一条命令的执行状态结果:echo $?
成功:0
失败:1-255
例如:
[root@localhost tmp]# cat /etc/passwd >/dev/null 2>&1;echo $?
0
[root@localhost tmp]# cat /etc/passwd1 >/dev/null 2>&1;echo $?
1
[root@localhost tmp]#
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# touch {a,b}_{c,d};ll [ab]*
-rw-r--r--. 1 root root 0 9月 2 22:28 a_c
-rw-r--r--. 1 root root 0 9月 2 22:28 a_d
-rw-r--r--. 1 root root 0 9月 2 22:28 b_c
-rw-r--r--. 1 root root 0 9月 2 22:28 b_d
[root@localhost tmp]#
(2)、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
mkdir -pv mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig,network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/{local,bin,sbin},var,lock,log,run}
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1)文件的元数据信息及查看:
文件的数据分两种:
A、一种元数据(Metadata),既属性数据;
B、另一种就是数据本身数据(data)。
可使用stat命令查看文件的元数据:
[root@localhost ~]# stat passwd
File: "passwd"
Size: 2031 Blocks: 8 IO Block: 4096 普通文件
Device: fd00h/64768d Inode: 803478 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-06-04 15:05:02.009019497 +0800
Modify: 2018-06-04 15:04:59.954019501 +0800
Change: 2018-06-04 15:04:59.954019501 +0800
其中:
file:文件名;
size:文件大小
block:文件占了多少个数据块
IO Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱面
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属主
Gid:该文件所属的属组
context:安全上下文
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间
2)修改文件的时间戳信息:
可以使用touch命令更改文件的时间戳:
语法:touch [OPTION]… FILE…
常用选项:
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t:使用指定的日期时间,而非现在的时间;[[CC]YY]MMDDhhmm[.ss];
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
alias:显示当前shell进程所有可用的命令别名
用法 : alias newname="oldname option" #newname就是命令别名
例如:
[root@localhost ~]# alias tmp="cd /tmp"
[root@localhost ~]# tmp
[root@localhost tmp]# pwd
/tmp
注意:在命令行中新定义的别名,仅对当前shell进程有效,如果想永久有效,要定义配置文件
对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
使用管道符可以引用另一个命令的执行结果,如:
[root@localhost tmp]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost tmp]#
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
find /var -maxdepth 1 -name "l*[0-9]*[a-z]" -type f -o -name "l*[0-9]*[a-z]" -type d
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
find /etc -maxdepth 1 -name "[0-9]*[^0-9]" -type f -o -name "[0-9]*[^0-9]" -type d
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
find /etc -name "[^a-zA-Z][a-zA-Z]*" -type d -o -name "[^a-zA-Z][a-zA-Z]*" -type f
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch tfile_`date +%Y%m%d%H%M%S`
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -a p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -a /etc/*.d /tmp/mytest2/
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
find /etc -name "[lmn]*.conf" -type f -exec cp {} /tmp/mytest3 \;