- `Author:` Sergio Daniel Cortez Chavez - `Link:` <https://sergiocortez-37830.medium.com/linux-shell-tricks-2f34c5935b89> - `Publish Date:` 2021.11.29 --- ## Stdin as a file argument ```bash # Command expects a file: wc file1 file2 # Instead of making a temp file to read in a little text use this to pass in # text as a temp file to STDIN wc file1 - file2 # waits for you to type input and you complete this process by using `CTRL+D` which inserts the EOF character ``` ## Use the output of another command as a file argument ```bash wc file1 <(echo “hello world”) file2 ``` > When you wrap a command with `<(...)` bash generate a temporal file in a path like `/dev/fd/64`, then execute your wrapped command, put the output in this temporal file, and finally replace `<(...)` with the filename of the temporal file, in this case, `/dev/fd/64` ## Avoid conflicts with filenames that start with a dash ```bash # -- indicates the end of the options section # -myFile.txt uses a dash after the options section to avoid conflicts cat -- -myFile.txt ``` ## Re-run commands ```bash # of course there's sudo !! # but you can also do !-N # where N is the Nth command (Relative) # or !N # for the N command in your history (Absolute) ``` ## Re-use command arguments ```bash mkdir very-large-directory-name cd very-large-directory-name # Instead of duplicating the argument of the mkdir command, you can use !$ for retrieve the last argument of the last command, the result is: mkdir very-large-directory-name cd !$ # == cd very-large-directory-name ``` ## Ignore the first N lines > By default, the tail command will show the last n rows, but if you specified the option -n with a number that starts with the + symbol, like +5 , the first 5 lines are going to be skipped. ```bash # In this example, the tail command is going to skip the first 10 lines and print the rest of the file content. tail -n +10 dataset.csv ``` ## Track the content of a log file > See the contents of a file in real time ```bash watch cat log.txt ``` > Although this command does the job, it is not the best option. You can use the tail command with the -f option to track only the new lines that are appended to the file,