Convert Figma logo to code with AI

you-dont-need logoYou-Dont-Need-GUI

Stop relying on GUI; CLI **ROCKS**

5,457
233
5,457
10

Top Related Projects

🖥 📊 🕹 🛠 A curated list of command line apps

A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php.

Master the command line, in one page

Quick Overview

You-Dont-Need-GUI is a GitHub repository that provides a comprehensive list of command-line alternatives to graphical user interface (GUI) operations. It aims to demonstrate that many tasks typically performed through a GUI can be accomplished more efficiently using command-line interfaces (CLI). The project covers a wide range of operations across various operating systems and tools.

Pros

  • Improves productivity by offering faster, scriptable alternatives to GUI operations
  • Enhances understanding of underlying system operations and commands
  • Provides cross-platform solutions for many common tasks
  • Encourages learning and mastery of command-line tools

Cons

  • Steeper learning curve compared to GUI alternatives
  • May be intimidating for users who are not comfortable with command-line interfaces
  • Some complex operations might still be easier or more intuitive with a GUI
  • Requires memorization of commands or frequent referencing of documentation

Code Examples

As this is not a code library but rather a collection of command-line instructions, there are no code examples in the traditional sense. However, here are a few examples of CLI commands from the repository:

# List files in the current directory
ls -la
# Find files containing a specific text
grep -R "search text" /path/to/directory
# Rename multiple files using a pattern
for file in *.txt; do mv "$file" "${file%.txt}.md"; done

Getting Started

To get started with You-Dont-Need-GUI, simply visit the GitHub repository at https://github.com/you-dont-need/You-Dont-Need-GUI. The README file contains a table of contents with various categories of operations. Browse through the categories to find CLI alternatives for common GUI tasks. To use these commands, open a terminal or command prompt on your system and enter the provided commands.

Remember to exercise caution when running unfamiliar commands, especially those that modify files or system settings. It's always a good idea to understand what a command does before executing it.

Competitor Comparisons

🖥 📊 🕹 🛠 A curated list of command line apps

Pros of awesome-cli-apps

  • Extensive collection of CLI apps across various categories
  • Regularly updated with new additions and community contributions
  • Includes brief descriptions for each app, making it easier to find relevant tools

Cons of awesome-cli-apps

  • Lacks detailed explanations or tutorials on using CLI alternatives
  • Doesn't directly promote the benefits of CLI over GUI
  • May overwhelm users with too many options without guidance

Code comparison

Not applicable, as both repositories are curated lists without significant code samples.

Summary

awesome-cli-apps is a comprehensive resource for discovering CLI applications across various domains. It provides a wide range of options but doesn't focus on teaching users how to transition from GUI to CLI.

You-Dont-Need-GUI, on the other hand, specifically aims to demonstrate how common GUI tasks can be accomplished using command-line tools. It offers more detailed explanations and examples for each task, making it more suitable for users looking to reduce their reliance on graphical interfaces.

While awesome-cli-apps excels in breadth of content, You-Dont-Need-GUI is more focused on education and practical application. Users seeking to expand their CLI toolkit may find awesome-cli-apps more useful, while those looking to learn CLI alternatives to GUI tasks would benefit more from You-Dont-Need-GUI.

A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php.

Pros of awesome-shell

  • Comprehensive collection of shell-related tools and resources
  • Regularly updated with community contributions
  • Covers a wide range of shell topics, including productivity tools, system utilities, and development frameworks

Cons of awesome-shell

  • Lacks specific examples or tutorials for using the listed tools
  • May be overwhelming for beginners due to the large number of resources
  • Does not focus on GUI alternatives or comparisons

Code comparison

While a direct code comparison is not applicable for these repositories, here's an example of how they differ in content:

awesome-shell:

## Command-Line Productivity

* [aliases](https://github.com/sebglazebrook/aliases) - Contextual, dynamic, organized aliases for bash
* [bashhub](https://github.com/rcaloras/bashhub-client) - :cloud: Bash history in the cloud. Indexed and searchable.

You-Dont-Need-GUI:

## cp

Copy a file:
```bash
cp /path/to/source/file.txt /path/to/target/file.txt

The awesome-shell repository provides a curated list of tools, while You-Dont-Need-GUI offers specific command-line alternatives to GUI operations with examples.

Master the command line, in one page

Pros of The Art of Command Line

  • More comprehensive coverage of command-line topics
  • Includes advanced tips and tricks for experienced users
  • Regularly updated with community contributions

Cons of The Art of Command Line

  • Less focused on specific GUI alternatives
  • May be overwhelming for beginners
  • Lacks visual comparisons between GUI and CLI approaches

Code Comparison

The Art of Command Line:

# Find files with names matching a pattern
find . -name '*.py' | xargs wc -l

You Don't Need GUI:

# Find files with names matching a pattern
ls -R | grep '\.py$' | xargs wc -l

Both repositories aim to promote command-line usage, but they approach it differently. The Art of Command Line provides a broader overview of command-line tools and techniques, making it suitable for users at various skill levels. It covers topics ranging from basic commands to advanced shell scripting.

You Don't Need GUI, on the other hand, focuses specifically on replacing GUI-based tasks with command-line alternatives. It offers side-by-side comparisons of GUI and CLI methods for common tasks, making it easier for users to transition from graphical interfaces to the command line.

While The Art of Command Line is more comprehensive, You Don't Need GUI is more accessible for users looking to replace specific GUI actions with command-line equivalents. Both repositories serve valuable purposes in promoting command-line proficiency and can be used complementarily to enhance one's skills.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

You Don't Need GUI

Join the community on Spectrum

中文版请看这里

It's for noobs :)

Graphical user interfaces are super friendly to computer users. They were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs).

Xerox Star 8010 workstations

However, they often require more resources, are less powerful and hard to automate via scripting.

As a computer expert, we want to be more efficient and do our jobs better. We know that command words may not be easily discoverable or mnemonic, so we try to list some common tasks that you might be tempted to do in GUI.

Quick links

  1. copy a file
  2. duplicate a file
  3. copy a directory
  4. duplicate a directory
  5. move a file
  6. rename a file
  7. move a directory
  8. rename a directory
  9. merge directories
  10. create a new file
  11. create a new directory
  12. show file/directory size
  13. show file/directory info
  14. open a file with the default program
  15. open a file in any application
  16. zip a directory
  17. unzip a directory
  18. peek files in a zip file
  19. remove a file
  20. remove a directory
  21. remove all files of certain criteria
  22. list directory contents
  23. tree view a directory and its subdirectories
  24. find a stale file
  25. show a calendar
  26. find a future date
  27. use a calculator
  28. force quit a program
  29. check server response
  30. view content of a file
  31. search for a text in a file
  32. search in all files in current working directory, quickly (entire disk in less than 15 minutes)
  33. view an image
  34. show disk size
  35. check cpu usage, processes and RAM
  36. know whether your computer is under load, and whether it's due to memory or CPU
  37. poweroff or reboot your computer
  38. locate USB drives
  39. unmount USB drives
  40. format USB drives
  41. check USB format
  42. run command on all files of a directory
  43. check network connectivity to a remote address and port
  44. check DNS config of a domain
  45. check the ownership and registration of a domain
  46. Quick tips
  47. Hotkeys
  48. I can't remember these cryptic commands

copy a file

STOP DRAG AND DROPPING A FILE, OR CMD/CTRL + C, CMD/CTRL + V A FILE :-1:

Copy readme.txt to the documents directory

$ cp readme.txt documents/

Go to table of contents 🔼

duplicate a file

STOP RIGHT CLICKING AND DUPLICATE A FILE :-1:

$ cp readme.txt readme.bak.txt

More advanced:

$ cp readme{,.bak}.txt
# Note: learn how the {} works with touch foo{1,2,3}.txt and see what happens.

Go to table of contents 🔼

copy a directory

STOP DRAG AND DROPPING A DIRECTORY, OR CMD/CTRL + C, CMD/CTRL + V A DIRECTORY :-1:

Copy myMusic directory to the myMedia directory

$ cp -a myMusic myMedia/
# or
$ cp -a myMusic/ myMedia/myMusic/

Go to table of contents 🔼

duplicate a directory

STOP RIGHT CLICKING AND DUPLICATE A DIRECTORY :-1:

$ cp -a myMusic/ myMedia/
# or if `myMedia` folder doesn't exist
$ cp -a myMusic myMedia/

Go to table of contents 🔼

move a file

STOP DRAG AND DROPPING A FILE, OR CMD/CTRL + X, CMD/CTRL + V A FILE :-1:

$ mv readme.txt documents/

Always use a trailing slash when moving files, for this reason.

Go to table of contents 🔼

rename a file

STOP RIGHT CLICKING AND RENAME A FILE :-1:

$ mv readme.txt README.md

Go to table of contents 🔼

move a directory

STOP DRAG AND DROPPING A DIRECTORY, OR CMD/CTRL + X, CMD/CTRL + V A DIRECTORY :-1:

$ mv myMedia myMusic/
# or
$ mv myMedia/ myMusic/myMedia

Go to table of contents 🔼

rename a directory

STOP RIGHT CLICKING AND RENAME A DIRECTORY :-1:

$ mv myMedia/ myMusic/

Go to table of contents 🔼

merge directories

STOP DRAG AND DROPPING TO MERGE DIRECTORIES :-1:

$ rsync -a /images/ /images2/	# note: may over-write files with the same name, so be careful!

Go to table of contents 🔼

create a new file

STOP RIGHT CLICKING AND CREATE A NEW FILE :-1:

$ touch 'new file'    # updates the file's access and modification timestamp if it already exists
# or
$ > 'new file'        # note: erases the content if it already exists

Go to table of contents 🔼

create a new directory

STOP RIGHT CLICKING AND CREATE A NEW DIRECTORY :-1:

$ mkdir 'untitled folder'
# or
$ mkdir -p 'path/may/not/exist/untitled folder'

Go to table of contents 🔼

show file/directory size

STOP RIGHT CLICKING AND SHOW FILE/directory INFO :-1:

$ du -sh node_modules/

Go to table of contents 🔼

show file/directory info

STOP RIGHT CLICKING AND SHOW FILE/DIRECTORY INFO :-1:

$ stat -x readme.md   # on macOS
$ stat readme.md      # on Linux

Go to table of contents 🔼

open a file with the default program

STOP DOUBLE CLICKING ON A FILE :-1:

$ xdg-open file   # on Linux
$ open file       # on MacOS
$ start file      # on Windows

Go to table of contents 🔼

open a file in any application

STOP RIGHT CLICKING AND OPEN WITH :-1:

$ open -a appName file

Go to table of contents 🔼

zip a directory

STOP RIGHT CLICKING AND COMPRESS DIRECTORY :-1:

$ zip -r archive_name.zip folder_to_compress

Go to table of contents 🔼

unzip a directory

STOP RIGHT CLICKING AND UNCOMPRESS DIRECTORY :-1:

$ unzip archive_name.zip

Go to table of contents 🔼

decompress files of any format

STOP RIGHT CLICKING AND UNCOMPRESS DIRECTORY :-1:

$ unar archive_name.zip
$ unar archive_name.7z
$ unar archive_name.rar
$ unar archive_name.ISO
$ unar archive_name.tar.gz

Go to table of contents 🔼

peek files in a zip file

STOP USING WinRAR :-1:

$ zipinfo archive_name.zip
# or
$ unzip -l archive_name.zip

Go to table of contents 🔼

peek files in a compress file of any format

STOP USING WinRAR :-1:

$ lsar -l archive_name.zip
$ lsar -l archive_name.7z
$ lsar -l archive_name.ISO
$ lsar -l archive_name.rar
$ lsar -l archive_name.tar.gz

Go to table of contents 🔼

remove a file

STOP RIGHT CLICKING AND DELETE A FILE PERMANENTLY :-1:

$ rm my_useless_file

IMPORTANT: The rm command deletes my_useless_file permanently, which is equivalent to move my_useless_file to Recycle Bin and hit Empty Recycle Bin.

Go to table of contents 🔼

remove a directory

STOP RIGHT CLICKING AND DELETE A DIRECTORY PERMANENTLY :-1:

$ rm -r my_useless_folder

Go to table of contents 🔼

remove all files of certain criteria

$ find . -name "*.bak" -type f -delete

IMPORTANT: run find . -name "*.bak" -type f first to see exactly which files you will remove.

Go to table of contents 🔼

list directory contents

STOP OPENING YOUR FINDER OR FILE EXPLORER :-1:

$ ls my_folder        # Simple
$ ls -la my_folder    # -l: show in list format. -a: show all files, including hidden. -la combines those options.
$ ls -alrth my_folder # -r: reverse output. -t: sort by time (modified). -h: output human-readable sizes.

Go to table of contents 🔼

tree view a directory and its subdirectories

STOP OPENING YOUR FINDER OR FILE EXPLORER :-1:

$ tree                                                        # on Linux
$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'      # on MacOS
# Note: install homebrew (https://brew.sh) to be able to use (some) Linux utilities such as tree.
# brew install tree

Go to table of contents 🔼

find a stale file

STOP USING YOUR FILE EXPLORER TO FIND A FILE :-1:

Find all files modified more than 5 days ago

$ find my_folder -mtime +5

Go to table of contents 🔼

show a calendar

STOP LOOKING UP WHAT THIS MONTH LOOKS LIKE BY CALENDAR WIDGETS :-1:

Display a text calendar

$ cal

Display selected month and year calendar

$ cal 11 2018

Go to table of contents 🔼

find a future date

STOP USING WEBAPPS TO CALCULATE FUTURE DATES :-1:

What is today's date?

$ date +%m/%d/%Y

What about a week from now?

$ date -d "+7 days"                                           # on Linux
$ date -j -v+7d                                               # on MacOS

Go to table of contents 🔼

use a calculator

STOP USING CALCULATOR WIDGET :-1:

$ bc -l

Go to table of contents 🔼

force quit a program

STOP CTRL + ALT + DELETE and choose the program to kill :-1:

$ killall -9 program_name

Go to table of contents 🔼

check server response

STOP OPENING A BROWSER :-1:

$ curl -i umair.surge.sh
# curl's -i (--include) option includes HTTP response headers in its output.

Go to table of contents 🔼

view content of a file

STOP DOUBLE CLICKING A FILE :-1:

$ cat apps/settings.py
# if the file is too big to fit on one page, you can use a 'pager' (less) which shows you one page at a time.
$ less apps/settings.py

Go to table of contents 🔼

search for a text in a file

STOP CMD/CTRL + F IN A FILE :-1:

$ grep -i "Query" file.txt

grep

Go to table of contents 🔼

search in all files in current working directory, quickly (entire disk in less than 15 minutes)

STOP CMD/CTRL + F IN A DIRECTORY :-1:

$ ripgrep -i "Query"
# brew install ripgrep

Go to table of contents 🔼

view an image

STOP USING PREVIEW :-1:

$ imgcat image.png
# Note: requires iTerm2 terminal.

Go to table of contents 🔼

show disk size

STOP RIGHT CLICKING DISK ICON OR OPENING DISK UTILITY :-1:

$ df -h

Go to table of contents 🔼

check cpu usage, processes and RAM

STOP OPENING YOUR ACTIVITY MONITOR OR TASK MANAGER :-1:

$ top

if you want some more details:

$ htop

Go to table of contents 🔼

know whether your computer is under load, and whether it's due to memory or CPU

$ glances
# brew install glances

Go to table of contents 🔼

poweroff or reboot your computer

This can be useful when you're patching a server that is accessed via SSH and you don't have a GUI.

# poweroff
$ sudo shutdown -h now
# reboot
$ sudo shutdown -r now

Go to table of contents 🔼

locate USB drives

$ df

Go to table of contents 🔼

unmount USB drives

$ sudo umount /dev/sdb1

Go to table of contents 🔼

format USB drives

# FAT32
$ sudo mkfs.vfat /dev/sdb1
# NTFS
$ sudo mkfs.ntfs /dev/sdb1
# exFAT
$ sudo mkfs.exfat /dev/sdb1

Go to table of contents 🔼

check USB format

$ sudo fsck /dev/sdb1

Go to table of contents 🔼

run command on all files of a directory

STOP CLICKING THE FILES ONE BY ONE :-1:

$ for FILE in *; do echo $FILE; done

Go to table of contents 🔼

check network connectivity to a remote address and port

STOP USING NETWORK UTILITY

$ nc -vz www.google.com 443
$ nc -vz 1.1.1.1 53

Go to table of contents 🔼

check DNS config of a domain

STOP USING NETWORK UTILITY

$ dig www.google.com

Go to table of contents 🔼

check the ownership and registration of a domain

STOP USING NETWORK UTILITY AND THE WEBSITE OF DOMAIN REGISTRATION PROVIDERS

$ whois www.google.com

Go to table of contents 🔼

Quick tips

CLI tips

Go to table of contents 🔼

Hotkeys

HotkeyDescription
Ctrl+AGo to the beginning of the line you are currently typing on
Ctrl+EGo to the end of the line you are currently typing on
Ctrl+LClears the Screen, similar to the clear command
Ctrl+UClears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl+HSame as backspace
Ctrl+RLets you search through previously used commands
Ctrl+CKill whatever you are running
Ctrl+DExit the current shell
Ctrl+ZPuts whatever you are running into a suspended background process. fg restores it.
Ctrl+WDelete the word before the cursor
Ctrl+KClear the line after the cursor
Ctrl+TSwap the last two characters before the cursor
Ctrl+FMove cursor forward one character
Ctrl+BMove cursor backward one character
Esc+TSwap the last two words before the cursor
Alt+TSame as Esc + T
Alt+FMove cursor forward one word on the current line
Alt+BMove cursor backward one word on the current line
Esc+FSame as Alt + F
Esc+BSame as Alt + B
Alt+.Paste the last word of the most recently command
TabAuto-complete files and directory names
Go to table of contents 🔼

I can't remember these cryptic commands

You can always google or man the commands you are not familiar with. Or, checkout tldr, a collection of simplified and community-driven man pages.

Go to table of contents 🔼