Difference between pages "Find out where configuration changes are stored" and "What does "unary operator expected" mean"

From Linuxintro
(Difference between pages)
imported>ThorstenStaerk
 
imported>ThorstenStaerk
(Created page with "When you work with Linux scripts on the command line, you will sometimes get an error message saying unary operator expected And you may wonder what this means. To give you an e...")
 
Line 1: Line 1:
You may ask yourself "where are my [[configuration]] settings stored". The reason why you want to know is may be that you are the administrator and want your users to have some specific options set. This article introduces a methodology how to identify the places of configuration setting on the example of the [[program]] konsole.
+
When you work with Linux scripts on the command line, you will sometimes get an error message saying
 
+
unary operator expected
Whenever I set up a computer, I start konsole and change its settings. I choose Settings -> Configure Current Profile -> Tabs -> "Show 'New Tab' and 'Close Tab' buttons in tab bar". Today I wanted to write a script to do this configuration change for me. The most important question is - where is this setting being saved?
+
And you may wonder what this means. To give you an example, let's write a short bash script. Just copy and paste the lines below into a Linux Shell:
 
+
  [[cat]] >test.sh<<EOF
= The strace approach =
+
[[echo]] "how is your name? "
I could find this out using the command
+
  [[read]] name
strace -ffe open konsole
+
  [[if]] [ $name = "thorsten" ]; then echo "I know you"; fi
[[strace]] is a cool [[command]] that shows you every syscall invoked by a program (in the above case konsole). When called with the -e open argument, it will only show the open syscalls. This gives you a powerful tool into your hands: A monitor which files are read and/or modified by a program. The output will read like this:
+
  EOF
  [pid 29951] open("/etc/localtime", O_RDONLY) = 3
+
  [[chmod]] 777 test.sh
[pid 29951] open("/etc/kde4rc", O_RDONLY|O_CLOEXEC) = 3
+
After you did this, you have a script test.sh
[pid 29951] open("/root/.kde4/share/config/kdeglobals", O_RDONLY|O_CLOEXEC) = 3
 
The -ff argument is needed so strace still follows spawning processes; for more information, read [http://linux.die.net/man/1/strace strace's man page].
 
 
 
So I did [[open a console]], entered
 
strace -ffe open konsole
 
A konsole window popped up and I chose Settings -> Configure Current Profile -> Tabs -> "Show 'New Tab' and 'Close Tab' buttons in tab bar". When I clicked on "Apply", I found a line saying
 
  [pid 29951] open("/root/.kde4/share/apps/konsole/Shell.profile", O_RDONLY|O_CLOEXEC) = 16
 
And I could verify my changes go to /root/.kde4/share/apps/konsole/Shell.profile:
 
  # [[cat]] /root/.kde4/share/apps/konsole/Shell.profile
 
[...]
 
ShowNewAndCloseTabButtons=false
 
[...]
 
 
 
= The find approach =
 
I started konsole, chose Settings -> Configure Current Profile -> Tabs -> "Show 'New Tab' and 'Close Tab' buttons in tab bar" -> Apply. Then I typed a command to find all files newer than 0.01 days:
 
  cd
 
  [[find]] . -ctime -0.01
 
And I found the output
 
./.kde4/share/apps/konsole/Shell.profile
 
This means my configuration changes were saved in the file .kde4/share/apps/konsole/Shell.profile.
 
 
 
[[Category:Geeky]]
 

Revision as of 14:22, 20 December 2011

When you work with Linux scripts on the command line, you will sometimes get an error message saying

unary operator expected

And you may wonder what this means. To give you an example, let's write a short bash script. Just copy and paste the lines below into a Linux Shell:

cat >test.sh<<EOF
echo "how is your name? "
read name
if [ $name = "thorsten" ]; then echo "I know you"; fi
EOF
chmod 777 test.sh

After you did this, you have a script test.sh