$(< file ) and $( cat file )


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting $(< file ) and $( cat file )
# 1  
Old 02-02-2018
$(< file ) and $( cat file )

What is the difference between $(< filename ) and $( cat filename ) ? Smilie
Or should i ask ... are they equivalent ?

Last edited by ctsgnb; 02-02-2018 at 02:46 PM..
These 2 Users Gave Thanks to ctsgnb For This Post:
# 2  
Old 02-02-2018
I can't give you a quantitative answer, but cite man bash:
Quote:
The command substitution $(cat file) can be replaced by the equivalent but faster $(< file).
This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-02-2018
$(< filename ) - shell opens the file. $( cat filename ) - cat opens the file.

Create a simple script:-
Code:
#!/bin/ksh -xv

var1=$( cat file )
var2=$( < file )

and run strace to understand the difference:-
Code:
strace ./script.ksh 2> strace.out

This User Gave Thanks to Yoda For This Post:
# 4  
Old 02-02-2018
Run strace with -f (follow child processes) to see the full overhead.
This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 02-02-2018
-f was important to get the real picture!
# 6  
Old 02-02-2018
They are only equivalent in bash, ksh93 and zsh. $(< file) is faster than $(cat file), but the latter is POSIX compliant whereas the former is not.

Last edited by Scrutinizer; 02-03-2018 at 01:44 AM..
# 7  
Old 02-02-2018
Just for fun playing with subsequent args ... consider giving a try to:

Code:
# for i in $(seq 1 10) ; do echo $(< /dev/urandom tr -dc '[:alnum:],@#:!?+-' | head -c10) ; done
# for i in $(seq 1 10) ; do echo $(cat /dev/urandom -- tr -dc '[:alnum:],@#:!?+-' | head -c10) ; done
# for i in $(seq 1 10) ; do echo $(cat /dev/urandom | tr -dc '[:alnum:],@#:!?+-' | head -c10) ; done
# for i in $(seq 1 10) ; do echo $(< /dev/urandom | tr -dc '[:alnum:],@#:!?+-'  | head -c10) ; done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Ssh cat file output into a file on local computer

Hello, I'm on a remote computer by SSH. How can I get the output of "cat file" into a file on the local computer? I cannot use scp, because it's blocked. something like: ssh root@remote_maschine "cat /file" > /locale_machine/file :rolleyes: (2 Replies)
Discussion started by: borsti007
2 Replies

2. UNIX for Advanced & Expert Users

for i in `cat file` do

in bash: for i in `cat file` ; do echo $i done; how will i do this in perl ? (10 Replies)
Discussion started by: linuxgeek
10 Replies

3. UNIX for Advanced & Expert Users

cat can not open file

Hi All, I have stumbled upon very unique issue. In my script I am doing cat file and then greping and cutting so as to assign the value to variable. My file is, <mxc_tl_load_extractdata_prop.bsh> DB_USER=test_oper hostname=xxx FTP_USER=test1_operate MAIL_LIST=xxx@yyy.com... (1 Reply)
Discussion started by: paragd
1 Replies

4. Shell Programming and Scripting

Cat file

how to cat a file by ignoring first line and last line (1 Reply)
Discussion started by: thelakbe
1 Replies

5. Shell Programming and Scripting

split a line of a file and cat a file with another

Hi, I have two files one.txt laptop boy apple two.txt unix linux OS openS I want to split one.txt into one line each and concatenate it with the two.txt output files onea.txt laptop (4 Replies)
Discussion started by: avatar_007
4 Replies

6. Shell Programming and Scripting

Cat all yesterdays file into one file?

I am looking for a command to take files with a specific date and cat them all into big file. I know I can use commands to list all of the files from a certain date. But I want to do that and take those files and make on large files containing all of them. Any help would be great. This is being... (1 Reply)
Discussion started by: Jcheetwood
1 Replies

7. UNIX for Dummies Questions & Answers

How to cat file

I want to cat a file with only show the line contain '/bin/bash' but don't show the line contain 'load' (don't show if the line contain 'load' and '/bin/bash' together), how to type in the command? thk a lot! (2 Replies)
Discussion started by: zp523444
2 Replies

8. UNIX for Dummies Questions & Answers

Easiest way to cat out first 100 lines of a file into a different file?

Not sure how to do this exactly.. just want to take the first 100 lines of a file and cat it out into a second file. I know I can do a more on a file and > it into a different file, but how can I make it so only the first 100 lines get moved over? (1 Reply)
Discussion started by: LordJezo
1 Replies

9. Shell Programming and Scripting

cat file problem

Hi, I wnat to read a fiel line by line and store each line in a variabel, so I made a for loop: for i in `cat file` ; do #do sth. done; The problem is, that in the file, there are lines with only asterisks like this... (3 Replies)
Discussion started by: bensky
3 Replies

10. UNIX for Dummies Questions & Answers

cat and lp or pr printing of file

Can you use cat to send the first 25 lines of a file to the printer? I'm thinking I can pipe it with '|' but I'm not school to check printer output. With the 'nl' used, all lines are numbered on the print out, but how does one number only the blank lines? Thanks:) (1 Reply)
Discussion started by: bitwize
1 Replies
Login or Register to Ask a Question