첫 번째 명령의 출력을 기반으로 두 명령을 실행합니다.

첫 번째 명령의 출력을 기반으로 두 명령을 실행합니다.

저는 유닉스 명령을 처음 접했지만 필요합니다. 저는 사용자 계정으로 Win AD를 사용하고 파일 저장을 위해 Mac을 사용하는 혼합된 Win/Mac 환경을 가지고 있습니다.

Mac에는 사용자를 위한 홈 폴더를 자동으로 생성하고 제 경우에는 "createhomedir -s"에 적절한 권한을 설정하는 명령이 있습니다. 이 명령의 출력은 다음과 같습니다.

creating home directories for (cloud.mc.net.mackillop)
created (/Network/Servers/cloud.mc.net.mackillop/data/18goodki/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/18langre/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/16gibsga/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/17gibssa/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/99bowmam/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/99newtal/files)
created (/Network/Servers/cloud.mc.net.mackillop/data/99daypa/files)

그런 다음 내가 해야 할 일은 OwnCloud.org를 사용하여 사용자 파일에 대한 액세스를 제공하기 때문에 새로 생성된 홈 폴더에 대한 추가 권한을 설정하여 나 자신에게 읽기/쓰기 액세스 권한과 _www(Apache 웹 호스트)를 제공하는 것입니다. 웹 기반 클라우드 입장.

이를 달성하기 위해 실행하는 두 가지 명령은 다음과 같습니다.

sudo chmod -R +ai "_www allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" data

sudo chmod -R +ai "ittech allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" data

모든 사용자 및 하위 폴더에 대해 전체 "data" 폴더에 대해 이 두 명령을 실행하면 시간이 오래 걸리고(973개의 사용자 계정!) 서버 속도가 실제로 느려질 수 있습니다. 내가 원하는 것은 새로 생성된 사용자에 대해 첫 번째 명령부터 시작하여 두 명령을 모두 실행하여 시간과 오버헤드를 크게 줄이는 것입니다.

나는 grep, awk 등에 대해 읽었지만 이것을 구현하는 방법을 잘 모르겠습니다.

따라서 기본적으로 실행을 시작한 createhomedir -s다음 해당 명령의 출력에서 ​​각 사용자 이름을 추출한 다음 해당 사용자 이름을 사용하여 "data" 폴더(/data/%USERNAME%) 대신 두 개의 chmod를 실행하고 싶습니다.

답변1

쉽습니다...다음과 같이 포장하면 됩니다(참고: 생성 비트가 성공하고 createhomedir의 출력이 STDERR이 아닌 STDOUT에 있다고 가정합니다).

for i in $(createhomedir -s | grep -o 'data/[^\/]*' )
do
  echo sudo chmod -R +ai "_www allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit"  $i
  echo sudo chmod -R +ai "ittech allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" $i
done

명령이 적절하다고 생각되면 "echo"를 제거하십시오.

관련 정보