Open a doc from terminal, but not by its name












13















Is it possible to open a file from the terminal not by its name but by its (number) position in the folder? Or any other option?



Because the name is too long.










share|improve this question









New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 4





    Please edit and give an example of what you want to do.

    – dessert
    yesterday






  • 5





    No, not without coding it. But you can use "tab" completion.

    – Rinzwind
    yesterday








  • 1





    Too long for what?

    – Carl Witthoft
    yesterday











  • Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

    – Henrique
    yesterday
















13















Is it possible to open a file from the terminal not by its name but by its (number) position in the folder? Or any other option?



Because the name is too long.










share|improve this question









New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 4





    Please edit and give an example of what you want to do.

    – dessert
    yesterday






  • 5





    No, not without coding it. But you can use "tab" completion.

    – Rinzwind
    yesterday








  • 1





    Too long for what?

    – Carl Witthoft
    yesterday











  • Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

    – Henrique
    yesterday














13












13








13


5






Is it possible to open a file from the terminal not by its name but by its (number) position in the folder? Or any other option?



Because the name is too long.










share|improve this question









New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












Is it possible to open a file from the terminal not by its name but by its (number) position in the folder? Or any other option?



Because the name is too long.







command-line files directory






share|improve this question









New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 21 hours ago









Sergiy Kolodyazhnyy

74.4k9155325




74.4k9155325






New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









yh yeahyh yeah

723




723




New contributor




yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






yh yeah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 4





    Please edit and give an example of what you want to do.

    – dessert
    yesterday






  • 5





    No, not without coding it. But you can use "tab" completion.

    – Rinzwind
    yesterday








  • 1





    Too long for what?

    – Carl Witthoft
    yesterday











  • Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

    – Henrique
    yesterday














  • 4





    Please edit and give an example of what you want to do.

    – dessert
    yesterday






  • 5





    No, not without coding it. But you can use "tab" completion.

    – Rinzwind
    yesterday








  • 1





    Too long for what?

    – Carl Witthoft
    yesterday











  • Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

    – Henrique
    yesterday








4




4





Please edit and give an example of what you want to do.

– dessert
yesterday





Please edit and give an example of what you want to do.

– dessert
yesterday




5




5





No, not without coding it. But you can use "tab" completion.

– Rinzwind
yesterday







No, not without coding it. But you can use "tab" completion.

– Rinzwind
yesterday






1




1





Too long for what?

– Carl Witthoft
yesterday





Too long for what?

– Carl Witthoft
yesterday













Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

– Henrique
yesterday





Have you tried typing the first two or three letters of the file name and then pressin the Tab key?

– Henrique
yesterday










9 Answers
9






active

oldest

votes


















36














You probably haven't discovered Tab-completion (see here) yet.



While typing a filename in Terminal just type a first few letters and hit Tab and see magic!






share|improve this answer



















  • 6





    Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

    – Guntram Blohm
    yesterday






  • 4





    @guntram Or you can even drag-and-drop files to Terminal.

    – pomsky
    yesterday






  • 3





    @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

    – KennyPeanuts
    yesterday



















26














Just for fun, literally answering the question:



enter image description here



#!/usr/bin/env python3
import os
import subprocess

show_hidden = False

currfiles = os.listdir("./")
if not show_hidden:
currfiles = [f for f in currfiles if not f.startswith(".")]
n = 1
for f in currfiles:
print(str(n) + ". " + f)
n = n + 1

picked = int(input("Quick, quick, give me a number:n"))
subprocess.run(["xdg-open", currfiles[picked - 1]])


How it works in practice




  1. In terminal, in the working dir, run "o" (as a command)


  2. The content of the current directory is listed, numbered. Pick the number and the item is opened:



    enter image description here




Set up



...is easy:




  1. Create, if it doesn't exist yet, a folder named "bin" in your home directory

  2. Copy the script into an empty file, save it as (literally) "o" (no extension), and make it executable


  3. Log out and back in and start using the command by just typing



    $ o


    in terminal




N.B.



If you'd like to show hidden files as well, change



show_hidden = False


into:



show_hidden = True





share|improve this answer





















  • 1





    If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

    – kundor
    yesterday













  • See b0fh's answer - this seems to be a built-in from bash

    – mgarciaisaia
    yesterday











  • @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

    – Jacob Vlijm
    yesterday











  • @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

    – Jacob Vlijm
    yesterday











  • @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

    – Sergiy Kolodyazhnyy
    23 hours ago



















21














There is a little-known feature in Bash that allows you to do this without calling on python or any other third-party tool, and with a single line:



select file in *; do open "$file"; break; done





share|improve this answer








New contributor




b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 4





    Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

    – kundor
    yesterday











  • But bash is not the only shell in existence, you know :-)

    – jamesqf
    22 hours ago



















11














In pure bash, using the select statement:



PS3='Quick, quick, give a number: '

select file in *
do
xdg-open "$file"
break
done


Setting PS3 is just eyecandy. If you leave it out, you will just get the default prompt. If you leave out the break statement, the select statement will loop until you hit CTRL-D or CTRL-C.



Of course you can also run it as a one-liner:



select file in *; do xdg-open "$file"; break; done





share|improve this answer








New contributor




Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

    – Sergiy Kolodyazhnyy
    22 hours ago



















6














You can install and use mc, Midnight Commander. It is a text user interface with menus etc inspired by the old Norton Commander, that was popular when people used MSDOS (before Windows).



sudo apt update
sudo apt install mc


and start it in a terminal window or in a text screen,



mc





share|improve this answer































    4














    $ ls



    results.log
    string
    Templates
    textfile
    time
    time.save
    vegetables
    vegetablesbsh


    How bout



    ls | sed -n 3p



    Prints 3rd file name



    Templates



    Open it-



    xdg-open "$(ls | sed -n 3p)"



    Usually works.



    Put it in a script



    #!/bin/bash

    xdg-open "$(ls | sed -n "$1"p)"



    Name of script: open



    Save it in home folder.
    Run:



    ./open file_number





    share|improve this answer





















    • 6





      Why you shouldn't parse the output of ls

      – dessert
      yesterday











    • Why not parse ls (and what do to instead)?

      – phuclv
      3 hours ago



















    1














    Make some files:



    $ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
    $ ls
    00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
    01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
    02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
    $ cat 16.txt
    This is file 16.


    Put the files into a variable and open the file by an index.



    $ files=(*)
    $ xdg-open ${files[12]}
    # Opens 12.txt in a text editor, which reads "This is file 12."


    Replace 12 with the index you're trying to open.






    share|improve this answer































      0














      On Linux filesystems, filenames have a very interesting property called inode: a directory ( or folder ) is a listing of inodes and which filenames point to those inodes. So, if you know the inode number, you can attempt to locate the file using find utility and do certain operations on it. This is especially useful when dealing with filenames in different locale, special characters, or when you accidentally created directory called ~.



      For example,



      $ ls -i1
      1103993 crs.py
      1103743 foobar.txt
      1147196 __pycache__
      1103739 'with'$'n''newline.png'
      1103740 yellowstone.jpg

      $ find . -type f -inum 1103743 -exec xdg-open {} ; -and -quit


      What this does is traverse current working directory ( represented by . ) and look for directory entry that is a file with inode number 1103743. If the file is found, xdg-open will open the file with default application and find will quit afterwards. The reason for the extra -and and -quit is to prevent xdg-open reopening the file if there exist hard links to the file (which is equivalent to opening the same file twice).






      share|improve this answer































        0














        This is probably the simplest answer that directly answers the question.
        try the following:



        touch file-1 file-2 file-3


        Let's say we want to open (or edit) the second file, we can do the following:



        echo `ls` | cut -d' ' -f2


        this will output the name of the second file, which we can use as input to the command we want to perform, for example:



        cat $( echo `ls` | cut -d' ' -f2 )


        will output the content of the second file.




        note that you can change the order in which the files are printed by ls, by tweaking ls arguments, see man ls for details.







        share|improve this answer










        New contributor




        HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





















        • This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

          – wjandrea
          2 hours ago











        Your Answer








        StackExchange.ready(function() {
        var channelOptions = {
        tags: "".split(" "),
        id: "89"
        };
        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: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        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
        });


        }
        });






        yh yeah is a new contributor. Be nice, and check out our Code of Conduct.










        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1127755%2fopen-a-doc-from-terminal-but-not-by-its-name%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        9 Answers
        9






        active

        oldest

        votes








        9 Answers
        9






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        36














        You probably haven't discovered Tab-completion (see here) yet.



        While typing a filename in Terminal just type a first few letters and hit Tab and see magic!






        share|improve this answer



















        • 6





          Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

          – Guntram Blohm
          yesterday






        • 4





          @guntram Or you can even drag-and-drop files to Terminal.

          – pomsky
          yesterday






        • 3





          @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

          – KennyPeanuts
          yesterday
















        36














        You probably haven't discovered Tab-completion (see here) yet.



        While typing a filename in Terminal just type a first few letters and hit Tab and see magic!






        share|improve this answer



















        • 6





          Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

          – Guntram Blohm
          yesterday






        • 4





          @guntram Or you can even drag-and-drop files to Terminal.

          – pomsky
          yesterday






        • 3





          @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

          – KennyPeanuts
          yesterday














        36












        36








        36







        You probably haven't discovered Tab-completion (see here) yet.



        While typing a filename in Terminal just type a first few letters and hit Tab and see magic!






        share|improve this answer













        You probably haven't discovered Tab-completion (see here) yet.



        While typing a filename in Terminal just type a first few letters and hit Tab and see magic!







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered yesterday









        pomskypomsky

        32.7k11103135




        32.7k11103135








        • 6





          Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

          – Guntram Blohm
          yesterday






        • 4





          @guntram Or you can even drag-and-drop files to Terminal.

          – pomsky
          yesterday






        • 3





          @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

          – KennyPeanuts
          yesterday














        • 6





          Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

          – Guntram Blohm
          yesterday






        • 4





          @guntram Or you can even drag-and-drop files to Terminal.

          – pomsky
          yesterday






        • 3





          @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

          – KennyPeanuts
          yesterday








        6




        6





        Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

        – Guntram Blohm
        yesterday





        Or just type the first few letters of the filename, and a *, if you don't want to use Tab-completion for some reason. Or even *abc* if the filename contains abc somewhere (try to use a subpattern that's unique to the filename you want). Or just copy/paste the filename using the mouse.

        – Guntram Blohm
        yesterday




        4




        4





        @guntram Or you can even drag-and-drop files to Terminal.

        – pomsky
        yesterday





        @guntram Or you can even drag-and-drop files to Terminal.

        – pomsky
        yesterday




        3




        3





        @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

        – KennyPeanuts
        yesterday





        @GuntramBlohm you should make that an answer. I think it is sufficiently different from this answer to stand on its own.

        – KennyPeanuts
        yesterday













        26














        Just for fun, literally answering the question:



        enter image description here



        #!/usr/bin/env python3
        import os
        import subprocess

        show_hidden = False

        currfiles = os.listdir("./")
        if not show_hidden:
        currfiles = [f for f in currfiles if not f.startswith(".")]
        n = 1
        for f in currfiles:
        print(str(n) + ". " + f)
        n = n + 1

        picked = int(input("Quick, quick, give me a number:n"))
        subprocess.run(["xdg-open", currfiles[picked - 1]])


        How it works in practice




        1. In terminal, in the working dir, run "o" (as a command)


        2. The content of the current directory is listed, numbered. Pick the number and the item is opened:



          enter image description here




        Set up



        ...is easy:




        1. Create, if it doesn't exist yet, a folder named "bin" in your home directory

        2. Copy the script into an empty file, save it as (literally) "o" (no extension), and make it executable


        3. Log out and back in and start using the command by just typing



          $ o


          in terminal




        N.B.



        If you'd like to show hidden files as well, change



        show_hidden = False


        into:



        show_hidden = True





        share|improve this answer





















        • 1





          If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

          – kundor
          yesterday













        • See b0fh's answer - this seems to be a built-in from bash

          – mgarciaisaia
          yesterday











        • @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

          – Jacob Vlijm
          yesterday











        • @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

          – Jacob Vlijm
          yesterday











        • @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

          – Sergiy Kolodyazhnyy
          23 hours ago
















        26














        Just for fun, literally answering the question:



        enter image description here



        #!/usr/bin/env python3
        import os
        import subprocess

        show_hidden = False

        currfiles = os.listdir("./")
        if not show_hidden:
        currfiles = [f for f in currfiles if not f.startswith(".")]
        n = 1
        for f in currfiles:
        print(str(n) + ". " + f)
        n = n + 1

        picked = int(input("Quick, quick, give me a number:n"))
        subprocess.run(["xdg-open", currfiles[picked - 1]])


        How it works in practice




        1. In terminal, in the working dir, run "o" (as a command)


        2. The content of the current directory is listed, numbered. Pick the number and the item is opened:



          enter image description here




        Set up



        ...is easy:




        1. Create, if it doesn't exist yet, a folder named "bin" in your home directory

        2. Copy the script into an empty file, save it as (literally) "o" (no extension), and make it executable


        3. Log out and back in and start using the command by just typing



          $ o


          in terminal




        N.B.



        If you'd like to show hidden files as well, change



        show_hidden = False


        into:



        show_hidden = True





        share|improve this answer





















        • 1





          If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

          – kundor
          yesterday













        • See b0fh's answer - this seems to be a built-in from bash

          – mgarciaisaia
          yesterday











        • @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

          – Jacob Vlijm
          yesterday











        • @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

          – Jacob Vlijm
          yesterday











        • @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

          – Sergiy Kolodyazhnyy
          23 hours ago














        26












        26








        26







        Just for fun, literally answering the question:



        enter image description here



        #!/usr/bin/env python3
        import os
        import subprocess

        show_hidden = False

        currfiles = os.listdir("./")
        if not show_hidden:
        currfiles = [f for f in currfiles if not f.startswith(".")]
        n = 1
        for f in currfiles:
        print(str(n) + ". " + f)
        n = n + 1

        picked = int(input("Quick, quick, give me a number:n"))
        subprocess.run(["xdg-open", currfiles[picked - 1]])


        How it works in practice




        1. In terminal, in the working dir, run "o" (as a command)


        2. The content of the current directory is listed, numbered. Pick the number and the item is opened:



          enter image description here




        Set up



        ...is easy:




        1. Create, if it doesn't exist yet, a folder named "bin" in your home directory

        2. Copy the script into an empty file, save it as (literally) "o" (no extension), and make it executable


        3. Log out and back in and start using the command by just typing



          $ o


          in terminal




        N.B.



        If you'd like to show hidden files as well, change



        show_hidden = False


        into:



        show_hidden = True





        share|improve this answer















        Just for fun, literally answering the question:



        enter image description here



        #!/usr/bin/env python3
        import os
        import subprocess

        show_hidden = False

        currfiles = os.listdir("./")
        if not show_hidden:
        currfiles = [f for f in currfiles if not f.startswith(".")]
        n = 1
        for f in currfiles:
        print(str(n) + ". " + f)
        n = n + 1

        picked = int(input("Quick, quick, give me a number:n"))
        subprocess.run(["xdg-open", currfiles[picked - 1]])


        How it works in practice




        1. In terminal, in the working dir, run "o" (as a command)


        2. The content of the current directory is listed, numbered. Pick the number and the item is opened:



          enter image description here




        Set up



        ...is easy:




        1. Create, if it doesn't exist yet, a folder named "bin" in your home directory

        2. Copy the script into an empty file, save it as (literally) "o" (no extension), and make it executable


        3. Log out and back in and start using the command by just typing



          $ o


          in terminal




        N.B.



        If you'd like to show hidden files as well, change



        show_hidden = False


        into:



        show_hidden = True






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited yesterday

























        answered yesterday









        Jacob VlijmJacob Vlijm

        65.4k9130226




        65.4k9130226








        • 1





          If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

          – kundor
          yesterday













        • See b0fh's answer - this seems to be a built-in from bash

          – mgarciaisaia
          yesterday











        • @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

          – Jacob Vlijm
          yesterday











        • @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

          – Jacob Vlijm
          yesterday











        • @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

          – Sergiy Kolodyazhnyy
          23 hours ago














        • 1





          If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

          – kundor
          yesterday













        • See b0fh's answer - this seems to be a built-in from bash

          – mgarciaisaia
          yesterday











        • @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

          – Jacob Vlijm
          yesterday











        • @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

          – Jacob Vlijm
          yesterday











        • @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

          – Sergiy Kolodyazhnyy
          23 hours ago








        1




        1





        If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

        – kundor
        yesterday







        If ~/bin isn't already in your PATH, you'll have to add it (for instance, putting a line like export PATH="$PATH:~/bin" into .bashrc or .profile.)

        – kundor
        yesterday















        See b0fh's answer - this seems to be a built-in from bash

        – mgarciaisaia
        yesterday





        See b0fh's answer - this seems to be a built-in from bash

        – mgarciaisaia
        yesterday













        @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

        – Jacob Vlijm
        yesterday





        @kundor nope, not on Ubuntu. Log out and in does the job, or simply source ~/.profile.

        – Jacob Vlijm
        yesterday













        @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

        – Jacob Vlijm
        yesterday





        @mgarciaisaia to type the command select file in *; do xdg-open "$file"; break; done is probably more work than to type the longest name.

        – Jacob Vlijm
        yesterday













        @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

        – Sergiy Kolodyazhnyy
        23 hours ago





        @JacobVlijm ~/bin is not built into anything at all. Ubuntu and Debian ship with custom ~/.profile that has lines if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi. On Mac OS X and CentOS you have to configure that yourself. A good chance is that if Ubuntu is provided to a person by IT department, chances are the ~/.profile won't be the same as default Ubuntu, so it's a good practice to always beware that ~/bin is not standard. Bash also can ignore ~/.profile if you launch the shell with --no-profile option

        – Sergiy Kolodyazhnyy
        23 hours ago











        21














        There is a little-known feature in Bash that allows you to do this without calling on python or any other third-party tool, and with a single line:



        select file in *; do open "$file"; break; done





        share|improve this answer








        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.
















        • 4





          Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

          – kundor
          yesterday











        • But bash is not the only shell in existence, you know :-)

          – jamesqf
          22 hours ago
















        21














        There is a little-known feature in Bash that allows you to do this without calling on python or any other third-party tool, and with a single line:



        select file in *; do open "$file"; break; done





        share|improve this answer








        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.
















        • 4





          Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

          – kundor
          yesterday











        • But bash is not the only shell in existence, you know :-)

          – jamesqf
          22 hours ago














        21












        21








        21







        There is a little-known feature in Bash that allows you to do this without calling on python or any other third-party tool, and with a single line:



        select file in *; do open "$file"; break; done





        share|improve this answer








        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.










        There is a little-known feature in Bash that allows you to do this without calling on python or any other third-party tool, and with a single line:



        select file in *; do open "$file"; break; done






        share|improve this answer








        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        share|improve this answer



        share|improve this answer






        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        answered yesterday









        b0fhb0fh

        31113




        31113




        New contributor




        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





        New contributor





        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        b0fh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.








        • 4





          Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

          – kundor
          yesterday











        • But bash is not the only shell in existence, you know :-)

          – jamesqf
          22 hours ago














        • 4





          Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

          – kundor
          yesterday











        • But bash is not the only shell in existence, you know :-)

          – jamesqf
          22 hours ago








        4




        4





        Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

        – kundor
        yesterday





        Excellent! open typically won't work, though (unless you're on Mac OS); xdg-open will probably do the trick on most GNU/Linux systems.

        – kundor
        yesterday













        But bash is not the only shell in existence, you know :-)

        – jamesqf
        22 hours ago





        But bash is not the only shell in existence, you know :-)

        – jamesqf
        22 hours ago











        11














        In pure bash, using the select statement:



        PS3='Quick, quick, give a number: '

        select file in *
        do
        xdg-open "$file"
        break
        done


        Setting PS3 is just eyecandy. If you leave it out, you will just get the default prompt. If you leave out the break statement, the select statement will loop until you hit CTRL-D or CTRL-C.



        Of course you can also run it as a one-liner:



        select file in *; do xdg-open "$file"; break; done





        share|improve this answer








        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





















        • Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

          – Sergiy Kolodyazhnyy
          22 hours ago
















        11














        In pure bash, using the select statement:



        PS3='Quick, quick, give a number: '

        select file in *
        do
        xdg-open "$file"
        break
        done


        Setting PS3 is just eyecandy. If you leave it out, you will just get the default prompt. If you leave out the break statement, the select statement will loop until you hit CTRL-D or CTRL-C.



        Of course you can also run it as a one-liner:



        select file in *; do xdg-open "$file"; break; done





        share|improve this answer








        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





















        • Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

          – Sergiy Kolodyazhnyy
          22 hours ago














        11












        11








        11







        In pure bash, using the select statement:



        PS3='Quick, quick, give a number: '

        select file in *
        do
        xdg-open "$file"
        break
        done


        Setting PS3 is just eyecandy. If you leave it out, you will just get the default prompt. If you leave out the break statement, the select statement will loop until you hit CTRL-D or CTRL-C.



        Of course you can also run it as a one-liner:



        select file in *; do xdg-open "$file"; break; done





        share|improve this answer








        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.










        In pure bash, using the select statement:



        PS3='Quick, quick, give a number: '

        select file in *
        do
        xdg-open "$file"
        break
        done


        Setting PS3 is just eyecandy. If you leave it out, you will just get the default prompt. If you leave out the break statement, the select statement will loop until you hit CTRL-D or CTRL-C.



        Of course you can also run it as a one-liner:



        select file in *; do xdg-open "$file"; break; done






        share|improve this answer








        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        share|improve this answer



        share|improve this answer






        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        answered yesterday









        OscarOscar

        1113




        1113




        New contributor




        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





        New contributor





        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        Oscar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.













        • Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

          – Sergiy Kolodyazhnyy
          22 hours ago



















        • Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

          – Sergiy Kolodyazhnyy
          22 hours ago

















        Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

        – Sergiy Kolodyazhnyy
        22 hours ago





        Simple enough of a solution and works well enough. You can go a step further and make an alias or function out of it

        – Sergiy Kolodyazhnyy
        22 hours ago











        6














        You can install and use mc, Midnight Commander. It is a text user interface with menus etc inspired by the old Norton Commander, that was popular when people used MSDOS (before Windows).



        sudo apt update
        sudo apt install mc


        and start it in a terminal window or in a text screen,



        mc





        share|improve this answer




























          6














          You can install and use mc, Midnight Commander. It is a text user interface with menus etc inspired by the old Norton Commander, that was popular when people used MSDOS (before Windows).



          sudo apt update
          sudo apt install mc


          and start it in a terminal window or in a text screen,



          mc





          share|improve this answer


























            6












            6








            6







            You can install and use mc, Midnight Commander. It is a text user interface with menus etc inspired by the old Norton Commander, that was popular when people used MSDOS (before Windows).



            sudo apt update
            sudo apt install mc


            and start it in a terminal window or in a text screen,



            mc





            share|improve this answer













            You can install and use mc, Midnight Commander. It is a text user interface with menus etc inspired by the old Norton Commander, that was popular when people used MSDOS (before Windows).



            sudo apt update
            sudo apt install mc


            and start it in a terminal window or in a text screen,



            mc






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered yesterday









            sudodussudodus

            25.5k33078




            25.5k33078























                4














                $ ls



                results.log
                string
                Templates
                textfile
                time
                time.save
                vegetables
                vegetablesbsh


                How bout



                ls | sed -n 3p



                Prints 3rd file name



                Templates



                Open it-



                xdg-open "$(ls | sed -n 3p)"



                Usually works.



                Put it in a script



                #!/bin/bash

                xdg-open "$(ls | sed -n "$1"p)"



                Name of script: open



                Save it in home folder.
                Run:



                ./open file_number





                share|improve this answer





















                • 6





                  Why you shouldn't parse the output of ls

                  – dessert
                  yesterday











                • Why not parse ls (and what do to instead)?

                  – phuclv
                  3 hours ago
















                4














                $ ls



                results.log
                string
                Templates
                textfile
                time
                time.save
                vegetables
                vegetablesbsh


                How bout



                ls | sed -n 3p



                Prints 3rd file name



                Templates



                Open it-



                xdg-open "$(ls | sed -n 3p)"



                Usually works.



                Put it in a script



                #!/bin/bash

                xdg-open "$(ls | sed -n "$1"p)"



                Name of script: open



                Save it in home folder.
                Run:



                ./open file_number





                share|improve this answer





















                • 6





                  Why you shouldn't parse the output of ls

                  – dessert
                  yesterday











                • Why not parse ls (and what do to instead)?

                  – phuclv
                  3 hours ago














                4












                4








                4







                $ ls



                results.log
                string
                Templates
                textfile
                time
                time.save
                vegetables
                vegetablesbsh


                How bout



                ls | sed -n 3p



                Prints 3rd file name



                Templates



                Open it-



                xdg-open "$(ls | sed -n 3p)"



                Usually works.



                Put it in a script



                #!/bin/bash

                xdg-open "$(ls | sed -n "$1"p)"



                Name of script: open



                Save it in home folder.
                Run:



                ./open file_number





                share|improve this answer















                $ ls



                results.log
                string
                Templates
                textfile
                time
                time.save
                vegetables
                vegetablesbsh


                How bout



                ls | sed -n 3p



                Prints 3rd file name



                Templates



                Open it-



                xdg-open "$(ls | sed -n 3p)"



                Usually works.



                Put it in a script



                #!/bin/bash

                xdg-open "$(ls | sed -n "$1"p)"



                Name of script: open



                Save it in home folder.
                Run:



                ./open file_number






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited yesterday


























                community wiki





                2 revs
                measSelf









                • 6





                  Why you shouldn't parse the output of ls

                  – dessert
                  yesterday











                • Why not parse ls (and what do to instead)?

                  – phuclv
                  3 hours ago














                • 6





                  Why you shouldn't parse the output of ls

                  – dessert
                  yesterday











                • Why not parse ls (and what do to instead)?

                  – phuclv
                  3 hours ago








                6




                6





                Why you shouldn't parse the output of ls

                – dessert
                yesterday





                Why you shouldn't parse the output of ls

                – dessert
                yesterday













                Why not parse ls (and what do to instead)?

                – phuclv
                3 hours ago





                Why not parse ls (and what do to instead)?

                – phuclv
                3 hours ago











                1














                Make some files:



                $ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
                $ ls
                00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
                01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
                02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
                $ cat 16.txt
                This is file 16.


                Put the files into a variable and open the file by an index.



                $ files=(*)
                $ xdg-open ${files[12]}
                # Opens 12.txt in a text editor, which reads "This is file 12."


                Replace 12 with the index you're trying to open.






                share|improve this answer




























                  1














                  Make some files:



                  $ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
                  $ ls
                  00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
                  01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
                  02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
                  $ cat 16.txt
                  This is file 16.


                  Put the files into a variable and open the file by an index.



                  $ files=(*)
                  $ xdg-open ${files[12]}
                  # Opens 12.txt in a text editor, which reads "This is file 12."


                  Replace 12 with the index you're trying to open.






                  share|improve this answer


























                    1












                    1








                    1







                    Make some files:



                    $ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
                    $ ls
                    00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
                    01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
                    02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
                    $ cat 16.txt
                    This is file 16.


                    Put the files into a variable and open the file by an index.



                    $ files=(*)
                    $ xdg-open ${files[12]}
                    # Opens 12.txt in a text editor, which reads "This is file 12."


                    Replace 12 with the index you're trying to open.






                    share|improve this answer













                    Make some files:



                    $ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
                    $ ls
                    00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
                    01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
                    02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
                    $ cat 16.txt
                    This is file 16.


                    Put the files into a variable and open the file by an index.



                    $ files=(*)
                    $ xdg-open ${files[12]}
                    # Opens 12.txt in a text editor, which reads "This is file 12."


                    Replace 12 with the index you're trying to open.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered yesterday









                    user1717828user1717828

                    196110




                    196110























                        0














                        On Linux filesystems, filenames have a very interesting property called inode: a directory ( or folder ) is a listing of inodes and which filenames point to those inodes. So, if you know the inode number, you can attempt to locate the file using find utility and do certain operations on it. This is especially useful when dealing with filenames in different locale, special characters, or when you accidentally created directory called ~.



                        For example,



                        $ ls -i1
                        1103993 crs.py
                        1103743 foobar.txt
                        1147196 __pycache__
                        1103739 'with'$'n''newline.png'
                        1103740 yellowstone.jpg

                        $ find . -type f -inum 1103743 -exec xdg-open {} ; -and -quit


                        What this does is traverse current working directory ( represented by . ) and look for directory entry that is a file with inode number 1103743. If the file is found, xdg-open will open the file with default application and find will quit afterwards. The reason for the extra -and and -quit is to prevent xdg-open reopening the file if there exist hard links to the file (which is equivalent to opening the same file twice).






                        share|improve this answer




























                          0














                          On Linux filesystems, filenames have a very interesting property called inode: a directory ( or folder ) is a listing of inodes and which filenames point to those inodes. So, if you know the inode number, you can attempt to locate the file using find utility and do certain operations on it. This is especially useful when dealing with filenames in different locale, special characters, or when you accidentally created directory called ~.



                          For example,



                          $ ls -i1
                          1103993 crs.py
                          1103743 foobar.txt
                          1147196 __pycache__
                          1103739 'with'$'n''newline.png'
                          1103740 yellowstone.jpg

                          $ find . -type f -inum 1103743 -exec xdg-open {} ; -and -quit


                          What this does is traverse current working directory ( represented by . ) and look for directory entry that is a file with inode number 1103743. If the file is found, xdg-open will open the file with default application and find will quit afterwards. The reason for the extra -and and -quit is to prevent xdg-open reopening the file if there exist hard links to the file (which is equivalent to opening the same file twice).






                          share|improve this answer


























                            0












                            0








                            0







                            On Linux filesystems, filenames have a very interesting property called inode: a directory ( or folder ) is a listing of inodes and which filenames point to those inodes. So, if you know the inode number, you can attempt to locate the file using find utility and do certain operations on it. This is especially useful when dealing with filenames in different locale, special characters, or when you accidentally created directory called ~.



                            For example,



                            $ ls -i1
                            1103993 crs.py
                            1103743 foobar.txt
                            1147196 __pycache__
                            1103739 'with'$'n''newline.png'
                            1103740 yellowstone.jpg

                            $ find . -type f -inum 1103743 -exec xdg-open {} ; -and -quit


                            What this does is traverse current working directory ( represented by . ) and look for directory entry that is a file with inode number 1103743. If the file is found, xdg-open will open the file with default application and find will quit afterwards. The reason for the extra -and and -quit is to prevent xdg-open reopening the file if there exist hard links to the file (which is equivalent to opening the same file twice).






                            share|improve this answer













                            On Linux filesystems, filenames have a very interesting property called inode: a directory ( or folder ) is a listing of inodes and which filenames point to those inodes. So, if you know the inode number, you can attempt to locate the file using find utility and do certain operations on it. This is especially useful when dealing with filenames in different locale, special characters, or when you accidentally created directory called ~.



                            For example,



                            $ ls -i1
                            1103993 crs.py
                            1103743 foobar.txt
                            1147196 __pycache__
                            1103739 'with'$'n''newline.png'
                            1103740 yellowstone.jpg

                            $ find . -type f -inum 1103743 -exec xdg-open {} ; -and -quit


                            What this does is traverse current working directory ( represented by . ) and look for directory entry that is a file with inode number 1103743. If the file is found, xdg-open will open the file with default application and find will quit afterwards. The reason for the extra -and and -quit is to prevent xdg-open reopening the file if there exist hard links to the file (which is equivalent to opening the same file twice).







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 22 hours ago









                            Sergiy KolodyazhnyySergiy Kolodyazhnyy

                            74.4k9155325




                            74.4k9155325























                                0














                                This is probably the simplest answer that directly answers the question.
                                try the following:



                                touch file-1 file-2 file-3


                                Let's say we want to open (or edit) the second file, we can do the following:



                                echo `ls` | cut -d' ' -f2


                                this will output the name of the second file, which we can use as input to the command we want to perform, for example:



                                cat $( echo `ls` | cut -d' ' -f2 )


                                will output the content of the second file.




                                note that you can change the order in which the files are printed by ls, by tweaking ls arguments, see man ls for details.







                                share|improve this answer










                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.





















                                • This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                  – wjandrea
                                  2 hours ago
















                                0














                                This is probably the simplest answer that directly answers the question.
                                try the following:



                                touch file-1 file-2 file-3


                                Let's say we want to open (or edit) the second file, we can do the following:



                                echo `ls` | cut -d' ' -f2


                                this will output the name of the second file, which we can use as input to the command we want to perform, for example:



                                cat $( echo `ls` | cut -d' ' -f2 )


                                will output the content of the second file.




                                note that you can change the order in which the files are printed by ls, by tweaking ls arguments, see man ls for details.







                                share|improve this answer










                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.





















                                • This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                  – wjandrea
                                  2 hours ago














                                0












                                0








                                0







                                This is probably the simplest answer that directly answers the question.
                                try the following:



                                touch file-1 file-2 file-3


                                Let's say we want to open (or edit) the second file, we can do the following:



                                echo `ls` | cut -d' ' -f2


                                this will output the name of the second file, which we can use as input to the command we want to perform, for example:



                                cat $( echo `ls` | cut -d' ' -f2 )


                                will output the content of the second file.




                                note that you can change the order in which the files are printed by ls, by tweaking ls arguments, see man ls for details.







                                share|improve this answer










                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.










                                This is probably the simplest answer that directly answers the question.
                                try the following:



                                touch file-1 file-2 file-3


                                Let's say we want to open (or edit) the second file, we can do the following:



                                echo `ls` | cut -d' ' -f2


                                this will output the name of the second file, which we can use as input to the command we want to perform, for example:



                                cat $( echo `ls` | cut -d' ' -f2 )


                                will output the content of the second file.




                                note that you can change the order in which the files are printed by ls, by tweaking ls arguments, see man ls for details.








                                share|improve this answer










                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.









                                share|improve this answer



                                share|improve this answer








                                edited 2 hours ago









                                wjandrea

                                9,35542664




                                9,35542664






                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.









                                answered 5 hours ago









                                HElanabiHElanabi

                                392




                                392




                                New contributor




                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.





                                New contributor





                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.






                                HElanabi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.













                                • This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                  – wjandrea
                                  2 hours ago



















                                • This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                  – wjandrea
                                  2 hours ago

















                                This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                – wjandrea
                                2 hours ago





                                This will fail for filenames that contain spaces. This answer gets around that, but it's still a bad idea to parse ls. Also backticks are deprecated. Use $() instead.

                                – wjandrea
                                2 hours ago










                                yh yeah is a new contributor. Be nice, and check out our Code of Conduct.










                                draft saved

                                draft discarded


















                                yh yeah is a new contributor. Be nice, and check out our Code of Conduct.













                                yh yeah is a new contributor. Be nice, and check out our Code of Conduct.












                                yh yeah is a new contributor. Be nice, and check out our Code of Conduct.
















                                Thanks for contributing an answer to Ask Ubuntu!


                                • 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%2faskubuntu.com%2fquestions%2f1127755%2fopen-a-doc-from-terminal-but-not-by-its-name%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

                                數位音樂下載

                                When can things happen in Etherscan, such as the picture below?

                                格利澤436b