Shellscript `grep` execution not working as in the interactive shell
up vote
0
down vote
favorite
Having to deal with an environment where ack
and so on is not available nor installable, this command try to limit only relevant files to find string through the C++ project :
grep pattern --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
This does the job. Now to bring a bit more commodity to that, the goal is to put that into a shell script. Let's say it's named wrapped_grep
. Here is the content of wrapped_grep
:
#!/usr/bin/env bash
shopt -s extglob # enable advanced pattern matching
grep $1 --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
But trying to launch wrapped_grep pattern
don't provide any output, even when the equivalent direct grep query does find matches as expected.
What is missing in this script to provide the same result as the direct grep invocation?
bash shell-script grep output
add a comment |
up vote
0
down vote
favorite
Having to deal with an environment where ack
and so on is not available nor installable, this command try to limit only relevant files to find string through the C++ project :
grep pattern --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
This does the job. Now to bring a bit more commodity to that, the goal is to put that into a shell script. Let's say it's named wrapped_grep
. Here is the content of wrapped_grep
:
#!/usr/bin/env bash
shopt -s extglob # enable advanced pattern matching
grep $1 --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
But trying to launch wrapped_grep pattern
don't provide any output, even when the equivalent direct grep query does find matches as expected.
What is missing in this script to provide the same result as the direct grep invocation?
bash shell-script grep output
Which shell are you using when entering the command directly?
– nohillside
yesterday
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
@psychoslave done - please see below
– steeldriver
yesterday
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Having to deal with an environment where ack
and so on is not available nor installable, this command try to limit only relevant files to find string through the C++ project :
grep pattern --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
This does the job. Now to bring a bit more commodity to that, the goal is to put that into a shell script. Let's say it's named wrapped_grep
. Here is the content of wrapped_grep
:
#!/usr/bin/env bash
shopt -s extglob # enable advanced pattern matching
grep $1 --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
But trying to launch wrapped_grep pattern
don't provide any output, even when the equivalent direct grep query does find matches as expected.
What is missing in this script to provide the same result as the direct grep invocation?
bash shell-script grep output
Having to deal with an environment where ack
and so on is not available nor installable, this command try to limit only relevant files to find string through the C++ project :
grep pattern --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
This does the job. Now to bring a bit more commodity to that, the goal is to put that into a shell script. Let's say it's named wrapped_grep
. Here is the content of wrapped_grep
:
#!/usr/bin/env bash
shopt -s extglob # enable advanced pattern matching
grep $1 --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
But trying to launch wrapped_grep pattern
don't provide any output, even when the equivalent direct grep query does find matches as expected.
What is missing in this script to provide the same result as the direct grep invocation?
bash shell-script grep output
bash shell-script grep output
asked yesterday
psychoslave
1033
1033
Which shell are you using when entering the command directly?
– nohillside
yesterday
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
@psychoslave done - please see below
– steeldriver
yesterday
add a comment |
Which shell are you using when entering the command directly?
– nohillside
yesterday
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
@psychoslave done - please see below
– steeldriver
yesterday
Which shell are you using when entering the command directly?
– nohillside
yesterday
Which shell are you using when entering the command directly?
– nohillside
yesterday
2
2
Perhaps you need to set shell option
globstar
as well as extglob
?– steeldriver
yesterday
Perhaps you need to set shell option
globstar
as well as extglob
?– steeldriver
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
@psychoslave done - please see below
– steeldriver
yesterday
@psychoslave done - please see below
– steeldriver
yesterday
add a comment |
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
The extglob
shell option enables the *([chCH]|cc|cxx|[ch]pp|py)
part of your expression, but the **/
part requires the globstar
option
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
So you likely need
shopt -s extglob globstar
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',
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%2f487728%2fshellscript-grep-execution-not-working-as-in-the-interactive-shell%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
The extglob
shell option enables the *([chCH]|cc|cxx|[ch]pp|py)
part of your expression, but the **/
part requires the globstar
option
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
So you likely need
shopt -s extglob globstar
add a comment |
up vote
3
down vote
accepted
The extglob
shell option enables the *([chCH]|cc|cxx|[ch]pp|py)
part of your expression, but the **/
part requires the globstar
option
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
So you likely need
shopt -s extglob globstar
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
The extglob
shell option enables the *([chCH]|cc|cxx|[ch]pp|py)
part of your expression, but the **/
part requires the globstar
option
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
So you likely need
shopt -s extglob globstar
The extglob
shell option enables the *([chCH]|cc|cxx|[ch]pp|py)
part of your expression, but the **/
part requires the globstar
option
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
So you likely need
shopt -s extglob globstar
answered yesterday
steeldriver
34.1k34983
34.1k34983
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f487728%2fshellscript-grep-execution-not-working-as-in-the-interactive-shell%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
Which shell are you using when entering the command directly?
– nohillside
yesterday
2
Perhaps you need to set shell option
globstar
as well asextglob
?– steeldriver
yesterday
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
yesterday
@psychoslave done - please see below
– steeldriver
yesterday