I downloaded two files, they were both saved to the same filename and then I transferred them with scp to another computer.
Why didn't they become one when the second was saved?
Maybe they only look like they have the same name.
Try:
$ touch Stéphane Stéphane Stéphane\ Stéphane
$ ls -1
Stéphane
Stéphane
Stéphane
Stéphane
They look pretty much the same.
$ ls -1b
Stéphane
Stéphane
Stéphane
Stéphane\
Slightly better. The space character is flagged as \ (though not all ls implementations do that).
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
Now we're talking (all non-ASCII characters are rendered as the octal value of their byte constituents)
You could also do, and that works for any input:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
Here, the end of lines is marked with $ which makes it easier to spot the trailing space. However, that won't help spotting a file called Stéphane<newline>Stéphane
$ ls | perl -Mopen=locale -MUnicode::UCD=charinfo -lpe '
s/[^\41-\176]/"<".charinfo(ord$&)->{name}.">"/ge'
Ste<COMBINING ACUTE ACCENT>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane
St<ZERO WIDTH SPACE><LATIN SMALL LETTER E WITH ACUTE>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane<SPACE>
Makes it clearer what happened.
See also this other answer for more on the subject.
LC_ALL=C sed -n 1 do?
sed's l command displays the input in visually unambiguous form. With LC_ALL=C, we make sure it uses only ASCII characters for that (though at least with GNU sed, it is not necessary).
LC_ALL=C ls -b
ls | LC_ALL=C sed -n l really was a big time saver just now, thanks!
ls -laplease?ls -lb(orls -lab, if the name begins with.).dir1/fooanddir2/fooon machine X, thenscp'ed them todir42on machine Y, and they came out as separate files with the same name? Or you downloaded two files with the same name into the same directory (on machine X), and they came out as separate files with the same name?