Sponsored Content
Top Forums Shell Programming and Scripting Best way to learn UNIX and shell Programming Post 302552669 by kermit on Monday 5th of September 2011 05:35:05 AM
Old 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:
  1. 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.)
  2. 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

Want To Learn Network 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

Programming/Scripting Languages To Learn

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

What Web Development languages should i learn?

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?

How can I learn computer programming languages on my own?

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?

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

Open-source projects to learn concurrency-managed network programming in Unix?

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

Need a good book to learn UNIX Shell 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

How to learn UNIX shell 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

Help for programming a UNIX Shell in C++

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

Wanna learn native GUI programming in UNIX - Linux ?

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
getlogin(2)							System Calls Manual						       getlogin(2)

NAME
getlogin, getlogin_r, setlogin - Gets and sets login name SYNOPSIS
#include <unistd.h> char *getlogin(void); int getlogin_r( char *name, size_t len); int setlogin( char *name); The following function does not conform to current standards and is supported only for backward compatibility: int getlogin_r(char *name, int len); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: getlogin(), getlogin_r(): XSH5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Points to the login name. Specifies the length of the buffer pointed to by name. DESCRIPTION
The getlogin() function returns the login name of the user associated with the current session. The name is normally associated with a login shell at the time a session is created, and is inherited by all processes descended from the login shell. (This is true even if some of those processes assume another user ID, for example when the su command is used.) The setlogin() function sets the login name of the user associated with the current session to name. This call is restricted to the supe- ruser, and is normally used only when a new session is being created on behalf of the named user (for example, at login time, or when a remote shell is invoked). The getlogin_r() function is the reentrant version of getlogin(). Upon successful completion, the login name is stored in name. RETURN VALUES
Upon successful completion, the getlogin() function returns a pointer to a null-terminated string in a static buffer or a null pointer if the user's login name cannot be found. If getlogin() fails, a null pointer is returned, and errno is set to indicate the error. Upon successful completion, the setlogin() function returns a value of 0 (zero). If setlogin() fails, then a value of -1 is returned and an error code is placed in errno. Upon successful completion, the getlogin_r() function returns a value of 0 (zero). Otherwise, an error number is returned. [Tru64 UNIX] Upon successful completion, the obsolete version of the getlogin_r() function returns a value of 0 (zero). Otherwise, -1 is returned and errno is set to indicate the error. ERRORS
If the getlogin(), getlogin_r(), or setlogin() function fails, errno may be set to one of the following values: [Tru64 UNIX] The name parameter gave an invalid address. [Tru64 UNIX] The name parameter pointed to a string that was too long. [Tru64 UNIX] Login names are limited to 64 characters, as specified by MAXLOGNAME (which is defined in sys/user.h). However, this name limit must be enabled in the kernel at boot time by explicitly setting the generic subsystem's login_name_max attribute to 64. For backward compatibility reasons, 12 is the default value of the login_name_max attribute. An additional value for a setlogin() failure is the following: [Tru64 UNIX] The caller tried to set the login name and was not the supe- ruser. RELATED INFORMATION
Commands: su(1) Functions: setsid(2) Standards: standards(5) delim off getlogin(2)
All times are GMT -4. The time now is 10:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy