Tag Archives: Linux

Shell,(bash) tiny thing but might be important, [: missing `]’

Source from: http://stackoverflow.com/questions/15993062/bash-scripting-missing

I am getting an error ./test.sh: line 13: [: missing `]’ in the file test.sh I tried using brackets and other options such as -a or by checking the size of the file p1 but the error is always there and the else statement is always executed irrespective of the input given.I even tried by removing the ; in line 13 but it didn’t help. test.sh

    #!/bin/bash
    echo "Enter app name"
    read y
    $y &
    top -b -n 1 > topLog.log
    #-w checks for the whole word not and sub string from that word
    grep -w "$y" topLog.log > p1
    #-s option checks if the file p1 is present or not
    if [ -s "p1"];  #line 13
    then 
        echo "Successful "
    else
        echo "Unsuccessful"
    fi
    rm p1

I am new to bash scripting.So if there is any silly mistake please excuse me.

Change

if [ -s "p1"];  #line 13

into

if [ -s "p1" ];  #line 13

note the space.

Accessing Devices without Sudo in Ubuntu.

Source from: http://www.tincantools.com/wiki/Accessing_Devices_without_Sudo

On Linux, OpenOCD requires superuser privileges to communicate with your USB drivers. You can giveOpenOCD superuser priveleges with the sudo command, like this:

sudo openocd [-f ...]

…but sudo prompts the user for the root password. Suppose you want to allow a user to run OpenOCDwithout a root password, or you just don’t want to type sudo each time you run OpenOCD. This guide will demonstrate how to configure Ubuntu Linux to allow a particular user to run OpenOCD for a device withoutsudo.

 

Step 1: Add the User to the plugdev Group

Determine if the user is part of the plugdev group with the groups command. Open a terminal window and type:

groups USERNAME

…replacing USERNAME with the name of the user account. The groups command will print a list of all of the user’s groups. Look for the group plugdev. If the user is not already a member of plugdev, add the user with the adduser command:

sudo useradd -G plugdev USERNAME

Run groups USERNAME again to verify that the user is now part of plugdev.

 

Step 2: Determine your Device’s Vendor ID and Product ID

The vendor ID and product ID for the Flyswatter and Flyswatter2 are as follows:

idVendor = 0403
idProduct = 6010

For any other device, plug it in, then use the lsusb command to retrieve your hardware’s vendor ID and product ID. You will need them below.

 

Step 3: Add the Device to udev

Now you need to add your hardware to the plugdev group. In the terminal window, navigate to/etc/udev/rules.d and list the contents of the directory.

cd /etc/udev/rules.d
dir

In a fresh installation of Ubuntu 10.04 you should see two files listed: 70-persistent-cd.rules and 70-persistent-net.rules. If you see other files, proceed with caution. If in doubt contact your system administrator. If you are ready to proceed, create a new file in the gedit text editor.

sudo gedit 10-my-usb.rules

You can name this file whatever you want, so long as it ends in “.rules”. However, rules files by convention begin with a number. Linux parses rules files in lexical order, and the number makes it easy to see which files will be parsed first. Choosing a low number (like 10, as above) means that your file will be parsed before system rules files.

Add the following text to the file, replacing VENDOR_ID and PRODUCT_ID with the values you found in Step 2 above.

ATTRS{idProduct}=="[VENDOR_ID]", ATTRS{idVendor}=="[PRODUCT ID]", MODE="666", GROUP="plugdev"

For the Flyswatter or Flyswatter2, the text should look like this:

ATTRS{idProduct}=="6010", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"

On older Ubuntu installations you may need to use SYSFS instead of ATTRS, like this:

SYSFS{idProduct}=="6010", SYSFS{idVendor}=="0403", MODE="666", GROUP="plugdev"

Save the file and close it. Now tell Ubuntu to reload udev rules by entering the following in the terminal window:

sudo udevadm trigger

Any member of the plugdev group should now be able to run OpenOCD without using sudo.

Sharing history all around terminals in Linux.

By default, a terminal doesn’t share its history with another one. For example, you open a terminal(1) and type some commands. You need one more a terminal and then open another terminal(2). These terminal(1) and terminal(2) do not have the same history. (You can easily check by typing ‘history’)

All what you need to do for sharing the history for all opened terminal is adding the following code in “.bashrc” file. (Ubuntu 11.04)

export PROMPT_COMMAND='history -a; history -r'

More explanation about options, googling history.

Don’t forget “source” after editing “.bashrc” file in order to apply your changes.