Điểm:0

Sử dụng awk để nối văn bản vào cuối dòng trong/etc/group

lá cờ fr

Tôi đang viết một kịch bản để tự động hóa một số tác vụ và tôi cần thêm người dùng vào một nhóm trong/etc/group. Tôi đang cố gắng sử dụng lệnh này:

Sudo bash -c "awk '{if (/^moli/) {$0=$0"$uservar,"}; in' /etc/group > /etc/group"

Vấn đề tôi đang gặp phải là tôi nhận được

awk: cmd. dòng:1: {if (/^moli/) {-bash=-bashtestuser1,}; in
awk: cmd. dòng:1: ^ lỗi cú pháp
awk: cmd. dòng:1: {if (/^moli/) {-bash=-bashtestuser1,}; in
awk: cmd. dòng:1: ^ dòng mới bất ngờ hoặc cuối chuỗi

Nếu tôi thay đổi ' ' đến "" Tôi có: -bash: lỗi cú pháp gần mã thông báo không mong muốn '('

pLumo avatar
lá cờ in
Ý nghĩa của việc sử dụng `bash -c` ở đây là gì? Bạn không thể làm `awk ... | sudo tee /etc/group` ? Tuy nhiên, tôi thực sự khuyên bạn không nên chỉnh sửa tệp `/etc/group` theo cách thủ công. Nếu bạn làm bất cứ điều gì sai, bạn có thể tự khóa mình khỏi hệ thống của mình. Ít nhất bạn phải làm là tạo một bản sao lưu của tệp. Ngoài ra, `$uservar` là gì? Có vẻ như bạn muốn sử dụng `Sudo sed -i ...`
pLumo avatar
lá cờ in
Không chỉnh sửa `/etc/group` theo cách thủ công! Thay vì sử dụng lệnh `usermod`. Xem [tại đây](https://askubuntu.com/questions/79565/how-to-add-current-user-to-an-current-group).
TL_Arwen avatar
lá cờ fr
Tôi đã thử `usermod -a -G moli username` để kiểm tra. Tôi đã kiểm tra xem liệu người dùng có xuất hiện trong/etc/group hay không nhưng họ không có ở đó.
pLumo avatar
lá cờ in
Bạn có thể cần đăng xuất/đăng nhập để xem những thay đổi mà tôi đoán, điều đó cũng được viết trong câu trả lời từ liên kết ;-)
TL_Arwen avatar
lá cờ fr
Nó không hiển thị trong /etc/groups nhưng nếu tôi chạy `tên người dùng nhóm` thì nó sẽ hiển thị ở đó.
Điểm:1
lá cờ in

Có rất nhiều vấn đề trong mã nhỏ của bạn:

  • Dấu ngoặc đơn bên trong dấu ngoặc kép không ngăn thay thế biến.
    Cho nên, $0 mở rộng đến /bin/bash. Nhìn thấy đây.

  • Bạn thực sự rất may mắn khi lệnh của bạn không thành công!! Nếu làm việc, nó sẽ làm trống của bạn /etc/nhóm tập tin và bạn sẽ gặp vấn đề nghiêm trọng.
    Trong thời điểm bạn phát hành lệnh> tập tin, tập tin được mở và làm trống để viết, và chỉ huy sẽ thấy một tập tin trống.

    sử dụng tốt hơn > file.temp && mv file.temp tập tin hoặc awk -i tại chỗ ....

  • Thay vì thêm đánh đập biến trực tiếp trong awk mã, sử dụng awk -v var=$var tùy chọn và sử dụng var phía trong awk.


Vậy lam gi ?

Bạn không cần địa ngục trích dẫn trùng lặp này, bạn chỉ cần sử dụng:

Sudo awk -i inplace '...' tập tin

hoặc

tập tin awk '...' | sudo tee file.temp && sudo mv file.temp tập tin

hoặc cho trường hợp của bạn phù hợp hơn sed:

tập tin sudo sed -i '...'

Tuy nhiên, bạn không nên thay đổi /etc/nhóm thủ công cả.

Thêm người dùng với người dùng (như đề xuất đây):

sudo usermod -a -G groupName tên người dùng

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.