[HN Gopher] Self-imposed ban - a lightweight bash script to bloc...
___________________________________________________________________
Self-imposed ban - a lightweight bash script to block commands
Author : alex-moon
Score : 27 points
Date : 2025-07-11 08:28 UTC (3 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| samrus wrote:
| Why? I use the terminal but i have no idea how cli commands would
| get so distracting you have to parental lock yourself out of them
| like its entertainment or social media
| haiku2077 wrote:
| On window managers like i3 or sway, you launch programs
| (including GUI applications) via their shell command in an
| autocompleting micro-menu.
| hk1337 wrote:
| Ban yourself from vim so you don't get stuck in it for hours?
| kjkjadksj wrote:
| Some people get distracted by work and not social media during
| their down time
| ABU_ALLIL_123 wrote:
| Lvoe
| accoil wrote:
| I have a small post command hook in fish that looks at arg0 and
| prints out any associated reminder for the program I just used.
| I use it to remind myself that I'm testing an alternative (e.g
| I used grep today, and it printed out a reminder that I have rg
| installed). I guess it could be used as a harsher version of
| that.
| jmholla wrote:
| Why have a dependency on Zenity instead of displaying the message
| in the terminal? Seems weirdly limiting to have a GUI dependency
| for a terminal application thus making this unusable on headless
| systems. I think you could make it optional and use STDERR if
| Zenity's not around.
| yjftsjthsd-h wrote:
| I assume it's meant to work for programs that aren't being
| launched from the terminal
| xunil2ycom wrote:
| My question exactly, minus the optional part. If it's a
| command-line tool, it should not require any GUI elements at
| all.
| ramses0 wrote:
| So, I love that the README is nearly as long as the code itself.
|
| Shorthand: PATH=$HOME/.bans:$PATH # (prefix
| path with "banned" cmd-dir) printf "echo 'bad!'" >
| "$HOME/bans/some-cmd" # (make `some-cmd` run `echo 'bad!'`)
|
| ...and then some goodies around tracking, reasons, etc... some
| niftiness around "auto-expiring" the banned command (self-deletes
| the "bad" shell script that's shadowing the actual command
| usage).
|
| As to the sibling "why?" ... it's trivial to circumvent: `ban ls
| "I run it too much..."`, `/bin/ls` is still unaffected, `rm
| ~/.bans/ls`, etc... but I _do_ like the pause to allow a return
| to rationality, eg: "Hey, maybe I _do_ run `ls` too much... " and
| then deciding how to proceed.
|
| It'd probably be nicer if it did something like `(Bad)
| Chrome.app/*` on OSX, but as an exercise in shell gymnastics, I'm
| kindof all here for it! :-)
| samrus wrote:
| > "Hey, maybe I do run `ls` too much..."
|
| This cant be a though someone has ever had. Your telling me
| people are getting addicted to the ls command?
| lupusreal wrote:
| I'm addicted to sl. I love those trains.
| z_open wrote:
| I am. Every time I cd I ls even though I know what's in
| there.
| zamadatix wrote:
| I think it's more an example of a "why did I just cd ls cd ls
| cd ls that directory tree instead of leveraging tab
| completion" type thing than "man, I gotta get over my ls
| addiction or I won't be able to provide for my family".
|
| I've found myself doing similar hints to nudge more
| efficient-but-less-exercised things into my day to day usage.
| E.g. making /etc/crontab a comment to get more used to
| creating systemd timers instead. Otherwise I'd just do it
| without thinking.
| zahlman wrote:
| > why did I just cd ls cd ls cd ls that directory tree
| instead of leveraging tab completion
|
| Sometimes I find myself repeatedly ls'ing even though I'm
| making good use of tab completion. There's something about
| seeing the names that helps with remembering what I was
| going to do.
| hombre_fatal wrote:
| This is why I like GUIs. Seeing the files that are
| modified in my git gui reminds me of what Im doing
| instead of running git status. And seeing all the
| available things I could do is more stimulating than
| having to keep coming up with the text commands to type.
| johnisgood wrote:
| For that I use Git Cola[1], it is quite nice.
|
| [1] https://git-cola.github.io/
| zahlman wrote:
| Come to think of it, I would probably benefit from rate-
| limiting myself on `git status`.
| zamadatix wrote:
| cd /etc/c<tab><tab>...
|
| can list the names similar to cd
| /etc/<enter>ls c*<enter>cd c...
|
| but there will always end up being times an actual ls is
| the right call, just not necessarily as ones default
| method.
| max-privatevoid wrote:
| Bad habits do happen. I forced myself out of `sudo su` and
| into `sudo -i` by configuring my sudo rule to allow any
| command except `su`.
| ofalkaed wrote:
| This popped up on HN last week:
| https://github.com/mieubrisse/cmdk I don't really get it but
| apparently some people really have issues with ls and cd and
| feel they use them too much.
| skeptrune wrote:
| Haha, this is fun
| nikolayasdf123 wrote:
| kind of cool. like "App/Time Limits" in Apple
| foxinsocks5 wrote:
| What if I ban rm too?
| johnisgood wrote:
| You will not be able to use the command. I am not sure if other
| scripts could, however. I have not checked the implementation.
| msgodel wrote:
| I wrote a similar piece of software but it just limits time spent
| on certain web sites per day.
|
| It's amazing how much something so simple can change your life if
| you have a problem with that. I'd highly recommend everyone
| enable it. I think iOS has something like that built in too so
| you don't even need my stuff unless you're on eg Linux.
| RS-232 wrote:
| > ban ban
| teddyh wrote:
| _Frog put the cookies in a box. "There," he said. "Now we will
| not any more cookies."_
|
| _"But we can open the box," said Toad._
|
| _"That is true," said Frog._
| zahlman wrote:
| Yes. It's still helpful.
|
| The same arguments apply to, for example, leading-underscore
| names in Python code.
| haiku2077 wrote:
| "That is true," replied a commenter. "But it has successfully
| worked for breaking my bad habits in the past."
| nektro wrote:
| wish the README showed an example of what trying to use a banned
| command looked like.
|
| rather than this being useful to stop "distracting" commands i
| see this being useful in stopping agents from calling `rm` for
| example
| nektro wrote:
| oh i see, it installs a bash script in a PATH thats a higher
| priority than the real one.
| autoexec wrote:
| > i see this being useful in stopping agents from calling `rm`
| for example
|
| I used to do that kind of thing a long time ago. MS-DOS
| wouldn't ask for confirmation when deleting files, so I'd use a
| hex editor to rename the del command, then create a batch file
| named del.bat that would ask if you really wanted to remove the
| file. Even had something like the recycle bin at one point to
| prevent accidental deletes.
|
| You could even set up some very weak security by renaming
| commands like ls/dir and it could keep some casual snoops out
| of your system or prank/annoy someone else by replacing their
| commands to make them do funny things.
| priyashpatil wrote:
| What if I ban ban
___________________________________________________________________
(page generated 2025-07-14 23:01 UTC)