How can I improve below alias?












0















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









share|improve this question

























  • You have tagged your question with csh. Are you using the csh shell?

    – Kusalananda
    Jul 19 '18 at 7:52






  • 1





    $ echo $0 -csh so YES I am.

    – BreakBadSP
    Jul 19 '18 at 7:53


















0















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









share|improve this question

























  • You have tagged your question with csh. Are you using the csh shell?

    – Kusalananda
    Jul 19 '18 at 7:52






  • 1





    $ echo $0 -csh so YES I am.

    – BreakBadSP
    Jul 19 '18 at 7:53
















0












0








0








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









share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 with csh. Are you using the csh 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






  • 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












1 Answer
1






active

oldest

votes


















1














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 the date command have been taken away for date 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 in sort 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 to cut. The -f2 option shall throw the filename + to the next pipeline.


  • xargs -0 would be reading the filename separated by null and pass the filename to less -F on it's commandline.






share|improve this answer
























  • +1 Very nice -z all the way through

    – roaima
    Jul 22 '18 at 21:38











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
});


}
});














draft saved

draft discarded


















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









1














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 the date command have been taken away for date 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 in sort 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 to cut. The -f2 option shall throw the filename + to the next pipeline.


  • xargs -0 would be reading the filename separated by null and pass the filename to less -F on it's commandline.






share|improve this answer
























  • +1 Very nice -z all the way through

    – roaima
    Jul 22 '18 at 21:38
















1














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 the date command have been taken away for date 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 in sort 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 to cut. The -f2 option shall throw the filename + to the next pipeline.


  • xargs -0 would be reading the filename separated by null and pass the filename to less -F on it's commandline.






share|improve this answer
























  • +1 Very nice -z all the way through

    – roaima
    Jul 22 '18 at 21:38














1












1








1







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 the date command have been taken away for date 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 in sort 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 to cut. The -f2 option shall throw the filename + to the next pipeline.


  • xargs -0 would be reading the filename separated by null and pass the filename to less -F on it's commandline.






share|improve this answer













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 the date command have been taken away for date 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 in sort 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 to cut. The -f2 option shall throw the filename + to the next pipeline.


  • xargs -0 would be reading the filename separated by null and pass the filename to less -F on it's commandline.







share|improve this answer












share|improve this answer



share|improve this answer










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



















  • +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


















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

CARDNET

Boot-repair Failure: Unable to locate package grub-common:i386

濃尾地震