What is wrong with my use of “find -print0”?Why does unlink(1) support only one file?Why does ln -s...
How do I narratively explain how in-game circumstances do not mechanically allow a PC to instantly kill an NPC?
In the Lost in Space intro why was Dr. Smith actor listed as a special guest star?
Need help now with power steering
How do I add a strong "onion flavor" to the biryani (in restaurant style)?
What does @ mean in a hostname in DNS configuration?
Does Plato's "Ring of Gyges" have a corrupting influence on its wearer?
What is an efficient way to digitize a family photo collection?
Why do single electrical receptacles exist?
How can guns be countered by melee combat without raw-ability or exceptional explanations?
Is layered encryption more secure than long passwords?
Why does a single AND gate need 60 transistors?
Can a planet be tidally unlocked?
How do I make my single-minded character more interested in the main story?
Is there a way to pause a running process on Linux systems and resume later?
Why don't you get burned by the wood benches in a sauna?
What does "south of due west" mean?
How do I avoid the "chosen hero" feeling?
Crack the bank account's password!
Create a line break in a subscript-position term
Is Screenshot Time-tracking Common?
How can I handle players killing my NPC outside of combat?
Is it possible to narrate a novel in a faux-historical style without alienating the reader?
Have any astronauts or cosmonauts died in space?
Was Opportunity's last message to Earth "My battery is low and it's getting dark"?
What is wrong with my use of “find -print0”?
Why does unlink(1) support only one file?Why does ln -s accept a single argumentWhy does a '.' work in chown?Why does “touch -a” also set the ctime?Why does after move I can get sync to work but not after cp -r *?Why does 'rmdir -p --ignore-fail-on-non-empty' fail when encountering $HOME?Why do df and df -h show different value? How does df -h perform calculation?Why does GNU Core Utilities stat (including du and ls) report the following sizes (ext4 in GNU/Linux)?
I'm confused by this experiment (in Bash):
$ mkdir 'foon'
$ find . -print0 | od -c
0000000 . . / f o o n
0000012
As you can see, "find" is correctly delimiting the output with null characters, but it escapes the newline in the directory name as "foon" with a backslash "n". Why is it doing this? I told it "-print0" which says "This allows file names that contain newlines ... to be correctly interpreted by programs that process the find output." The escaping should not be necessary, since "" is the delimiter, not "n".
coreutils
add a comment |
I'm confused by this experiment (in Bash):
$ mkdir 'foon'
$ find . -print0 | od -c
0000000 . . / f o o n
0000012
As you can see, "find" is correctly delimiting the output with null characters, but it escapes the newline in the directory name as "foon" with a backslash "n". Why is it doing this? I told it "-print0" which says "This allows file names that contain newlines ... to be correctly interpreted by programs that process the find output." The escaping should not be necessary, since "" is the delimiter, not "n".
coreutils
1
You made a directory called literallyfoon
, with a backslash in its name.
– Michael Homer
1 hour ago
2
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago
add a comment |
I'm confused by this experiment (in Bash):
$ mkdir 'foon'
$ find . -print0 | od -c
0000000 . . / f o o n
0000012
As you can see, "find" is correctly delimiting the output with null characters, but it escapes the newline in the directory name as "foon" with a backslash "n". Why is it doing this? I told it "-print0" which says "This allows file names that contain newlines ... to be correctly interpreted by programs that process the find output." The escaping should not be necessary, since "" is the delimiter, not "n".
coreutils
I'm confused by this experiment (in Bash):
$ mkdir 'foon'
$ find . -print0 | od -c
0000000 . . / f o o n
0000012
As you can see, "find" is correctly delimiting the output with null characters, but it escapes the newline in the directory name as "foon" with a backslash "n". Why is it doing this? I told it "-print0" which says "This allows file names that contain newlines ... to be correctly interpreted by programs that process the find output." The escaping should not be necessary, since "" is the delimiter, not "n".
coreutils
coreutils
edited 18 mins ago
Metamorphic
asked 1 hour ago
MetamorphicMetamorphic
27819
27819
1
You made a directory called literallyfoon
, with a backslash in its name.
– Michael Homer
1 hour ago
2
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago
add a comment |
1
You made a directory called literallyfoon
, with a backslash in its name.
– Michael Homer
1 hour ago
2
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago
1
1
You made a directory called literally
foon
, with a backslash in its name.– Michael Homer
1 hour ago
You made a directory called literally
foon
, with a backslash in its name.– Michael Homer
1 hour ago
2
2
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
The problem is not in find
, but in how you're creating this directory. The single quoted string 'foon'
is actually a 5-character string, of which the last two are a backslash and a lowercase "n".
Double-quoting it doesn't help either, since double-quoted strings in shell use backslash as an escape character, but don't really interpret any of the C-style backslash sequences.
In a shell such as bash or zsh, etc. (but not dash from Debian/Ubuntu), you can use $'...'
, which interprets those sequences:
$ mkdir $'foon'
(See bash's documentation for this feature, called "ANSI C Quoting").
Another option, that should work in any shell compatible with bourne shell is to insert an actual newline:
$ mkdir 'foo
'
That's an actual Return at the end of the first line, only closing the single quote on the second line.
add a comment |
Let's make a directory named foo
plus a newline:
$ mkdir $'foon'
Now, let's use find:
$ find . -print0 | od -c
0000000 . . / f o o n
0000011
n
is not escaped.
The issue is that mkdir 'foon'
is the name is interpreted as foo
followed by followed by
n
. We can verify that with:
$ printf '%s' 'foon' | od -c
0000000 f o o n
0000005
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f502460%2fwhat-is-wrong-with-my-use-of-find-print0%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The problem is not in find
, but in how you're creating this directory. The single quoted string 'foon'
is actually a 5-character string, of which the last two are a backslash and a lowercase "n".
Double-quoting it doesn't help either, since double-quoted strings in shell use backslash as an escape character, but don't really interpret any of the C-style backslash sequences.
In a shell such as bash or zsh, etc. (but not dash from Debian/Ubuntu), you can use $'...'
, which interprets those sequences:
$ mkdir $'foon'
(See bash's documentation for this feature, called "ANSI C Quoting").
Another option, that should work in any shell compatible with bourne shell is to insert an actual newline:
$ mkdir 'foo
'
That's an actual Return at the end of the first line, only closing the single quote on the second line.
add a comment |
The problem is not in find
, but in how you're creating this directory. The single quoted string 'foon'
is actually a 5-character string, of which the last two are a backslash and a lowercase "n".
Double-quoting it doesn't help either, since double-quoted strings in shell use backslash as an escape character, but don't really interpret any of the C-style backslash sequences.
In a shell such as bash or zsh, etc. (but not dash from Debian/Ubuntu), you can use $'...'
, which interprets those sequences:
$ mkdir $'foon'
(See bash's documentation for this feature, called "ANSI C Quoting").
Another option, that should work in any shell compatible with bourne shell is to insert an actual newline:
$ mkdir 'foo
'
That's an actual Return at the end of the first line, only closing the single quote on the second line.
add a comment |
The problem is not in find
, but in how you're creating this directory. The single quoted string 'foon'
is actually a 5-character string, of which the last two are a backslash and a lowercase "n".
Double-quoting it doesn't help either, since double-quoted strings in shell use backslash as an escape character, but don't really interpret any of the C-style backslash sequences.
In a shell such as bash or zsh, etc. (but not dash from Debian/Ubuntu), you can use $'...'
, which interprets those sequences:
$ mkdir $'foon'
(See bash's documentation for this feature, called "ANSI C Quoting").
Another option, that should work in any shell compatible with bourne shell is to insert an actual newline:
$ mkdir 'foo
'
That's an actual Return at the end of the first line, only closing the single quote on the second line.
The problem is not in find
, but in how you're creating this directory. The single quoted string 'foon'
is actually a 5-character string, of which the last two are a backslash and a lowercase "n".
Double-quoting it doesn't help either, since double-quoted strings in shell use backslash as an escape character, but don't really interpret any of the C-style backslash sequences.
In a shell such as bash or zsh, etc. (but not dash from Debian/Ubuntu), you can use $'...'
, which interprets those sequences:
$ mkdir $'foon'
(See bash's documentation for this feature, called "ANSI C Quoting").
Another option, that should work in any shell compatible with bourne shell is to insert an actual newline:
$ mkdir 'foo
'
That's an actual Return at the end of the first line, only closing the single quote on the second line.
edited 1 hour ago
answered 1 hour ago
filbrandenfilbranden
8,76921241
8,76921241
add a comment |
add a comment |
Let's make a directory named foo
plus a newline:
$ mkdir $'foon'
Now, let's use find:
$ find . -print0 | od -c
0000000 . . / f o o n
0000011
n
is not escaped.
The issue is that mkdir 'foon'
is the name is interpreted as foo
followed by followed by
n
. We can verify that with:
$ printf '%s' 'foon' | od -c
0000000 f o o n
0000005
add a comment |
Let's make a directory named foo
plus a newline:
$ mkdir $'foon'
Now, let's use find:
$ find . -print0 | od -c
0000000 . . / f o o n
0000011
n
is not escaped.
The issue is that mkdir 'foon'
is the name is interpreted as foo
followed by followed by
n
. We can verify that with:
$ printf '%s' 'foon' | od -c
0000000 f o o n
0000005
add a comment |
Let's make a directory named foo
plus a newline:
$ mkdir $'foon'
Now, let's use find:
$ find . -print0 | od -c
0000000 . . / f o o n
0000011
n
is not escaped.
The issue is that mkdir 'foon'
is the name is interpreted as foo
followed by followed by
n
. We can verify that with:
$ printf '%s' 'foon' | od -c
0000000 f o o n
0000005
Let's make a directory named foo
plus a newline:
$ mkdir $'foon'
Now, let's use find:
$ find . -print0 | od -c
0000000 . . / f o o n
0000011
n
is not escaped.
The issue is that mkdir 'foon'
is the name is interpreted as foo
followed by followed by
n
. We can verify that with:
$ printf '%s' 'foon' | od -c
0000000 f o o n
0000005
edited 1 hour ago
answered 1 hour ago
John1024John1024
47k5110125
47k5110125
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f502460%2fwhat-is-wrong-with-my-use-of-find-print0%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
You made a directory called literally
foon
, with a backslash in its name.– Michael Homer
1 hour ago
2
Soo ... embarrassing .... but learned something from the answers, thank you all.
– Metamorphic
1 hour ago