Using the result of a command as an argument in bash?

前端 未结 7 1827
野趣味
野趣味 2020-12-04 13:52

To create a playlist for all of the music in a folder, I am using the following command in bash:

ls > list.txt

I would like to use the r

相关标签:
7条回答
  • 2020-12-04 14:53

    To do literally what you said, you could try:

    ls > `pwd`.txt
    

    which will use the full pathname, which should be fine. Note that if you do this in your home directory, which might be in /home/hoboben, you will be trying the create /home/hoboben.txt, a text file in the directory above.

    Is this what you wanted?

    If you wanted the directory to contain a file named after it, you would get the basename of the current directory and append that with .txt to the pwd.

    Now, rather than use the pwd command... why not use the PWD environment variable?

    For example:

    ls > $PWD.txt
    

    or

    ls > ${PWD}.txt
    

    is probably what you were trying to remember with your second example.

    If you're in /home/hoboben and you want to create /home/hoboben/hoboben.txt, try:

    ls > ${PWD}/${PWD##*/}.txt
    

    If you do this, the file will contain its own name, so most often, you would remedy this in one of a few ways. You could redirect to somewhere else and move the file or name the file beginning with a dot to hide it from the ls command as long as you don't use the -a flag (and then optionally rename the resulting file).

    I write my own scripts to manage a directory hierarchy of music files and I use subdirectories named ".info", for example, to contain track data in some spare files (basically, I "hide" metadata this way). It works out okay because my needs are simple and my collection small.

    0 讨论(0)
提交回复
热议问题