hello_world/

# Print "hello world". # Hint: There are many ways to print text on # the command line, one way is with the 'echo' # command. # # Try it below and good luck! #

echo "hello world"

current_working_directory/

# Print the current working directory. #

pwd

list_files/

# List all of the files in the current # directory, one file per line. #

ls -1

last_lines/

# Print the last 5 lines of "access.log". #

tail -5 access.log

find_string_in_a_file/

# There is a file named "access.log" in the # current working directory. Print all lines # in this file that contains the string "GET". #

grep GET access.log

search_for_files_containing_string/

# Print all files, one per line that contain # the string "500". #

grep -rl * -e 500

search_for_files_by_extension/

# Print the relative file paths, one path # per line for all files that start with # "access.log" in the current directory. #

find . -name "access.log*"

search_for_string_in_files_recursive/

# Print all matching lines (without the filename # or the file path) in all files under the current # directory that start with "access.log" that # contain the string "500". #

find . -name "access.log*" | xargs grep -h 500

extract_ip_addresses/

# Extract all IP addreses from files that # that start with "access.log" printing one # IP address per line. #

find . -name "access.log*" | xargs grep -Eo '^[^ ]+'

delete_files/

# Delete all of the files in this challenge # directory including all subdirectories and # their contents. #

find . -delete

count_files/

# Count the number of files in the current # working directory. Print the number of # files as a single integer. #

ls | wc -l

simple_sort/

# Print the contents of access.log # sorted. #

sort access.log

count_string_in_line/

# Print the number of lines # in access.log that contain the string # "GET". #

grep GET access.log | wc -l

split_on_a_char/

# The file split-me.txt contains a list of # numbers separated by a ';' character. # Split the numbers on the ';' character, # one number per line. #

cat split-me.txt | sed s/\;/\

/g

print_number_sequence/

# Print the numbers 1 to 100 separated # by spaces. #

echo {1..100}

remove_files_with_extension/

# There are files in this challenge with # different file extensions. # Remove all files with the .doc extension # recursively in the current working directory. #

find . -name "*.doc" -delete

replace_text_in_files/

# This challenge has text files that contain # the phrase "challenges are difficult". Delete # this phrase recursively from all text files. #

find . -name "*.txt" -exec sed -i 's/challenges are difficult//g' {} +

sum_all_numbers/

# The file sum-me.txt have a list of numbers, # one per line. Print the sum of these numbers. #

cat sum-me.txt | xargs | sed -e 's/\ /+/g' | bc

just_the_files/

# Print all files in the current directory # recursively without the leading directory path. #

find . -type f -printf "%f

"

remove_extensions_from_files/

# Remove the extension from all files in # the current directory recursively. #

find .

find `pwd` -type f -exec bash -c 'mv "$1" "${1%.*}"' - '{}' \;

replace_spaces_in_filenames/

# The files in this challenge contain spaces. # List all of the files in the current # directory but replace all spaces with a '.' # character. #

find . -type f -printf "%f

" | xargs -0 -I {} echo {} | tr ' ' '.'

files_starting_with_a_number/

# There are a mix of files in this directory # that start with letters and numbers. Print # the filenames (just the filenames) of all # files that start with a number recursively # in the current directory. #

find . -name '[0-9]*' -type f -printf "%f

"

print_nth_line/

# Print the 25th line of the file faces.txt #

sed '25q;d' faces.txt

remove_duplicate_lines/

# Print the file faces.txt, but only print the first instance of each # duplicate line, even if the duplicates don't appear next to each other. #

awk '!seen[$0]++' faces.txt

corrupted_text/

# You have a new challenge! # The following excerpt from War and Peace is saved to # the file 'war_and_peace.txt': # # She is betraying us! Russia alone must save Europe. # Our gracious sovereign recognizes his high vocation # and will be true to it. That is the one thing I have # faith in! Our good and wonderful sovereign has to # perform the noblest role on earth, and he is so virtuous # and noble that God will not forsake him. He will fulfill # his vocation and crush the hydra of revolution, which # has become more terrible than ever in the person of this # murderer and villain! # # The file however has been corrupted, there are random '!' # marks inserted throughout. Print the original text. #

< war_and_peace.txt tr -s '!' | sed 's/!\([a-z]\)/\1/g' | sed 's/!\( [a-z]\)/\1/g' | sed 's/!\.!/./g' | sed 's/ !/ /g'





I recently stumbled upon https://cmdchallenge.com which sort of tests your command line knowledge and comfortability. You have to basically solve all the challenges in a single line of bash. It is pretty simple and fun. You should give it a try before checking the solutions.Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution:Solution: (note you cant useSolution:Solution:Solution:Solution:Solution: (Found this on hackernews)Also, you can checkout the creator's solutions here