{"id":85910,"date":"2024-11-28T23:38:27","date_gmt":"2024-11-28T20:08:27","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/"},"modified":"2024-11-28T23:38:27","modified_gmt":"2024-11-28T20:08:27","slug":"day-10-ls-l-40i4","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/","title":{"rendered":"\u0631\u0648\u0632 10: ls -l *"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc<\/p>\n<p>\u0628\u0627\u0632\u0627\u0631 \u0633\u062e\u062a \u0627\u0633\u062a. \u0627\u06cc \u06a9\u0627\u0634 \u0645\u0635\u0627\u062d\u0628\u0647 \u0631\u0627\u062d\u062a \u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0645. \u0627\u0645\u0627\u060c \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0645\u0642\u0627\u0644\u0647 \u0627\u06cc \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645\u060c \u0645\u0634\u06a9\u0644 \u0644\u06cc\u062a \u06a9\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0645 \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0628\u0631\u0645\u060c \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0622\u0646\u0647\u0627 \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0645\u0635\u0627\u062d\u0628\u0647 SRE \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0645\u0646 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0634\u06a9\u0627\u0644\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0646 \u0645\u06cc \u06af\u0648\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc\u060c \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0646\u0627\u0645\u0632\u062f \u0646\u0628\u0648\u062f\u0645. \u06cc\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u06a9\u0627\u0631\u0641\u0631\u0645\u0627\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646 \u0646\u0628\u0648\u062f\u0646\u062f. \u062f\u0631 \u0647\u0631 \u0635\u0648\u0631\u062a\u060c \u0645\u0646 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0647 \u062a\u0645\u0631\u06cc\u0646\u060c \u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u067e\u0634\u062a\u06a9\u0627\u0631 \u0627\u062f\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f.   <\/p>\n<p>  \u0644\u06cc\u0633\u062a \u062f\u0631 Bash \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0648\u0627\u0644\u0627\u062a\u06cc \u06a9\u0647 \u0627\u0632 \u0645\u0646 \u067e\u0631\u0633\u06cc\u062f\u0646\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0686\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u061f<\/p>\n<p>$ ls -l *<\/p>\n<p>  \u062e\u0631\u0648\u062c\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a:<\/p>\n<p>\u279c  pwd $ ls -l *<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group    0 Month 01 14:05 LICENSE<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group  202 Month 01 14:05 go.mod<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group  896 Month 01 14:05 go.sum<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group  138 Month 01 14:05 main.go<\/p>\n<p>cmd:<br \/>\ntotal 8<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group  1444 Month 01 14:05 root.go<\/p>\n<p>internal:<br \/>\ntotal 16<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group   37 Month 01 16:05 main.go<br \/>\n-rw-r&#8211;r&#8211;@ 1 user  group  225 Month 01 14:10 main_test.go<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0648\u0627\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u0645:  <\/p>\n<p>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc \u0648 \u062a\u0645\u0627\u0645 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u063a\u06cc\u0631 \u0645\u062e\u0641\u06cc \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0646\u0645\u0627\u062f \u0646\u0645\u0627\u062f\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f (\u0628\u0631\u062e\u0644\u0627\u0641 \u0646\u0645\u0627\u062f\u06af\u0630\u0627\u0631\u06cc \u062d\u0627\u0644\u062a \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f 0755). \u0627\u06cc\u0646 \u0645\u062c\u0648\u0632\u0647\u0627 \u0634\u0627\u0645\u0644 \u0645\u0627\u0644\u06a9\u060c \u06af\u0631\u0648\u0647 \u0648 \u0633\u0627\u06cc\u0631 \u0645\u062c\u0648\u0632\u0647\u0627 (\u0628\u0647 \u062a\u0631\u062a\u06cc\u0628) \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 @ \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0645\u0627\u0646\u0646\u062f SELinux.<\/p>\n<p>\u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u0639\u0646\u0627\u0635\u0631 \u0641\u0631\u0632\u0646\u062f \u0631\u0627 \u062f\u0631 \u0632\u06cc\u0631 \u0647\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0632\u06cc\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc (pwd) \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631 \u0648 \u06af\u0631\u0648\u0647\u06cc \u0631\u0627 \u06a9\u0647 \u0631\u0648\u06cc \u0641\u0631\u0632\u0646\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a (\u0641\u0627\u06cc\u0644 \u06cc\u0627 dir) \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<br \/>\n\u0622\u062e\u0631\u06cc\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646 \u0645\u0648\u062f \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644.<\/p>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u06a9\u0646\u062f ls \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u061f<\/p>\n<p>stat  &#8211; \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0627\u06cc\u0644 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647\u060c \u062d\u062a\u06cc \u0628\u0627 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0646\u0645\u0627\u062f\u06cc\u0646 \u0648 \u0639\u062f\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 -l \u06af\u0632\u06cc\u0646\u0647 (\u0637\u0648\u0644\u0627\u0646\u06cc \u0644\u06cc\u0633\u062a).<\/p>\n<p>lstat  &#8211; \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0631\u0627\u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 -l (\u0637\u0648\u0644\u0627\u0646 \u0644\u06cc\u0633\u062a) \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u0648\u0646\u062f \u0646\u0645\u0627\u062f\u06cc\u0646.<\/p>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f<\/p>\n<p>\u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc ls \u0628\u0627 -l \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u0633\u062a stat_t \u0628\u062e\u0634 \u062a\u062c\u0632\u06cc\u0647:<\/p>\n<p>func New(n string, stat *syscall.Stat_t) Stat {<br \/>\n    var m Stat<br \/>\n    m.BaseName = path.Base(n)<br \/>\n    m.AbsolutePath, _ = filepath.Abs(n)<br \/>\n    if stat.Mode&amp;syscall.S_IFDIR == syscall.S_IFDIR {<br \/>\n        m.Type = &#8220;directory&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFREG == syscall.S_IFREG {<br \/>\n        m.Type = &#8220;file&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFLNK == syscall.S_IFLNK {<br \/>\n        m.Type = &#8220;symlink&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFIFO == syscall.S_IFIFO {<br \/>\n        m.Type = &#8220;fifo&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFSOCK == syscall.S_IFSOCK {<br \/>\n        m.Type = &#8220;socket&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFCHR == syscall.S_IFCHR {<br \/>\n        m.Type = &#8220;character_device&#8221;<br \/>\n    } else if stat.Mode&amp;syscall.S_IFBLK == syscall.S_IFBLK {<br \/>\n        m.Type = &#8220;block_device&#8221;<br \/>\n    } else {<br \/>\n        m.Type = &#8220;unknown&#8221;<br \/>\n    }<br \/>\n    m.SizeBytes = stat.Size<br \/>\n    m.Mode = stat.Mode<br \/>\n    m.UserID = stat.Uid<br \/>\n    m.GroupID = stat.Gid<br \/>\n    m.LastAccessedTime = time.Unix(stat.Atimespec.Sec, stat.Atimespec.Nsec)<br \/>\n    m.LastModifiedTime = time.Unix(stat.Mtimespec.Sec, stat.Mtimespec.Nsec)<br \/>\n    m.CreateTime = time.Unix(stat.Ctimespec.Sec, stat.Ctimespec.Nsec)<br \/>\n    m.BirthTime = time.Unix(stat.Birthtimespec.Sec, stat.Birthtimespec.Nsec)<br \/>\n    m.BlockSize = uint32(stat.Blksize)<br \/>\n    m.NumBlocks = uint64(stat.Blocks)<\/p>\n<p>    var err error<br \/>\n    u, err := user.LookupId(fmt.Sprintf(&#8220;%d&#8221;, stat.Uid))<br \/>\n    if err == nil {<br \/>\n        m.Owner = u.Username<br \/>\n        m.UserName = u.Username<br \/>\n    } else {<br \/>\n        m.Owner = &#8220;unknown&#8221;<br \/>\n        m.UserName = &#8220;unknown&#8221;<br \/>\n    }<\/p>\n<p>    u, err = user.LookupId(fmt.Sprintf(&#8220;%d&#8221;, stat.Gid))<br \/>\n    if err == nil {<br \/>\n        m.GroupName = u.Username<br \/>\n    } else {<br \/>\n        m.GroupName = &#8220;unknown&#8221;<br \/>\n    }<\/p>\n<p>    m.HardLinkReferenceCount = uint16(stat.Nlink)<\/p>\n<p>    octalPerm := os.FileMode(stat.Mode) &amp; os.ModePerm<br \/>\n    m.Permissions.Octal = fmt.Sprintf(&#8220;%o&#8221;, octalPerm)<\/p>\n<p>    const (<br \/>\n        ownerStatTOffset = 6<br \/>\n        groupStatTOffset = 3<br \/>\n        otherStatTOffset = 1<br \/>\n    )<\/p>\n<p>    \/\/ https:\/\/man7.org\/linux\/man-pages\/man7\/inode.7.html<br \/>\n    \/\/ who-has-what-perms section starts at offset 6 and ends at offset 10.<\/p>\n<p>    \/\/ The &gt;&gt; operator in Go shifts the bits of a number to the right.<br \/>\n    \/\/ Think of the number as a row of lights (1 = on, 0 = off).<br \/>\n    \/\/ &#8211; &gt;&gt; 1 moves all the lights 1 step to the right, filling empty spaces on the left:<br \/>\n    \/\/   &#8211; Positive numbers fill with 0 (e.g., 8 &gt;&gt; 1: 00001000 -&gt; 00000100 = 4).<br \/>\n    \/\/   &#8211; Negative numbers fill with 1 to keep the number negative.<br \/>\n    \/\/ &#8211; Bits that fall off the right edge disappear.<br \/>\n    var (<br \/>\n        ownerPerms = uint8(octalPerm &gt;&gt; ownerStatTOffset)<br \/>\n        groupPerms = uint8(octalPerm &gt;&gt; groupStatTOffset)<br \/>\n        otherPerms = uint8(octalPerm &gt;&gt; otherStatTOffset)<br \/>\n    )<br \/>\n    m.Permissions.Symbolic.Owner = perm.New(ownerPerms)<br \/>\n    m.Permissions.Symbolic.Group = perm.New(groupPerms)<br \/>\n    m.Permissions.Symbolic.Other = perm.New(otherPerms)<br \/>\n    return m<br \/>\n}<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0647\u0645 \u06a9\u062f \u062a\u062c\u0632\u06cc\u0647 \u0645\u062c\u0648\u0632\u0647\u0627:<\/p>\n<p>func New(mode uint8) SymbolicPermission {<br \/>\n    var (<br \/>\n        read    bool<br \/>\n        write   bool<br \/>\n        execute bool<br \/>\n    )<br \/>\n    const (<br \/>\n        readOffset    = 4<br \/>\n        writeOffset   = 2<br \/>\n        executeOffset = 1<br \/>\n    )<\/p>\n<p>    \/\/ bitIsSet determines whether a specific bit is set in an unsigned int.<br \/>\n    \/\/ Example:<br \/>\n    \/\/   mode := uint8(5) \/\/ Binary: 101<br \/>\n    \/\/   bitIsSet(mode, 4) \/\/ Returns true (read bit is set)<br \/>\n    \/\/      0b101 &amp; 0b100 = 0b100 (comparison: 0b100 == 0b100 \u2192 true)<br \/>\n    \/\/   bitIsSet(mode, 2) \/\/ Returns false (write bit is not set)<br \/>\n    \/\/      0b101 &amp; 0b010 = 0b000 (comparison: 0b000 == 0b010 \u2192 false)<br \/>\n    \/\/   bitIsSet(mode, 1) \/\/ Returns true (execute bit is set)<br \/>\n    \/\/      0b101 &amp; 0b001 = 0b001 (comparison: 0b001 == 0b001 \u2192 true)<br \/>\n    bitIsSet := func(mode, offset uint8) bool {<br \/>\n        return mode&amp;offset == offset<br \/>\n    }<br \/>\n    read = bitIsSet(mode, readOffset)<br \/>\n    write = bitIsSet(mode, writeOffset)<br \/>\n    execute = bitIsSet(mode, executeOffset)<\/p>\n<p>    return SymbolicPermission{<br \/>\n        Read:    read,<br \/>\n        Write:   write,<br \/>\n        Execute: execute,<br \/>\n    }<br \/>\n}<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/#%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C\" >\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/#%D9%84%DB%8C%D8%B3%D8%AA_%D8%AF%D8%B1_Bash_%D8%AF%D8%B1_%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3\" >\u0644\u06cc\u0633\u062a \u062f\u0631 Bash \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/#%D8%AE%D8%B1%D9%88%D8%AC%DB%8C\" >\u062e\u0631\u0648\u062c\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_ls_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%D8%A7%DB%8C%D9%86_%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%D8%9F\" >\u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u06a9\u0646\u062f ls \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u061f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/day-10-ls-l-40i4\/#%D9%86%D9%85%D9%88%D9%86%D9%87_%DA%A9%D8%AF\" >\u0646\u0645\u0648\u0646\u0647 \u06a9\u062f<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C\"><\/span>\n<p>  \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627\u0632\u0627\u0631 \u0633\u062e\u062a \u0627\u0633\u062a. \u0627\u06cc \u06a9\u0627\u0634 \u0645\u0635\u0627\u062d\u0628\u0647 \u0631\u0627\u062d\u062a \u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0645. \u0627\u0645\u0627\u060c \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0645\u0642\u0627\u0644\u0647 \u0627\u06cc \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645\u060c \u0645\u0634\u06a9\u0644 \u0644\u06cc\u062a \u06a9\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0645 \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0628\u0631\u0645\u060c \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0622\u0646\u0647\u0627 \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0645\u0635\u0627\u062d\u0628\u0647 SRE \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0645\u0646 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0634\u06a9\u0627\u0644\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0628\u0647 \u0645\u0646 \u0645\u06cc \u06af\u0648\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc\u060c \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0646\u0627\u0645\u0632\u062f \u0646\u0628\u0648\u062f\u0645. \u06cc\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u06a9\u0627\u0631\u0641\u0631\u0645\u0627\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646 \u0646\u0628\u0648\u062f\u0646\u062f. \u062f\u0631 \u0647\u0631 \u0635\u0648\u0631\u062a\u060c \u0645\u0646 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0647 \u062a\u0645\u0631\u06cc\u0646\u060c \u0645\u0637\u0627\u0644\u0639\u0647 \u0648 \u067e\u0634\u062a\u06a9\u0627\u0631 \u0627\u062f\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f.   <\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%84%DB%8C%D8%B3%D8%AA_%D8%AF%D8%B1_Bash_%D8%AF%D8%B1_%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3\"><\/span>\n<p>  \u0644\u06cc\u0633\u062a \u062f\u0631 Bash \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0648\u0627\u0644\u0627\u062a\u06cc \u06a9\u0647 \u0627\u0632 \u0645\u0646 \u067e\u0631\u0633\u06cc\u062f\u0646\u062f \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0686\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u061f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ ls -l *\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B1%D9%88%D8%AC%DB%8C\"><\/span>\n<p>  \u062e\u0631\u0648\u062c\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\u279c  pwd $ ls -l *\n-rw-r--r--@ 1 user  group    0 Month 01 14:05 LICENSE\n-rw-r--r--@ 1 user  group  202 Month 01 14:05 go.mod\n-rw-r--r--@ 1 user  group  896 Month 01 14:05 go.sum\n-rw-r--r--@ 1 user  group  138 Month 01 14:05 main.go\n\ncmd:\ntotal 8\n-rw-r--r--@ 1 user  group  1444 Month 01 14:05 root.go\n\ninternal:\ntotal 16\n-rw-r--r--@ 1 user  group   37 Month 01 16:05 main.go\n-rw-r--r--@ 1 user  group  225 Month 01 14:10 main_test.go\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0648\u0627\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u0645:  <\/p>\n<ol>\n<li>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc \u0648 \u062a\u0645\u0627\u0645 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u063a\u06cc\u0631 \u0645\u062e\u0641\u06cc \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.\n<\/li>\n<li>\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0646\u0645\u0627\u062f \u0646\u0645\u0627\u062f\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f (\u0628\u0631\u062e\u0644\u0627\u0641 \u0646\u0645\u0627\u062f\u06af\u0630\u0627\u0631\u06cc \u062d\u0627\u0644\u062a \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f 0755). \u0627\u06cc\u0646 \u0645\u062c\u0648\u0632\u0647\u0627 \u0634\u0627\u0645\u0644 \u0645\u0627\u0644\u06a9\u060c \u06af\u0631\u0648\u0647 \u0648 \u0633\u0627\u06cc\u0631 \u0645\u062c\u0648\u0632\u0647\u0627 (\u0628\u0647 \u062a\u0631\u062a\u06cc\u0628) \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 <code>@<\/code> \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a\u0647 \u0645\u0627\u0646\u0646\u062f SELinux.\n<\/li>\n<li>\u062a\u0639\u062f\u0627\u062f \u06a9\u0644 \u0639\u0646\u0627\u0635\u0631 \u0641\u0631\u0632\u0646\u062f \u0631\u0627 \u062f\u0631 \u0632\u06cc\u0631 \u0647\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0632\u06cc\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc (pwd) \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.\n<\/li>\n<li>\u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631 \u0648 \u06af\u0631\u0648\u0647\u06cc \u0631\u0627 \u06a9\u0647 \u0631\u0648\u06cc \u0641\u0631\u0632\u0646\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a (\u0641\u0627\u06cc\u0644 \u06cc\u0627 dir) \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>\u0622\u062e\u0631\u06cc\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646 \u0645\u0648\u062f \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644.\n<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_ls_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%D8%A7%DB%8C%D9%86_%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%D8%9F\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>ls<\/code> \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<code>stat<\/code>  &#8211; \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0627\u06cc\u0644 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647\u060c \u062d\u062a\u06cc \u0628\u0627 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0646\u0645\u0627\u062f\u06cc\u0646 \u0648 \u0639\u062f\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 <code>-l<\/code> \u06af\u0632\u06cc\u0646\u0647 (\u0637\u0648\u0644\u0627\u0646\u06cc \u0644\u06cc\u0633\u062a).\n<\/li>\n<li>\n<code>lstat<\/code>  &#8211; \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0631\u0627\u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>-l<\/code> (\u0637\u0648\u0644\u0627\u0646 \u0644\u06cc\u0633\u062a) \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u0648\u0646\u062f \u0646\u0645\u0627\u062f\u06cc\u0646.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D9%88%D9%86%D9%87_%DA%A9%D8%AF\"><\/span>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc <code>ls<\/code> \u0628\u0627 <code>-l<\/code> \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u0633\u062a <code>stat_t<\/code> \u0628\u062e\u0634 \u062a\u062c\u0632\u06cc\u0647:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">n<\/span> <span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span> <span class=\"o\">*<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">Stat_t<\/span><span class=\"p\">)<\/span> <span class=\"n\">Stat<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">m<\/span> <span class=\"n\">Stat<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">BaseName<\/span> <span class=\"o\">=<\/span> <span class=\"n\">path<\/span><span class=\"o\">.<\/span><span class=\"n\">Base<\/span><span class=\"p\">(<\/span><span class=\"n\">n<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">AbsolutePath<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">filepath<\/span><span class=\"o\">.<\/span><span class=\"n\">Abs<\/span><span class=\"p\">(<\/span><span class=\"n\">n<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFDIR<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFDIR<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"directory\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFREG<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFREG<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"file\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFLNK<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFLNK<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"symlink\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFIFO<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFIFO<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"fifo\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFSOCK<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFSOCK<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"socket\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFCHR<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFCHR<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"character_device\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFBLK<\/span> <span class=\"o\">==<\/span> <span class=\"n\">syscall<\/span><span class=\"o\">.<\/span><span class=\"n\">S_IFBLK<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"block_device\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"unknown\"<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">SizeBytes<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Size<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">UserID<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Uid<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">GroupID<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Gid<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">LastAccessedTime<\/span> <span class=\"o\">=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Unix<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Atimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Sec<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Atimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Nsec<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">LastModifiedTime<\/span> <span class=\"o\">=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Unix<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mtimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Sec<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mtimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Nsec<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">CreateTime<\/span> <span class=\"o\">=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Unix<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Ctimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Sec<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Ctimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Nsec<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">BirthTime<\/span> <span class=\"o\">=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Unix<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Birthtimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Sec<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Birthtimespec<\/span><span class=\"o\">.<\/span><span class=\"n\">Nsec<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">BlockSize<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint32<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Blksize<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">NumBlocks<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint64<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Blocks<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">var<\/span> <span class=\"n\">err<\/span> <span class=\"kt\">error<\/span>\n    <span class=\"n\">u<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">LookupId<\/span><span class=\"p\">(<\/span><span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Sprintf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%d\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Uid<\/span><span class=\"p\">))<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">==<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Owner<\/span> <span class=\"o\">=<\/span> <span class=\"n\">u<\/span><span class=\"o\">.<\/span><span class=\"n\">Username<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">UserName<\/span> <span class=\"o\">=<\/span> <span class=\"n\">u<\/span><span class=\"o\">.<\/span><span class=\"n\">Username<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Owner<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"unknown\"<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">UserName<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"unknown\"<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"n\">u<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">LookupId<\/span><span class=\"p\">(<\/span><span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Sprintf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%d\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Gid<\/span><span class=\"p\">))<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">==<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">GroupName<\/span> <span class=\"o\">=<\/span> <span class=\"n\">u<\/span><span class=\"o\">.<\/span><span class=\"n\">Username<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">GroupName<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"unknown\"<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">HardLinkReferenceCount<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint16<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Nlink<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">octalPerm<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">FileMode<\/span><span class=\"p\">(<\/span><span class=\"n\">stat<\/span><span class=\"o\">.<\/span><span class=\"n\">Mode<\/span><span class=\"p\">)<\/span> <span class=\"o\">&amp;<\/span> <span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">ModePerm<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Permissions<\/span><span class=\"o\">.<\/span><span class=\"n\">Octal<\/span> <span class=\"o\">=<\/span> <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Sprintf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%o\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">octalPerm<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">const<\/span> <span class=\"p\">(<\/span>\n        <span class=\"n\">ownerStatTOffset<\/span> <span class=\"o\">=<\/span> <span class=\"m\">6<\/span>\n        <span class=\"n\">groupStatTOffset<\/span> <span class=\"o\">=<\/span> <span class=\"m\">3<\/span>\n        <span class=\"n\">otherStatTOffset<\/span> <span class=\"o\">=<\/span> <span class=\"m\">1<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ https:\/\/man7.org\/linux\/man-pages\/man7\/inode.7.html<\/span>\n    <span class=\"c\">\/\/ who-has-what-perms section starts at offset 6 and ends at offset 10.<\/span>\n\n    <span class=\"c\">\/\/ The &gt;&gt; operator in Go shifts the bits of a number to the right.<\/span>\n    <span class=\"c\">\/\/ Think of the number as a row of lights (1 = on, 0 = off).<\/span>\n    <span class=\"c\">\/\/ - &gt;&gt; 1 moves all the lights 1 step to the right, filling empty spaces on the left:<\/span>\n    <span class=\"c\">\/\/   - Positive numbers fill with 0 (e.g., 8 &gt;&gt; 1: 00001000 -&gt; 00000100 = 4).<\/span>\n    <span class=\"c\">\/\/   - Negative numbers fill with 1 to keep the number negative.<\/span>\n    <span class=\"c\">\/\/ - Bits that fall off the right edge disappear.<\/span>\n    <span class=\"k\">var<\/span> <span class=\"p\">(<\/span>\n        <span class=\"n\">ownerPerms<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint8<\/span><span class=\"p\">(<\/span><span class=\"n\">octalPerm<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">ownerStatTOffset<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">groupPerms<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint8<\/span><span class=\"p\">(<\/span><span class=\"n\">octalPerm<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">groupStatTOffset<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">otherPerms<\/span> <span class=\"o\">=<\/span> <span class=\"kt\">uint8<\/span><span class=\"p\">(<\/span><span class=\"n\">octalPerm<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">otherStatTOffset<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Permissions<\/span><span class=\"o\">.<\/span><span class=\"n\">Symbolic<\/span><span class=\"o\">.<\/span><span class=\"n\">Owner<\/span> <span class=\"o\">=<\/span> <span class=\"n\">perm<\/span><span class=\"o\">.<\/span><span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">ownerPerms<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Permissions<\/span><span class=\"o\">.<\/span><span class=\"n\">Symbolic<\/span><span class=\"o\">.<\/span><span class=\"n\">Group<\/span> <span class=\"o\">=<\/span> <span class=\"n\">perm<\/span><span class=\"o\">.<\/span><span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">groupPerms<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">Permissions<\/span><span class=\"o\">.<\/span><span class=\"n\">Symbolic<\/span><span class=\"o\">.<\/span><span class=\"n\">Other<\/span> <span class=\"o\">=<\/span> <span class=\"n\">perm<\/span><span class=\"o\">.<\/span><span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">otherPerms<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">m<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0648 \u0627\u06cc\u0646 \u0647\u0645 \u06a9\u062f \u062a\u062c\u0632\u06cc\u0647 \u0645\u062c\u0648\u0632\u0647\u0627:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>\n<span class=\"k\">func<\/span> <span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">mode<\/span> <span class=\"kt\">uint8<\/span><span class=\"p\">)<\/span> <span class=\"n\">SymbolicPermission<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">var<\/span> <span class=\"p\">(<\/span>\n        <span class=\"n\">read<\/span>    <span class=\"kt\">bool<\/span>\n        <span class=\"n\">write<\/span>   <span class=\"kt\">bool<\/span>\n        <span class=\"n\">execute<\/span> <span class=\"kt\">bool<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">const<\/span> <span class=\"p\">(<\/span>\n        <span class=\"n\">readOffset<\/span>    <span class=\"o\">=<\/span> <span class=\"m\">4<\/span>\n        <span class=\"n\">writeOffset<\/span>   <span class=\"o\">=<\/span> <span class=\"m\">2<\/span>\n        <span class=\"n\">executeOffset<\/span> <span class=\"o\">=<\/span> <span class=\"m\">1<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ bitIsSet determines whether a specific bit is set in an unsigned int.<\/span>\n    <span class=\"c\">\/\/ Example:<\/span>\n    <span class=\"c\">\/\/   mode := uint8(5) \/\/ Binary: 101<\/span>\n    <span class=\"c\">\/\/   bitIsSet(mode, 4) \/\/ Returns true (read bit is set)<\/span>\n    <span class=\"c\">\/\/      0b101 &amp; 0b100 = 0b100 (comparison: 0b100 == 0b100 \u2192 true)<\/span>\n    <span class=\"c\">\/\/   bitIsSet(mode, 2) \/\/ Returns false (write bit is not set)<\/span>\n    <span class=\"c\">\/\/      0b101 &amp; 0b010 = 0b000 (comparison: 0b000 == 0b010 \u2192 false)<\/span>\n    <span class=\"c\">\/\/   bitIsSet(mode, 1) \/\/ Returns true (execute bit is set)<\/span>\n    <span class=\"c\">\/\/      0b101 &amp; 0b001 = 0b001 (comparison: 0b001 == 0b001 \u2192 true)<\/span>\n    <span class=\"n\">bitIsSet<\/span> <span class=\"o\">:=<\/span> <span class=\"k\">func<\/span><span class=\"p\">(<\/span><span class=\"n\">mode<\/span><span class=\"p\">,<\/span> <span class=\"n\">offset<\/span> <span class=\"kt\">uint8<\/span><span class=\"p\">)<\/span> <span class=\"kt\">bool<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">mode<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">offset<\/span> <span class=\"o\">==<\/span> <span class=\"n\">offset<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">read<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bitIsSet<\/span><span class=\"p\">(<\/span><span class=\"n\">mode<\/span><span class=\"p\">,<\/span> <span class=\"n\">readOffset<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">write<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bitIsSet<\/span><span class=\"p\">(<\/span><span class=\"n\">mode<\/span><span class=\"p\">,<\/span> <span class=\"n\">writeOffset<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">execute<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bitIsSet<\/span><span class=\"p\">(<\/span><span class=\"n\">mode<\/span><span class=\"p\">,<\/span> <span class=\"n\">executeOffset<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"n\">SymbolicPermission<\/span><span class=\"p\">{<\/span>\n        <span class=\"n\">Read<\/span><span class=\"o\">:<\/span>    <span class=\"n\">read<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Write<\/span><span class=\"o\">:<\/span>   <span class=\"n\">write<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Execute<\/span><span class=\"o\">:<\/span> <span class=\"n\">execute<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0628\u0627\u0632\u0627\u0631 \u0633\u062e\u062a \u0627\u0633\u062a. \u0627\u06cc \u06a9\u0627\u0634 \u0645\u0635\u0627\u062d\u0628\u0647 \u0631\u0627\u062d\u062a \u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0645. \u0627\u0645\u0627\u060c \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0645\u0642\u0627\u0644\u0647 \u0627\u06cc \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645\u060c \u0645\u0634\u06a9\u0644 \u0644\u06cc\u062a \u06a9\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0645 \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0631\u0648\u0632\u0627\u0646\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0628\u0631\u0645\u060c \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0622\u0646\u0647\u0627 \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0645\u0635\u0627\u062d\u0628\u0647 SRE \u0645\u0646 \u0631\u0627 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":85911,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-85910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/85910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=85910"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/85910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/85911"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=85910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=85910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=85910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}