7.3 使用chgrp命令查看文件用户组的变化

chgrp –v

chgrp -c

或许你已注意到chgrp命令与所有行为良好的Linux应用程序一样,只有在出现问题时才提供反馈信息。如果程序运行正常,正确地完成了任务,它不会向你提示任何类似“喂!我完成了,一切正常!”这样的信息。只有当出现了需要解决的问题时,Linux命令行应用程序才会显示提示信息。

如果你想知道chgrp命令运行过程中发生了什么,可以先试试-v(或--verbose)选项。它可以告诉你chgrp命令在每一步中执行了什么任务。

  1. $ ls -lF
  2. drwxr-xr-x 4 scott scott ... by_pool/
  3. -rw-r--r-- 1 scott scott ... libby_arrowrock.jpg
  4. -rw-r--r-- 1 scott family ... libby.jpg
  5. -rw-r--r-- 1 scott scott ... libby_on_couch.jpg
  6. drwxr-xr-x 2 scott scott ... on_floor/
  7. $ chgrp -v family *
  8. changed group of 'by_pool' to family
  9. changed group of 'libby_arrowrock.jpg' to family
  10. group of 'libby.jpg' retained as family
  11. changed group of 'libby_on_couch.jpg' to family
  12. changed group of 'on_floor' to family
  13. $ ls -lF
  14. drwxr-xr-x 4 scott family ... by_pool/
  15. -rw-r--r-- 1 scott family ... libby_arrowrock.jpg
  16. -rw-r--r-- 1 scott family ... libby.jpg
  17. -rw-r--r-- 1 scott family ... libby_on_couch.jpg
  18. drwxr-xr-x 2 scott family ... on_floor/

注意,这个例子中发生的事情。libby.jpg文件已经成为family用户组的一员了,但是-v选项继续报告提示信息,确保用户知道libby.jpg的用户组已经是family。如果你正在修改某个用户组,可能不需要知道原来已经属于这个用户组的内容。在这种情况下,则需要使用-c(或--changes)选项,毫无疑问,它只会显示修改过的内容。

  1. $ ls -lF
  2. drwxr-xr-x 4 scott scott ... by_pool/
  3. -rw-r--r-- 1 scott scott ... libby_arrowrock.jpg
  4. -rw-r--r-- 1 scott family ... libby.jpg
  5. -rw-r--r-- 1 scott scott ... libby_on_couch.jpg
  6. drwxr-xr-x 2 scott scott ... on_floor/
  7. $ chgrp -c family *
  8. changed group of 'by_pool' to family
  9. changed group of 'libby_arrowrock.jpg' to family
  10. changed group of 'libby_on_couch.jpg' to family
  11. changed group of 'on_floor' to family
  12. $ ls -lF
  13. drwxr-xr-x 4 scott family ... by_pool/
  14. -rw-r--r-- 1 scott family ... libby_arrowrock.jpg
  15. -rw-r--r-- 1 scott family ... libby.jpg
  16. -rw-r--r-- 1 scott family ... libby_on_couch.jpg
  17. drwxr-xr-x 2 scott family ... on_floor/

这一次不会显示关于libby.jpg的信息,因为它早已属于family用户组了。所以,如果你想得到完整的显示,甚至包括没有修改过的文件,就应该使用-v选项;如果你想得到简洁点儿的显示,就应该使用-c选项。