echo $(sudo lshw -businfo | grep -B 1 -m 1 $(df "/path/to/file" | tail -1 | awk '{print $1}' | cut -c 6-8) | head -n 1 | awk '{print $1}' | cut -c 5- | tr ":" "-") | sudo tee /sys/bus/usb/drivers/usb/unbind

Given a file path, unplug the USB device on which the file is located (the file must be on an USB device !)

You have an external USB drive or key. Apply this command (using the file path of anything on your device) and it will simulate the unplug of this device. If you just want the port, just type : echo $(sudo lshw -businfo | grep -B 1 -m 1 $(df "/path/to/file" | tail -1 | awk '{print $1}' | cut -c 6-8) | head -n 1 | awk '{print $1}' | cut -c 5- | tr ":" "-")
Sample Output
alex@alex-G73Sw:~$ echo $(sudo lshw -businfo | grep -B 1 -m 1 $(df "/media/0AF2108209E826EE/test" | tail -1 | awk '{print $1}' | cut -c 6-8) | head -n 1 | awk '{print $1}' | cut -c 5- | tr ":" "-") | sudo tee /sys/bus/usb/drivers/usb/unbind
2-1.3

30
By: tweet78
2014-04-06 12:06:29

These Might Interest You

  • This is a quick replacement for lspci if you need to know what's in a given system but pciutils is not installed. You then need something that can look up the IDs from pci.ids if you want the verbose output. Show Sample Output


    4
    for device in /sys/bus/pci/devices/*; do echo "$(basename ${device} | cut -c '6-') $(cut -c '3-6' ${device}/class): $(cut -c '3-' ${device}/vendor):$(cut -c '3-' ${device}/device)"; done
    Flameeyes · 2012-04-13 03:26:02 0
  • "-o loop" lets you use a file as a block device


    45
    mount /path/to/file.iso /mnt/cdrom -oloop
    nerd65536 · 2009-02-05 17:28:06 3
  • Found this useful for scripts where I needed to work with the machine's IP. If $DEVICE is not specified, this will return all IPs on the machine. If $DEVICE is set to a network adapter, it will return just that adapter's IP.


    -2
    ifconfig $DEVICE | perl -lne '/inet addr:([\d.]+)/ and print $1'
    jdob · 2009-07-21 13:48:19 0
  • This wgets the iso directly to the USB device, replace /dev/sdb with the device name of the USB stick. After wget finishes you will be able to boot the .iso file from the USB stick.


    0
    wget -O/dev/sdb ftp://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/mini.iso
    unixmonkey22563 · 2011-06-12 21:58:13 0
  • I had a hard time in finding the correct settings to get reasonable output from a coin selector which sends its data over a serial line. In the end, minicom came to the rescue and pointed me on the right track. So, if you need to do something similar, these settings may help you. Replace ttyUSB0 with your device file, 9600 with your baud rate, 5 with your read timeout (10ths of a second), and 1 with the minimum numbers of characters you want to read. You can then open the device file like you are used to do, example: DATA="`xxd -ps -l 5 \"$DEV\"`"


    1
    stty -F "/dev/ttyUSB0" 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke time 5 min 1 line 0
    Alanceil · 2009-03-20 14:48:32 0
  • file(1) can print details about certain devices in the /dev/ directory (block devices in this example). This helped me to know at a glance the location and revision of my bootloader, UUIDs, filesystem status, which partitions were primaries / logicals, etc.. without running several commands. See also: file -s /dev/dm-* file -s /dev/cciss/* etc.. Show Sample Output


    24
    file -s /dev/sd*
    mhs · 2010-12-28 09:56:03 0

What Others Think

Nice one, tweet78 !. Works for my USB key and my external HDD.
maze360 · 214 weeks and 4 days ago
I have I/O errors while writing on my usb drive. Thanks to your command, I wrote a script to unplug / replug and resume transfer. Very useful, thanks !
dickbeck · 214 weeks and 3 days ago
Interesting, but will not work if the file is on a raid 1 array for example (several devices) ...
stevebaker · 214 weeks and 2 days ago
not bad, but I'm sure I could write a shorter command, still working on it !
nullpointer · 214 weeks and 2 days ago
awesome !
changlee · 213 weeks and 1 day ago
Ca marche pas avec toutes les cl?s usb, mais bon boulot tout de m?me
massimo · 213 weeks ago
great !
feduser · 212 weeks and 5 days ago
OK on Kali
zaius · 212 weeks and 5 days ago
works well for me on Fedora 20, but, as stated, should be improved to manage raid
bobanderson · 212 weeks and 3 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: