## my-ls ### Objectives - my-ls consists on creating your own `ls` command. - The `ls` command shows you the files and folders of the directory specified after the command. By exclusion of this directory, it shows the files and folders of the present directory. - The behavior of your `ls` must be identical to the original `ls` command with the following variations : - You must incorporate in your project at least the following flags of the `ls` command : - `-l` - `-R` - `-a` - `-r` - `-t` - Note that you can use various flags, in various ways, just like in `ls`. - When it comes to the `ls -l` display, it must be identical to the system command. - Other flags displays are up to you. ### Instructions - Your project must be written in **Go**. - The code must respect the [**good practices**](../good-practices/README.md). - It is recommended to have **test files** for [unit testing](https://go.dev/doc/tutorial/add-a-test). - The use of the `os/exec` package is prohibited within the `my-ls` codebase. ### Allowed packages - fmt - os - os/user - strconv - strings - syscall - time - math/rand - errors - io/fs ### Hint - We strongly recommend that you account for the implications of the option `-R` from the very beginning of your code. - The order that files and folders appear must be taken in consideration. - We suggest that you consult the `ls` command manual. ### Usage You can see how the `ls` command works, by using it on your terminal. This project will help you learn about : - Unix system - Ways to receive data. - Ways to output data. - Manipulation of strings. - Manipulation of structures.