09-05-2011
Disclaimer: I am not a professional UNIX guy - I work in a completely different field.
From my perspective, the number one most helpful thing you can do is to be
constantly coding. This is particularly helpful if you have a need (or at least desire) some particular behaviour in your system. For example, I had a buggy program, and sometimes would need to kill several instances of it. It was a pain to do a `ps -A` every time, and manually kill each instance of the process. So I made a one-line script that would do a ps -A, grep for the name of the particular process, parse and grab the pid from the first field, and then do a kill on those numbers. Over time, I polished and extended the script, adding functionality, and making the output a little more informative/easier to read.
Now there a few things to note here:
- At the time, I did not know of pkill and friends, so I was basically reinventing the wheel. As I look back, that was OK, because I learned something while doing it. In fact, it is a decent way to learn. You basically take a known utility that you normally use, eg., pkill, or whatever, and re-implement it yourself. At first, your new program likely won't have all of the functionality of the full blown version on your system, but you can add that over time. This concept is also helpful in other areas, such as C programming. It is very instructive, for example, to make your own versions of the string library functions. Not for actual use necessarily, but for learning. (It is hard to beat the system versions, in terms of outright speed. If you already know enough to improve on the standard library, then my points here are basically moot.)
- If the process of learning how to shell program seems to be coming slowly, remember to be patient with yourself, and stick with it. Everybody's situation is different. For my part, I am a slow learner (it seems), and I have been hacking away for years and am not nearly as far as others have gotten in the same time. If I was doing this for a living, I know I would be farther along, because a), I would be immersed in it, and b) I would (ostensibly) have other professionals to guide me when I was doing something that was not quite right. This is true of mostly any profession I think. There is a huge learning curve with this sort of thing - lots of nooks and crannies. Be patient!
So that is my two cents worth. Write lots of code. It would be preferable to be writing some useful little stuff which improves some particular situation of your own (as opposed to toy exercises, which initially can be somewhat helpful, but are ultimately limited in value). If you are like me, you likely want to grab an O'Reilly book on scripting, or something like that as well. Ask lots of questions as well.
10 More Discussions You Might Find Interesting
1. Programming
I want to learn Network Programming with C,but I don't know how to start.
Thank you. (2 Replies)
Discussion started by: hubin330
2 Replies
2. UNIX for Dummies Questions & Answers
Which languages would, in the long run, be best to learn on a UNIX environment
for kernel work, every day programs, and overall UNIX programming? I've been learning C for over a year now (which I'm pretty confident with) and decided I want to look into some other languages.
I'll mainly be... (1 Reply)
Discussion started by: tjinr
1 Replies
3. Web Development
I am learning Web Development, so far i am learning html,xhtml, css, java script....
What I want to know is what other Web Development languages should i learn? (1 Reply)
Discussion started by: Anna Hussie
1 Replies
4. What is on Your Mind?
I would love the idea to develop games. How can I teach myself computer programming? What programs or software must I use? I have the new iMac? (5 Replies)
Discussion started by: Anna Hussie
5 Replies
5. UNIX for Dummies Questions & Answers
How does unix system administration, unix programming, unix network programming differ?
Please help. (0 Replies)
Discussion started by: thulasidharan2k
0 Replies
6. UNIX for Dummies Questions & Answers
Hi,
I am a mid-career programmer with extensive experience in object-oriented design and development in C, C++, and C#. I've written a number of multi-threaded server applications and background services, although my grasp of networking protocols is a bit weak: my current job drifted away from... (2 Replies)
Discussion started by: TheTaoOfPhil
2 Replies
7. Shell Programming and Scripting
I'm going to be starting a job in a month or so that I need to brush up on my Unix shell scripting skills. About 15 years ago, I took a college class for Unix shell scripting. I would like to find a good college book again, rather than just going to Amazon and just buying anything.
This is... (2 Replies)
Discussion started by: dorlow
2 Replies
8. Shell Programming and Scripting
Hi Guys,
I know basic command of unix and basic programming of unix as like using for loop, while loop, if..else, case statement etc. then how to learn unix shell scripting as well as use also. (1 Reply)
Discussion started by: aaditya321
1 Replies
9. Shell Programming and Scripting
Hello! :)
I currently got the task of programming a UNIX Shell for practice. The functionality is as follows:
1. Entering commands with the keyboard. Enter stops the input and creates a process which should start any program
2. the shell waits for termination of each command before... (1 Reply)
Discussion started by: DarkDan
1 Replies
10. UNIX for Beginners Questions & Answers
Hi ,
wanna learn native GUI programming in Unix-Linux instead of Gtk and Qt.
No problem. You don't need a cross platform Gui toolkit like Gtk and Qt.
And the code and syntax is also not more or less than others.
Check out this code for a simple mainwindow for your application that is openend in... (0 Replies)
Discussion started by: Sennenmut
0 Replies
mesg(1) General Commands Manual mesg(1)
NAME
mesg - Permits or refuses write messages
SYNOPSIS
mesg [y | n ]
[Tru64 UNIX] The following format is supported for backward compatibility: mesg [[-]y[es] | [-]n[o] ]
STANDARDS
Interfaces documented on this reference page conform to industry standards as follows:
mesg: XCU5.0
Refer to the standards(5) reference page for more information about industry standards and associated tags.
OPERANDS
Grants permission to other users to send messages to the terminal device.
[Tru64 UNIX] You can optionally include a - (hyphen) before y, include es after y, or both. Denies permission to other users to
send messages to the terminal device.
[Tru64 UNIX] You can optionally include a - (hyphen) before n, include o after n, or both.
DESCRIPTION
The mesg command controls whether other users on the system can send messages to you with the talk and write commands. Called without
arguments, mesg displays the current terminal message permission setting.
[Tru64 UNIX] The shell start-up procedure disallows messages by default. You can override this default action by including the line mesg
y in your $HOME/.profile (sh), (csh), or (csh) file.
Note
[Tru64 UNIX] This default setting described for the shell start-up procedure message permissions assumes that the shell is one started as
part of a login session. If the shell got started by some other means, the default depends on what that other program has done.
[Tru64 UNIX] Any user can send messages with write if the receiving user has enabled messages. A user with the sysadmin command autho-
rization can send messages to any terminal.
The terminal device affected is determined by searching for the first terminal in the sequence of devices associated with standard input,
standard output, and standard error, respectively. (In other words, the affected device is not the same as the controlling terminal for
the session.)
[Tru64 UNIX] Message permission has no effect on messages delivered through the electronic mail system.
[Tru64 UNIX] If you add mesg y to your $HOME/.profile, you will be able to receive messages from other users via the write command or the
talk command. If you add mesg n to your $HOME/.profile, you will not be able to receive messages from other users via the write command or
the talk command.
The mesg command also accepts the current locale's equivalent of yes and no. These equivalents are determined by the setting of the
LC_MESSAGES environment variable. The usage message displays the current locale's equivalent of yes and no.
Security Restrictions
[Tru64 UNIX] In the trusted configuration of the system, all terminal devices have owner set to the login user and group set to the pseu-
dogroup tty. The login command sets terminal modes to 0600 at login time, so you must explicitly use mesg y to enable access from unautho-
rized users.
NOTES
[Tru64 UNIX] If your current locale defines settings other than yes or no, the mesg command does not accept yes or no as arguments. This
causes an error if you use a yes or no argument to mesg in your file.
EXIT STATUS
The following exit values are returned: Message reception is allowed. Message reception is denied. An error occurred.
EXAMPLES
To allow only appropriately authorized users to send messages to your terminal, enter: mesg no To allow everyone the permission to send
messages to your terminal, enter: mesg yes To determine the state of message acceptance of your terminal, enter: mesg
This will give one of the following responses, as appropriate: is yes is no
ENVIRONMENT VARIABLES
The following environment variables affect the execution of mesg: Provides a default value for the internationalization variables that are
unset or null. If LANG is unset or null, the corresponding value from the default locale is used. If any of the internationalization vari-
ables contain an invalid setting, the utility behaves as if none of the variables had been defined. If set to a non-empty string value,
overrides the values of all the other internationalization variables. Determines the locale for the interpretation of sequences of bytes
of text data as characters (for example, single-byte as opposed to multibyte characters in arguments). Determines the locale for the for-
mat and contents of diagnostic messages written to standard error. Determines the location of message catalogues for the processing of
LC_MESSAGES.
FILES
User profile User profile (csh) User profile (csh) Your current terminal
SEE ALSO
Commands: chmod(1), csh(1), Bourne shell sh(1b), POSIX shell sh(1p), stty(1), talk(1), wall(1), write(1)
Functions: chmod(2)
Standards: standards(5)
mesg(1)