Holding cursor position on one line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Holding cursor position on one line
# 1  
Old 11-28-2018
Holding cursor position on one line

Hi there.

It's easier to explain this with a pseudo code, I hope this makes sense:

Code:
var1=hello
echo $var1

some kind of loop
  echo loop counter
done

How do I hold the cursor position immediately behind the last output so I'd get something like:
hello123456789

DOS used to use "," as a tab between printed data and ";" held the cursor in place without any carriage return. Is there a similar thing in Bash?

Thanks again.
# 2  
Old 11-28-2018
echo -n doesn't add a newline:

Code:
var1=hello
echo -n $var1

for (( i=1; i<=9; i++ )) ; do echo -n $i; done

# 3  
Old 11-28-2018
By definition, echo appends a <newline> character to its input arguments in the output it produces. Try using printf instead of echo:
Code:
var1=hello
printf '%s' "$var1"

cnt=1
some kind of loop
  printf '%d' "$cnt"
  cnt=$((cnt + 1))
done

Some non-standard implementations of echo provide an option to avoid printing the terminating <newline>, but printf as shown above should work portably no matter what operating system or shell you're using.

Note that showing us your actual code instead of pseudo-code and telling us what operating system and shell you're using is always much clearer than trying to guess at how pseudo-code might relate to actual code.
# 4  
Old 11-28-2018
I usually do something like this:

Code:
SPIN=".oOo."

S=0

while true
do
        printf "Doing something [%s]\r" "${SPIN:$S:1}"
        S=$(( (S+1) % ${#SPIN}))
        sleep 0.1
done

Note the \r, that's a carriage return, it returns the cursor to the beginning of the line without moving it down one line.
These 2 Users Gave Thanks to Corona688 For This Post:
# 5  
Old 11-29-2018
Another way might be to use tput cup row column to set the cursor position on the screen, but you have to know what shape screen you have and it's usually better to clear it before you begin so you know that there is nothing to overwrite.

Yet another an alternate could be to just output a dot or other character without the new-line each time round the loop with printf


How much output would you expect, or iterations round your loop? Are you watching a file grow, for instance?

You could:-
Code:
#!/bin/bash

filename=/path/to/bigfile

[ ! -f $filename ] && touch $filename             # Make sure it exists
while true
do
   printf "\r$filename=$(stat -c %s $filename) bytes"
   sleep 1
done

progress_pid=$!

# Do whatever to generate the large file now, e.g. a tar or wget etc.

kill $watcher_pid
echo ; echo "Watcher process ended."

This will show the file growing until your script carries on and terminates the watcher.



Does any of these help? it really depends on what you eventually want to do. If you can put it in context, we might refine our suggestions.



Kind regards,
Robin
# 6  
Old 11-29-2018
On VT102-compatible terminals / emulators, you might also want to consider cursor controls - see man console_codes.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Control cursor position also at bottom of window

I have a slight problem controlling the cursor position in a Bash terminal window. I have a function ask a question and then wait for an answer which is either 'y' or 'n' or a carriage return. Whenever the user enters anything else it just erases the answer and waits for the next one. However, the... (23 Replies)
Discussion started by: Ralph
23 Replies

2. Shell Programming and Scripting

Getting the cursor position

I need to get the cursor position, and put it inside a variable. Problem is, i don't have the tput command, or ncurses. Apparently I was supposed to try the following: echo -e '\E But I don't get a value or anything. Please help. (3 Replies)
Discussion started by: tinman47
3 Replies

3. Shell Programming and Scripting

ksh - moving cursor position

hi all, am trying to modify a ksh script to group server names together depending on the cluster they sit in. currently the script does a find . -name '*.pid' to find all running servers and prints out their pids and names. current output looks something like this : serverA ... (1 Reply)
Discussion started by: cesarNZ
1 Replies

4. UNIX for Dummies Questions & Answers

Cursor position

Is there a way of finding the current cursor position (line & column) within AIX (4 Replies)
Discussion started by: gefa
4 Replies

5. UNIX for Dummies Questions & Answers

Vi editor : Knowing the current cursor position

Hi All, In VI editor, to know the line number at any instant we use ctrl+g Similarly, to know the current coulmn number what shall we use?? If not direct key controls like ctrl+g, Is there any comands that could be executed in colon or ex mode of VI to know the current column position???... (1 Reply)
Discussion started by: ramkrix
1 Replies

6. UNIX and Linux Applications

read position mouse cursor

Hi to all! I'm a teacher of maths and physics in an italian high school in Milan, Italy. I need a simple program that read the position of mouse cursor in function of time and write the coordinates in a text file. The time resolution have to be something like 1/10 sec or better (I have to know... (2 Replies)
Discussion started by: chris75
2 Replies

7. Programming

get terminal width and cursor position

I want to get the screen width and cursor positions. When I used curses, all the screen content was cleared. So Can I use curses to get the screen size without clearing anything in the window? Or is there any other alternative??? I can use only C or C++. (0 Replies)
Discussion started by: Sreejesh.S
0 Replies

8. HP-UX

Command to know the terminal cursor position

Dear all, How can i get the current cursor position..is thr any command to find the same? Thanks in Advance Aneesh (3 Replies)
Discussion started by: aneesha
3 Replies

9. Programming

Cursor Global Position

Hello all, How can i get the global position of the cursor? (i'm using c language, and suse 10.1 linux) Thanks. (3 Replies)
Discussion started by: boogy
3 Replies

10. Shell Programming and Scripting

Get the cursor position

Hello, Is there a way to get the current cursor position? I know "tput sc" saves it. Is there a way to find out the value saved? Thanks. (0 Replies)
Discussion started by: bestbuyernc
0 Replies
Login or Register to Ask a Question