Examples:
os.Setenv("FOO", "1")
fmt.Println("FOO:", os.Getenv("FOO")) //=> FOO: 1
fmt.Println("BAR:", os.Getenv("BAR")) //=> BAR:
val, ok := os.LookupEnv("BAR")
// val => ""
// ok => false
参考:
SYNOPSIS:
// ファイル内容読み取り
file, err := os.Open(path)
if err != nil {
panic(err)
}
defer file.close
buf, err := ioutil.ReadAll(file)
// ファイル作成
file, err := os.Create(path)
// エラー処理省略
defer file.close
err = file.Write(text)
// ファイル or ディレクトリ削除
err := os.Remove(path)
https://golang.org/pkg/os/#pkg-constants
// Flags for OpenFile. ファイルオープン時のモード
const (
// O_RDONLY, O_WRONLY, O_RDWR のどれか1つだけ指定されないといけない
O_RDONLY int = syscall.O_RDONLY // open the file read-only.
O_WRONLY int = syscall.O_WRONLY // open the file write-only.
O_RDWR int = syscall.O_RDWR // open the file read-write.
// 後のフラグは任意
O_APPEND int = syscall.O_APPEND // append data to the file when writing.
O_CREATE int = syscall.O_CREAT // create a new file if none exists.
O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist.
O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
O_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened.
)
// Path separator
const (
PathSeparator = '/' // OS-specific path separator
PathListSeparator = ':' // OS-specific path list separator
)
https://golang.org/pkg/os/#pkg-variables
var (
Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)
https://golang.org/pkg/os/#Chdir
func Chdir(dir string) error
カレントディレクトリを変更する。
エラーは *PathError
型。
https://golang.org/pkg/os/#Chmod
func Chmod(name string, mode FileMode) error
Example:
// UNIX系システムでファイルに実行ビットを立てる。一部エラー処理省略
fi, _ := os.Stat(path)
if err := os.Chmod(path, fi.Mode()|0111); err != nil {
log.Fatal(err)
}
https://golang.org/pkg/os/#Create
func Create(name string) (*File, error)
O_RDWR
(読み書き両用)でオープンする0666
が指定される(umask前)https://golang.org/pkg/os/#Getenv
func Getenv(key string) string
keyの環境変数を返す。
取得できなかった場合は空文字が返る。
https://golang.org/pkg/os/#Getwd
func Getwd() (dir string, err error)
カレントディレクトリの絶対パスを返す。
https://golang.org/pkg/os/#Mkdir
func Mkdir(name string, perm FileMode) error
与えられたパーミッションでディレクトリを作成する。
Unix系OSだと、umask値によって挙動がちょっと変わるっぽい。
参考:
func MkdirAll(path string, perm FileMode) error
nil
を返すhttps://golang.org/pkg/os/#NewFile
func NewFile(fd uintptr, name string) *File
NewFile returns a new File with the given file descriptor and name.
https://golang.org/pkg/os/#Open
func Open(name string) (*File, error)
モード O_RDONLY
(読み取り専用)でファイルを開く。
https://golang.org/pkg/os/#OpenFile
func OpenFile(name string, flag int, perm FileMode) (*File, error)
flag(モード)やパーミッションを指定してファイルを開く。
https://golang.org/pkg/os/#Readlink
func Readlink(name string) (string, error)
シンボリックリンクのリンク先を返す。
シンボリックリンクでなければ空文字を返すが、エラーになるわけではない。
エラーは *PathError
なので、これはnameが読めないときとかに起こるのだと思う。
func Stat(name string) (FileInfo, error)
ファイルパスを受け取って、ファイルの情報を返す。
エラーがあったら、きっと *PathError
参考:
https://golang.org/pkg/os/#Symlink
func Symlink(src, link string) error
srcへのlinkを作る。
エラーは *LinkError
型。
https://golang.org/pkg/os/#TempDir
func TempDir() string
デフォルトのテンポラリファイル用のディレクトリパスを返す。
$TMPDIR
または /tmp
https://golang.org/pkg/os/#UserHomeDir
func UserHomeDir() (string, error)
Unix系システムなら $HOME
, Windowsなら %USERPROFILE%
の値を返す。
https://golang.org/pkg/os/#File
オープンしたファイルディスクリプタを表現する構造体。
https://golang.org/pkg/os/exec/
コマンド実行で使う。
SYNOPSIS:
cmd := exec.Command("sh", "-c", "echo stdout; echo 1>&2 stderr")
// コマンドの出力を標準(エラー)出力に設定
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
// cmd.Stdin = os.Stdin // 標準入力も設定可能
// コマンド実行
err := cmd.Run()
// コマンド実行し、stdoutを取得
out, err := cmd.Output()
// stdout, stderrをまとめて受け取る
stdoutStderr, err := cmd.CombinedOutput()