初心者のGo言語 -29- <Args,Lchown>
こんにちは、kurumi-bioです。
第13回目のosパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
Args変数
var Args []string
◆テストコード
package main import ( "fmt" "os" ) func main() { for i, v := range os.Args { fmt.Printf("Args[%d]=%s\n", i, v) } }
◆実行結果(Windows)
Lchown関数
func Lchown(name string, uid, gid int) error
◆テストコード
package main import ( "fmt" "os" ) func main() { if len(os.Args) != 2 { fmt.Fprintln(os.Stderr, "ファイルを指定してください") os.Exit(1) } fn := os.Args[1] e := os.Lchown(fn, 1001, 1000) if e != nil { fmt.Fprintf(os.Stderr, "%v\n", os.NewSyscallError("os.Lchown", e)) os.Exit(1) } else { fmt.Printf("ファイル[%s]のuidとgidを変更しました。\n", fn) } }
◆実行結果(Windows)
◆実行結果(Linux)
普通のファイルとハードリンクとシンボリックリンクの3種類のファイルに対して、uidとgidを変更します。
statコマンドを使って、test-hファイルとhardlinkファイルは同一ファイル(ハードリンク)であることを確認
symboliclinkファイルは、test-sファイルのシンボリックリンクであること。
全てのファイルは、uidがkurumiでgidがuserであること。
を確認。
uid:1001は、goというユーザーであること。
gid:1000は、go-userというグループであること。
を確認
testファイルのuidとgidを変更
hardlinkファイルのuidとgidを変更。リンク先のtest-hファイルもuidとgidが変更されています。
symboliclinkファイルのuidとgidを変更。リンク先のtest-sファイルはuidとgidは変更されませんでした。
最後までご覧いただきありがとうございます