Shellscript `grep` execution not working as in the interactive shell
Clash Royale CLAN TAG#URR8PPP
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 |
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
Dec 13 at 10:20
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
Dec 13 at 10:35
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37
add a comment |
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 Dec 13 at 10:10
psychoslave
1033
1033
Which shell are you using when entering the command directly?
– nohillside
Dec 13 at 10:20
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
Dec 13 at 10:35
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37
add a comment |
Which shell are you using when entering the command directly?
– nohillside
Dec 13 at 10:20
2
Perhaps you need to set shell optionglobstar
as well asextglob
?
– steeldriver
Dec 13 at 10:35
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37
Which shell are you using when entering the command directly?
– nohillside
Dec 13 at 10:20
Which shell are you using when entering the command directly?
– nohillside
Dec 13 at 10:20
2
2
Perhaps you need to set shell option
globstar
as well as extglob
?– steeldriver
Dec 13 at 10:35
Perhaps you need to set shell option
globstar
as well as extglob
?– steeldriver
Dec 13 at 10:35
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37
add a comment |
1 Answer
1
active
oldest
votes
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',
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%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
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 |
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 |
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 Dec 13 at 13:36
steeldriver
34.2k35083
34.2k35083
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
Dec 13 at 10:20
2
Perhaps you need to set shell option
globstar
as well asextglob
?– steeldriver
Dec 13 at 10:35
That was the globstar that was missing indeed, thank you steeldriver, please turn your comment into an answer so I can validate it. :)
– psychoslave
Dec 13 at 13:20
@psychoslave done - please see below
– steeldriver
Dec 13 at 13:37