터미널에서 파일의 이름이 아니라 폴더의 (번호) 위치로 파일을 열 수 있습니까? 아니면 다른 옵션?
이름이 너무 길기 때문입니다.
Tab
키를 눌러 보셨습니까 ?
터미널에서 파일의 이름이 아니라 폴더의 (번호) 위치로 파일을 열 수 있습니까? 아니면 다른 옵션?
이름이 너무 길기 때문입니다.
Tab
키를 눌러 보셨습니까 ?
답변:
아직 Tab완성을 발견하지 못했을 것입니다 ( 여기 참조 ).
터미널에 파일 이름을 입력하는 동안 첫 글자 몇 개만 입력하면 Tab마법을 볼 수 있습니다!
*
어떤 이유로 탭 완성 기능을 사용하지 않으려면을 입력하십시오. 또는 *abc*
파일 이름에 abc
어딘가에있는 경우 에도 (원하는 파일 이름에 고유 한 하위 패턴을 사용하십시오). 또는 마우스를 사용하여 파일 이름을 복사 / 붙여 넣기 만하면됩니다.
말 그대로 질문에 대답하면서 재미를 위해 :
#!/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]])
... 쉽습니다 :
로그 아웃했다가 다시 입력하고 명령을 사용하여 시작하십시오.
$ o
터미널에서
숨겨진 파일도 표시하려면 변경하십시오
show_hidden = False
으로:
show_hidden = True
~/bin
귀하의 PATH에없는, 당신은 (같은 라인을 넣어, 예를 들어 추가해야합니다 export PATH="$PATH:~/bin"
으로 .bashrc
나 .profile
.)
source ~/.profile
.
~/bin
은 전혀 내장되어 있지 않습니다. 우분투와 데비안은 사용자 정의 ~/.profile
라인을 제공 if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi
합니다. Mac OS X 및 CentOS에서는 직접 구성해야합니다. 우분투가 IT 부서에 의해 개인에게 제공되면 우분투가 ~/.profile
기본 우분투와 같지 않을 가능성이 높 으므로 항상 ~/bin
표준이 아닌 것을주의하는 것이 좋습니다 . 옵션으로 ~/.profile
쉘을 시작하면 Bash도 무시할 수 있습니다--no-profile
Bash에는 파이썬이나 다른 타사 도구를 호출하지 않고 한 줄 로이 작업을 수행 할 수있는 알려진 기능이 거의 없습니다.
select file in *; do open "$file"; break; done
open
그래도 Mac OS를 사용하지 않는 한 일반적으로 작동하지 않습니다. xdg-open
아마도 대부분의 GNU / Linux 시스템에서 트릭을 수행 할 것입니다.
순수한 bash에서 다음 select
명령문을 사용하십시오 .
PS3='Quick, quick, give a number: '
select file in *
do
xdg-open "$file"
break
done
PS3 설정은 눈에 띄지 않습니다. 그대로두면 기본 프롬프트 만 표시됩니다. break 문을 생략하면 CTRL-D 또는 CTRL-C를 누를 때까지 select 문이 반복됩니다.
물론 하나의 라이너로 실행할 수도 있습니다.
select file in *; do xdg-open "$file"; break; done
$ ls
results.log
string
Templates
textfile
time
time.save
vegetables
vegetablesbsh
한판 승부
ls | sed -n 3p
세 번째 파일 이름을 인쇄 합니다
Templates
열어 봐-
xdg-open "$(ls | sed -n 3p)"
일반적으로 작동합니다.
스크립트에 넣어
#!/bin/bash
xdg-open "$(ls | sed -n "$1"p)"
스크립트 이름 : open
홈 폴더에 저장하십시오. 운영:
./open file_number
Linux 파일 시스템에서 파일 이름에는 inode 라는 매우 흥미로운 속성이 있습니다 . 디렉토리 (또는 폴더)는 inode 목록이며 해당 파일 이름이 해당 inode를 가리 킵니다. 따라서 inode 번호를 알고 있으면 find
유틸리티를 사용하여 파일을 찾고 특정 작업을 수행 할 수 있습니다. 다른 로케일, 특수 문자 로 파일 이름을 처리 하거나 실수로라는 디렉토리를 만들 때~
특히 유용합니다 .
예를 들어
$ 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
이 작업은 현재 작업 디렉토리 (로 .
표시됨)를 탐색 하고 inode 번호가 1103743 인 파일 인 디렉토리 항목을 찾습니다. 파일을 찾으면 xdg-open
기본 응용 프로그램으로 파일을 열고 find
나중에 종료됩니다. 여분의 이유 -and
및 -quit
방지하는 것입니다 xdg-open
(두 번 같은 파일을 여는 것과 동일) 파일에 대한 하드 링크가 존재하는 경우 파일을 재개.
일부 파일을 작성하십시오.
$ 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.
파일을 변수에 넣고 색인으로 파일을여십시오.
$ files=(*)
$ xdg-open "${files[12]}"
# Opens 12.txt in a text editor, which reads "This is file 12."
교체 12
열려고하는 인덱스와 함께.
이것은 아마도 질문에 직접 대답하는 가장 간단한 대답 일 것입니다. 다음을 시도하십시오 :
touch file-1 file-2 file-3
두 번째 파일을 열거 나 편집한다고 가정하면 다음을 수행 할 수 있습니다.
echo `ls` | cut -d' ' -f2
다음과 같이 두 번째 파일의 이름을 출력합니다. 예를 들어 다음과 같이 수행하려는 명령의 입력으로 사용할 수 있습니다.
cat $( echo `ls` | cut -d' ' -f2 )
두 번째 파일의 내용을 출력합니다.
ls 인수를 조정하여 파일이 ls로 인쇄되는 순서를 변경할 수 있습니다
man ls
. 자세한 내용 은 참조 하십시오.
[업데이트] 이것은 당신이
관찰 한 @wjandrea 덕분 에 파일 이름에 공백이 없다고 가정합니다 .