How can I improve below alias?
I want to run less -F
command on latest updated log file of one binary (which creates logs with names which start with xtest*
) which is in logs directory.
I was able to create below alias in csh
, but I think I can improve this.
find $LOG/tr/`date +"%Y%m%d"` -name xtest* -print | xargs ls -rt | tail -1 | xargs less -F
linux shell-script find alias less
add a comment |
I want to run less -F
command on latest updated log file of one binary (which creates logs with names which start with xtest*
) which is in logs directory.
I was able to create below alias in csh
, but I think I can improve this.
find $LOG/tr/`date +"%Y%m%d"` -name xtest* -print | xargs ls -rt | tail -1 | xargs less -F
linux shell-script find alias less
You have tagged your question withcsh
. Are you using thecsh
shell?
– Kusalananda
Jul 19 '18 at 7:52
1
$ echo $0 -csh
so YES I am.
– BreakBadSP
Jul 19 '18 at 7:53
add a comment |
I want to run less -F
command on latest updated log file of one binary (which creates logs with names which start with xtest*
) which is in logs directory.
I was able to create below alias in csh
, but I think I can improve this.
find $LOG/tr/`date +"%Y%m%d"` -name xtest* -print | xargs ls -rt | tail -1 | xargs less -F
linux shell-script find alias less
I want to run less -F
command on latest updated log file of one binary (which creates logs with names which start with xtest*
) which is in logs directory.
I was able to create below alias in csh
, but I think I can improve this.
find $LOG/tr/`date +"%Y%m%d"` -name xtest* -print | xargs ls -rt | tail -1 | xargs less -F
linux shell-script find alias less
linux shell-script find alias less
edited 3 hours ago
Rui F Ribeiro
41.5k1483140
41.5k1483140
asked Jul 19 '18 at 7:46
BreakBadSPBreakBadSP
1084
1084
You have tagged your question withcsh
. Are you using thecsh
shell?
– Kusalananda
Jul 19 '18 at 7:52
1
$ echo $0 -csh
so YES I am.
– BreakBadSP
Jul 19 '18 at 7:53
add a comment |
You have tagged your question withcsh
. Are you using thecsh
shell?
– Kusalananda
Jul 19 '18 at 7:52
1
$ echo $0 -csh
so YES I am.
– BreakBadSP
Jul 19 '18 at 7:53
You have tagged your question with
csh
. Are you using the csh
shell?– Kusalananda
Jul 19 '18 at 7:52
You have tagged your question with
csh
. Are you using the csh
shell?– Kusalananda
Jul 19 '18 at 7:52
1
1
$ echo $0 -csh
so YES I am.– BreakBadSP
Jul 19 '18 at 7:53
$ echo $0 -csh
so YES I am.– BreakBadSP
Jul 19 '18 at 7:53
add a comment |
1 Answer
1
active
oldest
votes
Now that you are working in cshell then you would know that aliases are supposed to be defined in one line only. hence the alias that is shown overshooting the normal line length. That is cshell for you.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Tst%p" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Breaking it into chunks to show what it is doing:
find
command prints , null-separated filenames with the numeric timestamp alongwith the filename. Note that, the quotes in thedate
command have been taken away fordate
can run very well without them , plus having them would have made the quoting needlessly wieldy for the alias.- The null (
) separated duos (timestamp TAB filename) are then sorted starting from the first field in the reverse numeric fashion and ending in the second field. The
-z
option insort
command is to separate the input chunks around the null character rather than the default newline. - Once sorted in the proper order, we take out the topmost chunk, which would hold the filename with the latest timestamp by means of the
head -z -n 1
command. - Then the
cut
command takes over and strips the timestamp since it's job is done now and it is no longer needed. We use the-z
option to tackle the null separated input tocut
. The-f2
option shall throw thefilename +
to the next pipeline.
xargs -0
would be reading the filename separated by null and pass the filename toless -F
on it's commandline.
+1 Very nice-z
all the way through
– roaima
Jul 22 '18 at 21:38
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%2f457150%2fhow-can-i-improve-below-alias%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
Now that you are working in cshell then you would know that aliases are supposed to be defined in one line only. hence the alias that is shown overshooting the normal line length. That is cshell for you.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Tst%p" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Breaking it into chunks to show what it is doing:
find
command prints , null-separated filenames with the numeric timestamp alongwith the filename. Note that, the quotes in thedate
command have been taken away fordate
can run very well without them , plus having them would have made the quoting needlessly wieldy for the alias.- The null (
) separated duos (timestamp TAB filename) are then sorted starting from the first field in the reverse numeric fashion and ending in the second field. The
-z
option insort
command is to separate the input chunks around the null character rather than the default newline. - Once sorted in the proper order, we take out the topmost chunk, which would hold the filename with the latest timestamp by means of the
head -z -n 1
command. - Then the
cut
command takes over and strips the timestamp since it's job is done now and it is no longer needed. We use the-z
option to tackle the null separated input tocut
. The-f2
option shall throw thefilename +
to the next pipeline.
xargs -0
would be reading the filename separated by null and pass the filename toless -F
on it's commandline.
+1 Very nice-z
all the way through
– roaima
Jul 22 '18 at 21:38
add a comment |
Now that you are working in cshell then you would know that aliases are supposed to be defined in one line only. hence the alias that is shown overshooting the normal line length. That is cshell for you.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Tst%p" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Breaking it into chunks to show what it is doing:
find
command prints , null-separated filenames with the numeric timestamp alongwith the filename. Note that, the quotes in thedate
command have been taken away fordate
can run very well without them , plus having them would have made the quoting needlessly wieldy for the alias.- The null (
) separated duos (timestamp TAB filename) are then sorted starting from the first field in the reverse numeric fashion and ending in the second field. The
-z
option insort
command is to separate the input chunks around the null character rather than the default newline. - Once sorted in the proper order, we take out the topmost chunk, which would hold the filename with the latest timestamp by means of the
head -z -n 1
command. - Then the
cut
command takes over and strips the timestamp since it's job is done now and it is no longer needed. We use the-z
option to tackle the null separated input tocut
. The-f2
option shall throw thefilename +
to the next pipeline.
xargs -0
would be reading the filename separated by null and pass the filename toless -F
on it's commandline.
+1 Very nice-z
all the way through
– roaima
Jul 22 '18 at 21:38
add a comment |
Now that you are working in cshell then you would know that aliases are supposed to be defined in one line only. hence the alias that is shown overshooting the normal line length. That is cshell for you.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Tst%p" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Breaking it into chunks to show what it is doing:
find
command prints , null-separated filenames with the numeric timestamp alongwith the filename. Note that, the quotes in thedate
command have been taken away fordate
can run very well without them , plus having them would have made the quoting needlessly wieldy for the alias.- The null (
) separated duos (timestamp TAB filename) are then sorted starting from the first field in the reverse numeric fashion and ending in the second field. The
-z
option insort
command is to separate the input chunks around the null character rather than the default newline. - Once sorted in the proper order, we take out the topmost chunk, which would hold the filename with the latest timestamp by means of the
head -z -n 1
command. - Then the
cut
command takes over and strips the timestamp since it's job is done now and it is no longer needed. We use the-z
option to tackle the null separated input tocut
. The-f2
option shall throw thefilename +
to the next pipeline.
xargs -0
would be reading the filename separated by null and pass the filename toless -F
on it's commandline.
Now that you are working in cshell then you would know that aliases are supposed to be defined in one line only. hence the alias that is shown overshooting the normal line length. That is cshell for you.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Tst%p" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Breaking it into chunks to show what it is doing:
find
command prints , null-separated filenames with the numeric timestamp alongwith the filename. Note that, the quotes in thedate
command have been taken away fordate
can run very well without them , plus having them would have made the quoting needlessly wieldy for the alias.- The null (
) separated duos (timestamp TAB filename) are then sorted starting from the first field in the reverse numeric fashion and ending in the second field. The
-z
option insort
command is to separate the input chunks around the null character rather than the default newline. - Once sorted in the proper order, we take out the topmost chunk, which would hold the filename with the latest timestamp by means of the
head -z -n 1
command. - Then the
cut
command takes over and strips the timestamp since it's job is done now and it is no longer needed. We use the-z
option to tackle the null separated input tocut
. The-f2
option shall throw thefilename +
to the next pipeline.
xargs -0
would be reading the filename separated by null and pass the filename toless -F
on it's commandline.
answered Jul 22 '18 at 20:48
Rakesh SharmaRakesh Sharma
63513
63513
+1 Very nice-z
all the way through
– roaima
Jul 22 '18 at 21:38
add a comment |
+1 Very nice-z
all the way through
– roaima
Jul 22 '18 at 21:38
+1 Very nice
-z
all the way through– roaima
Jul 22 '18 at 21:38
+1 Very nice
-z
all the way through– roaima
Jul 22 '18 at 21:38
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%2f457150%2fhow-can-i-improve-below-alias%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
You have tagged your question with
csh
. Are you using thecsh
shell?– Kusalananda
Jul 19 '18 at 7:52
1
$ echo $0 -csh
so YES I am.– BreakBadSP
Jul 19 '18 at 7:53