You can use sleep
and clear
commands in your script as following:
for word in $(< read)
do
echo "$word"
sleep 1
clear
done
Explanation:
The sleep
command make delay for a specified amount of time (in seconds). With sleep 1
delay would be for 1 second. You can change for more time delay by incrementing the second parameter or for delaying less than 1 second divide it to low units; Like sleep .1
for 1/10 second delay or sleep .001
for 1/1000 second delay and etc.
The clear
command clear the terminal screen.
Even better you can do this through below awk
command:
awk '{i=1; while(i<=NF){ print $((i++)); system("sleep 1; clear") }}' read
Explanation:
In awk
, the NF
specifies the total number of fields in the current input record/line, so by using a variable as a counter (i
) and looping over it, we are printing all of them from 1st position to the end of them (NF
). Then by using the system("sleep 1; clear")
part, we are telling to awk
to calling the system commands to sleeping for 1 second and clearing the screen.
In above we are displaying the input file as word by word. If you are going to display it line by line add IFS=$'\n'
in the script like:
IFS=$'\n'
for word in $(< read)
do
echo "$word"
sleep 1
clear
done
And change the awk
command like:
awk '{ $0; system("sleep 1; clear") }1' read
$0
specifies the current line. and the 1
on end enables the default awk
's print command.
The multiple quote from the echo '
is complicating the thing.
You can just use:
for f in *; do stat -- "$f"; done
But also
stat -- *
...and if you want to collect the files and then apply the command (why?) you can go with (but be careful with file containing new lines...(1))
for f in *; do echo "$f"; done | xargs stat --
...and if you want hidden files too, just use * .*
as a pattern, but then remember that .
and ..
will be in the set.
As an aside, you shouldn't parse ls
output.
(1) but if you have file names with newlines, you somewhat deserve it... ;-)
Best Answer
for
loop splits when it sees any whitespace like space, tab, or newline. So, you should use IFS (Internal Field Separator):