# Week 1 Assignment
## Level-1
**Linux CLI Basics:**
Task-1
```
- Create a directory named "ACM_Projects" in your home directory.
- Navigate into the "ACM_Projects" directory.
- Create a new file named "sample.txt" and add some text.
- Copy "sample.txt" to "sample_copy.txt".
- Rename "sample_copy.txt" to "renamed_sample.txt".
- Move "renamed_sample.txt" to a new directory named "backup".
- Delete "sample.txt".
```
Task-2
```
- Initialize a Git repository inside the "ACM_Projects" directory.
- Create a new file named "README.md" and add some text to it.
- Add the "README.md" file to the staging area.
- Commit the changes with a meaningful commit message.
```
## Level 2
**Linux File Operations:**
Task-1
```
- Create a new directory named "task1" inside "ACM_Projects".
- Move the "README.md" file into the "task1" directory.
- Navigate into the "task1" directory.
- Create a subdirectory named "images" within "task1".
- Use wget command to download an image from a URL into the "images" directory.
- List all files and directories recursively in "task1" to verify the structure.
```
**Git Branching and Merging:**
Task-2
```
- Create a new branch named "feature" from the main branch.
- Modify the "README.md" file by adding a section describing a feature.
- Add and commit changes in the "feature" branch.
- Merge the "feature" branch into the main branch.
- List all files in the current directory and pipe the output to grep to find files with ".txt" extension.
```
Task-3
```
- Create a new folder
- Put the following files in the folder
- Code.txt
- Log.txt
- Output.txt
- Stage the Code.txt and Output.txt files
- Commit them
- And Finally push them to GitHub
```
> P.S: you have to do this via command line and you have to take screenshots of the code snippets for each step, put them in a folder and put it in the github repo.
## Level 3
**Linux Permissions and Ownership:**
Task-1
```
- Create a new file named "script.sh" in the "task1" directory.
- Set permissions to make "script.sh" executable.
- Execute "script.sh" to display a message.
```
**Git Collaboration:**
Task-2
```
- Fork a sample repository from the ACM organization's GitHub repository.
- Clone the forked repository to your local machine.
- Create a new branch named "fix" to resolve an issue or add a feature.
- Push the changes to your forked repository.
- Create a pull request to merge changes into the original repository.
```
## Level 4
**Working with Processes:**
Task-1
```
- Use ps command to list all processes running on your system.
- Use kill command to terminate a specific process.
```
**Shell Scripting:**
Task-2
```
- Write a shell script that accepts a filename as an argument and displays whether it is a file or a directory.
- Write a shell script to automate a backup process by compressing a specified directory and moving it to a backup location.
```
**System Administration:**
Task-3
```
- Use useradd to create a new user account.
- Use chmod to change permissions of a file to be executable by everyone.
- Use cron to schedule a task to run periodically.
```
*Be honest to yourself, this assignment is for your learning!!*
## Additional Problem
> - Put master.txt on master branch, stage and commit
> - Create 3 branches: public1, public2 and private
> - Put public1.txt on public 1 branch, stage and commit
> - Merge public 1 on master branch
> - Merge public 2 on master branch
> - Edit master.txt on private branch, stage and commit
> - Now update branch public 1 and public 2 with new master code in private
> - Also update new master code on master
> - Finally update all the code on the private branch
> - Put master.txt on master branch, stage and commit