| 1 | * rmsym - Symlink deleter |
| 2 | #+TITLE: rmsym - Symlink deleter |
| 3 | #+AUTHOR: Steven Baltakatei Sandoval |
| 4 | #+DATE:2023-02-20 |
| 5 | #+EMAIL:baltakatei@gmail.com |
| 6 | #+LANGUAGE: en |
| 7 | #+OPTIONS: toc:nil |
| 8 | |
| 9 | Created by [[https://baltakatei.com][Steven Baltakatei Sandoval]] on |
| 10 | 2023-02-20T18:43+00 |
| 11 | under a [[https://creativecommons.org/licenses/by-sa/4.0/][CC BY-SA 4.0]] (ðŸ…🅯🄎4.0) license and last updated on |
| 12 | 2023-02-20T18:43+00 |
| 13 | |
| 14 | ** Summary |
| 15 | ~rmsym~ is a Bash script which deletes symbolic links specified by |
| 16 | positional arguments. |
| 17 | |
| 18 | ** Versions |
| 19 | | Version | Description | |
| 20 | |---------+----------------------------------------------------------------| |
| 21 | | 0.0.1 | Initial version. Does not accept or pass on arguments to ~rm~. | |
| 22 | | | | |
| 23 | |
| 24 | ** Background |
| 25 | I needed a script that would let me quickly delete only symlinks if I |
| 26 | were to provide it with a mix of paths of files, directories, or |
| 27 | symlinks; specifically, I want to be able to create music playlists |
| 28 | that any music player can parse; most music players can recursively |
| 29 | scan directories and a directory tree of symlinks would reduce the |
| 30 | need to maintain multiple copies of music files on the same file |
| 31 | system. However, in order to assure myself that when I prune symlinks |
| 32 | that I don't delete actual files targeted by the symlinks, I need a |
| 33 | program that will only delete symlinks. |
| 34 | |
| 35 | Bash supports testing whether a path is a symlink or not via the ~-h~ |
| 36 | test. For example, here is a simple Bash script that will report |
| 37 | whether a symlink is present at ~$HOME/foo.txt~ or not. |
| 38 | |
| 39 | #+begin_example |
| 40 | #!/bin/bash |
| 41 | path_myfile="$HOME/foo.txt"; |
| 42 | if [[ -h "$path_myfile" ]]; then |
| 43 | echo "STATUS:Is a symlink:$path_myfile"; |
| 44 | else |
| 45 | echo "STATUS:Is not a symlink:$path_myfile"; |
| 46 | fi; |
| 47 | #+end_example |
| 48 | |
| 49 | ** Reference |
| 50 | - "Bash Reference Manual", Section: "[[https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions][6.4 Bash Conditional Expressions]]". gnu.org. |