Sponsored Content
Top Forums Shell Programming and Scripting Beginner Question about 2 specific functions Post 302837115 by Skittlybop on Thursday 25th of July 2013 06:49:20 AM
Old 07-25-2013
Beginner Question about 2 specific functions

My professor has given me a couple of functions that I am to use to accomplish the task of replacing spaces in file and/or directory names with hyphens.

(i.e. A B/C D/E F and you want to rename that to A B/C D/E-F would be an example of changing the file and leaving the directories)

These are two of the functions I am to use:

Code:
pathname ()
    {
    # function provided for the student
    print -- "${1%/*}"
    }

basename ()
    {
    # function provided for the student
    print -- "${1##*/}"
    }

Basically they are to be used thusly:

1. FILE="A B/C D/E F"
2. BASENAME=`basename "$FILE"`
3. PATHNAME=`pathname "$FILE"`
4. NEWNAME=`echo $BASENAME | some sed command to change spaces to -'s '` # I will leave the sed command to you :-)
5. Now you have the pieces to do the rename à $FILE gets moved to "$PATHNAME/$NEWNAME"

I am wondering if someone can break down, in detail, what those two functions actually do. I'm not sure I understand how the regex and print fucntion work in them, and why are there two hyphens after print. Thanks in advance. Sorry for the long post.

Last edited by jim mcnamara; 07-25-2013 at 08:01 AM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

A beginner for cygwin simple question

the current pwd is: c:\cygwin\home\hui which command can go to c:\documents and setting\hui\my documents\hui\reply.txt (1 Reply)
Discussion started by: zhshqzyc
1 Replies

2. UNIX for Dummies Questions & Answers

beginner redirect question

How can I redirect all stdout and stderr messages from a command to /dev/null (or to a file if need be) except messages that start with the word 'foo'? Messages that start with 'foo' need to be displayed in real time (i.e., when they are sent to stdout/stderr by the command). Thanks. (5 Replies)
Discussion started by: darwin_886
5 Replies

3. Shell Programming and Scripting

Beginner Shell Programming Question

Hello all, I am currently try to learn the linux operating system as well as some bash programming. I have come across some online course work which has been very helpful, I have been working through some assignments and since I have no teacher to ask I have come to you experts. So the... (6 Replies)
Discussion started by: g2axiom
6 Replies

4. Shell Programming and Scripting

beginner's question

i write a shell program and i execute that after i made a bin directiry in my home directory(i didnt give any permissions) now i change to other directory.then i execute it bit it is saying " no such a file or directory" can any one help me please (2 Replies)
Discussion started by: wkbn86
2 Replies

5. Shell Programming and Scripting

sed beginner question

hi and sorry for crossposting... I have data, the first column is the date ("2011 02 03 12 45") and follow I have the measurements . What I would like to do is: to read the data line by line and write the data of "today" in a new file and "yesterday" as well in another file, separated by... (2 Replies)
Discussion started by: jurgen
2 Replies

6. Shell Programming and Scripting

sed beginner question

Hello, I am processing data. In the first column there is the date ("2011 02 03 12 45") separated by space and follow I have the measurements.I have several days in one file. What I would like to do is: to read the data line by line and write the data of "today" in a new file and "yesterday" as... (13 Replies)
Discussion started by: jurgen
13 Replies

7. Shell Programming and Scripting

Beginner Question

Hello, I am new to shell scripting. I have a question I would greatly appreciate any suggestions on. I am writing a ksh script that will launch bin files. The files are owned root and the application runs under root. The application administrators do not get root access. The script is intended... (1 Reply)
Discussion started by: inakajin
1 Replies

8. Shell Programming and Scripting

pls help kinda difficult question for a beginner

1. Create a directory script (project_dir.sh) · Write a script in your home directory to create a subdirectory called “PROJECT<99>” within your home directory on the Ubantu/Linux server. <99> is your project number (e.g. 01,02,03, ... 15). · The script must test whether... (1 Reply)
Discussion started by: bugenhagen_
1 Replies

9. Shell Programming and Scripting

C shell - a question of a beginner

Hi, can someone explain how this aliases work: alias m 'if ( \!:$ =~ *gz) set status = 1 && most \!:$ || gzcat \!:1 | most ' I mean, I know what it does, but I don't know how - what is \!:$ and \!:1 - how do it used the && and || - what it does with status variable? thanks (3 Replies)
Discussion started by: tzvikao
3 Replies

10. Shell Programming and Scripting

Beginner Bash Scripting Question

Hello, I am new to Linux and studying to become a Unix System Admin. I am taking a course in which I was practicing creating a bash script to ping a particular IP address. The script can be found below: #/bin/bash echo "Enter the IP address" read ip if then ping -c 1 $ip if ;... (3 Replies)
Discussion started by: shah9250
3 Replies
BASENAME(3)						   BSD Library Functions Manual 					       BASENAME(3)

NAME
basename -- extract the base portion of a pathname SYNOPSIS
#include <libgen.h> char * basename(char *path); DESCRIPTION
The basename() function returns the last component from the pathname pointed to by path, deleting any trailing '/' characters. If path con- sists entirely of '/' characters, a pointer to the string "/" is returned. If path is a null pointer or the empty string, a pointer to the string "." is returned. RETURN VALUES
On successful completion, basename() returns a pointer to the last component of path. If basename() fails, a null pointer is returned and the global variable errno is set to indicate the error. ERRORS
The following error codes may be set in errno: [ENAMETOOLONG] The path component to be returned was larger than MAXPATHLEN. WARNINGS
The basename() function returns a pointer to internal static storage space that will be overwritten by subsequent calls. The function may modify the string pointed to by path. LEGACY SYNOPSIS
#include <libgen.h> char * basename(const char *path); In legacy mode, path will not be changed. SEE ALSO
basename(1), dirname(1), dirname(3), compat(5) STANDARDS
The basename() function conforms to X/Open Portability Guide Issue 4, Version 2 (``XPG4.2''). HISTORY
The basename() function first appeared in OpenBSD 2.2 and FreeBSD 4.2. AUTHORS
Todd C. Miller <Todd.Miller@courtesan.com> BSD
August 17, 1997 BSD
All times are GMT -4. The time now is 03:02 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy