Tag Info

Hot answers tagged

90

In appearance, dd is a tool from an IBM operating system that's retained its foreign appearance (its parameter passing), which performs some very rarely-used functions (such as EBCDIC to ASCII conversions or endianness reversal… not a common need nowadays). I used to think that dd was faster for copying large blocks of data on the same disk (due to more ...


56

Although both commands allow you to view the content of a file, their original purposes are quite different. less extends the capabilities of more. The latter was created to view the content of a file one screenful at a time. less adds features such as backward movements and better memory management (no need to read the entire file before being able to see ...


32

You are looking for fold text.txt -w 80 -s -w tells the width of the text, where 80 is standard. -s tells to break at spaces, and not in words. That's the way it's called on debian/ubuntu there are other systems, which need "-c" instead of "-w".


31

#!/bin/bash if [[ "$#" -ne 1 ]]; then echo "Usage: $0 [INPUT FILE]" 1>&2 exit 1 fi cat "$1"


29

This sounds like a job for paste: paste -d ' ' a.dat 1.dat Output: a b 1 2 c d 3 4


29

Whether such output can be exploited depends on the terminal program, and what that terminal does depending on escape codes that are being sent. I am not aware of terminal programs having such exploitable features, and the only problem now would be if there is an unknown buffer overflow or something like that, that could be exploited. With some older ...


28

Passing the file through pygmentize-f terminal will attempt to detect the type from the filename and highlight it appropriately.


28

Most terminal emulators will send back some response, if they receive certain escape sequences (have a look at the xterm control sequences documentation). E.g., you can send \e[0c to a VT100-like emulator and it will send back the device attributes, something like \e[?1;2c (This is probably what Keith observed.) But these answers are not arbitrary strings. ...


27

The "definitive" answer is of course brought to you by The Useless Use of cat Award. The purpose of cat is to concatenate (or "catenate") files. If it's only one file, concatenating it with nothing at all is a waste of time, and costs you a process. Instantiating cat just so your code reads differently makes for just one more process and one more set ...


27

I suggest the sed solution, but for the sake of completeness, awk 'NR >= 57890000 && NR <= 57890010' To cut out after the last line: awk 'NR < 57890000 { next } { print } NR == 57890010 { exit } Speed test: 100,000,000-line file generated by seq 100000000 > test.in Reading lines 50,000,000-50,000,010 Tests in no particular ...


22

Just ask cat to concatenate that file with the stdin: cat cmd - | interactive


22

Try it with -f or --force: zcat -f -- * man zcat for details. Also: so that I can pipe the output to grep for example You have zgrep for that: zgrep -- PATTERN *


21

You cannot tell cat to use multiple standard out that way, the last redirection takes precedence so cat file1.txt >> file2.txt >> file1.txt is equivalent to >> file2.txt ; cat file1.txt >> file1.txt which obviously quickly fills the file system, given the fact the source file being the destination too grows indefinitely as long ...


20

It may be useful to explain how files work at the lowest level: A file is a stream of bytes, zero or more in length. A byte is 8 bits. Since there are 256 combinations of 8 bits, that means a byte is any number from 0 to 255. So every file is, at its lowest level, a big hunk of numbers ranging from 0 to 255. It is completely up to programs and users to ...


20

You can use a while loop with process substitution: while read -r line do echo "$line" done < <(jobs) To read a multiline variable, a simple way is: printf %s "$var" | while IFS= read -r line do echo "$line" done Also, please don't call your variable jobs because that is a shell command and may cause confusion.


20

You can use: sed -e '/^;/d' php.ini


20

Maybe 'less -F file_to_read' is the option : it exits less if the window is sufficient to display all the file, and wait on the pager if it is not the case


19

zless It seems a pity about zcat, as libz has an API that supports reading from both compressed and uncompressed files transparently. But the manpage does say that zcat is equivalent to gunzip -c.


17

I usually use cat when I need to type a command based on something in the file. cat is more convenient since you can see the file (if it's small) while you have access to the shell prompt. It also allows for pipe lining.


17

cat /dev/null > file.txt is a useless use of cat. Basically cat /dev/null simply results in cat outputting nothing. Yes it works, but it's frowned upon by many because it results in invoking an external process that is not necessary. It's one of those things that is common simply because it's common. Using just > file.txt will work on most shells, ...


17

Just add the -f option. $ echo foo | tee file | gzip > file.gz $ zcat file file.gz gzip: file: not in gzip format foo $ zcat -f file file.gz foo foo (use gzip -dcf instead of zcat -f if your zcat is not the GNU (or GNU-emulated like in modern BSDs) one and only knows about .Z files).


16

The first command here emulates the formatting you see in vim. It intelligently expands tabs to the equivalent number of spaces, based on a tab-STOP (ts) setting of every 4 columns. printf "ab\tcd\tde\n" |expand -t4 Output ab cd de To keep the tabs as tabs and have the tab STOP positions set to every 4th column, then you must change the way ...


16

Yes, it is possible. But not all formats support it. ffmpeg FAQ: A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow to join video files by merely concatenating them. When converting to RAW formats you also have a high chance that the files can be concatenated. ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg ffmpeg -i input2.avi -qscale:v 1 ...


16

@rush is right about using head + tail being more efficient for large files, but for small files (< 20 lines), some lines may be output twice. { head; tail;} < /path/to/file would be equally efficient, but wouldn't have the problem above.


16

There are multiple ways to do this. The simplest is probably this: cat <<EOF | sh touch somefile echo foo > somefile EOF Another, which is nicer syntax in my opinion: ( cat <<EOF touch somefile echo foo > somefile EOF ) | sh This works as well, but without the subshell: { cat <<EOF touch somefile echo foo > somefile EOF } | ...


16

Allocating the space for the output file first may improve the overall speed as the system won't have to update the allocation for every write. For instance, if on Linux: size=$({ find . -maxdepth 1 -type f -name 'input_file*' -printf '%s+'; echo 0;} | bc) fallocate -l "$size" out && find . -maxdepth 1 -type f -name 'input_file*' -print0 | sort ...


15

I usually use the column program for this, it's in a package called bsdmainutils on Debian: column -t foo Output: case elems meshing nlsys uniform 2350 0.076662 2.78 non-conformal 348 0.013332 0.55 scale 318 0.013333 0.44 smarter 504 0.016666 0.64 submodel 360 .009999 0.40 unstruct-quad 640 ...


15

You are right in that echo & company don't seem to handle binary that well. I suspect that the null characters break the stream all too early. You can convert picture information in some ASCII based format. For instance, this is with base64: $ pic=`base64 pic.jpeg` $ echo $pic | base64 --decode > pic2.jpeg $ diff pic* $ echo $? 0


15

Nope, cat is surely the best way to do this. Why use python when there is a program already written in C for this purpose? However, you might however want to consider using xargs in case the command line length exceeds ARG_MAX and you need more than one cat. Using GNU tools, this is equivalent to what you already have: find . -maxdepth 1 -type f -name ...


14

The dd command includes LOTS of options that cat is not able to accommodate. Perhaps in your usage cases cat is a workable substitute, but it is not a dd replacement. One example would be using dd to copy part of something but not the whole thing. Perhaps you want to rip out some of the bits from the middle of an iso image or the partition table from a hard ...



Only top voted, non community-wiki answers of a minimum length are eligible