Используя результат команды как аргумент в ударе?

Я думаю, что это указано в поле description (краткое описание) в файле control. Взгляните на это :

...
Depends: ${shlibs:Depends}, ${misc:Depends}
Description:   <-- Here comes the "fancy" name
  

61
задан 12.09.2008, 06:01

6 ответов

Лучший способ сделать это с "$(command substitution)" (спасибо, Landon):

ls > "$(pwd).txt"

Вы будете иногда также видеть, что люди используют более старую нотацию обратной галочки, но это имеет несколько недостатков с точки зрения вложения и выхода:

ls > "`pwd`.txt"

Примечание, что необработанная замена pwd является полным путем, таким образом, вышеупомянутая команда создает файл с тем же именем в том же каталоге как рабочий каталог, но с .txt расширение. Thomas Kammeyer указал, что basename команда разделяет ведущий каталог, таким образом, это создало бы текстовый файл в текущем каталоге с названием того каталога:

ls > "$(basename "$(pwd)").txt"

Также благодаря erichui для перевода в рабочее состояние проблемы пробелов в пути.

74
ответ дан 08.10.2019, 19:15

Это эквивалентно решению для обратной галочки:

ls > $(pwd).txt
6
ответ дан 08.10.2019, 19:15

Чтобы сделать буквально, что Вы сказали, Вы могли попробовать:

ls > `pwd`.txt

, который будет использовать полный путь, который должен быть прекрасным. Обратите внимание, если Вы делаете это в своем корневом каталоге, который мог бы быть в/home/hoboben, попытку создать /home/hoboben.txt, текстового файла в каталоге выше.

это, что Вы хотели?

, Если бы Вы хотели, чтобы каталог содержал файл, названный в честь него, Вы получили бы базовое имя текущего каталога и добавили бы это с .txt к pwd.

Теперь, вместо того, чтобы использовать команду pwd..., почему бы не использовать переменную среды PWD?

, Например:

ls > $PWD.txt

или

ls > ${PWD}.txt

, вероятно, что Вы пытались помнить со своим вторым примером.

, Если Вы находитесь в/home/hoboben и Вы хотите создать /home/hoboben/hoboben.txt, попробовать:

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

, Если бы Вы делаете это, файл будет содержать свое собственное имя, так чаще всего, Вы исправили бы это одним из нескольких способов. Вы могли перенаправить к где-то в другом месте и переместить файл или назвать файл, начинающийся с точки для сокрытия, это от ls управляет, пока Вы не используете флаг-a (и затем дополнительно переименовываете получающийся файл).

я пишу свои собственные сценарии для управления иерархией каталогов музыкальных файлов, и я использую подкаталоги, названные ".info", например, для содержания данных дорожки в некоторых запасных файлах (в основном, я "скрываю" метаданные этот путь). Это удается хорошо, потому что мои потребности просты и мой маленький набор.

6
ответ дан 08.10.2019, 19:15

Используя вышеупомянутый метод создаст файлы один уровень выше Вашего текущего каталога. Если бы Вы хотите списки воспроизведения всем, переходят к одному каталогу, как который необходимо было бы сделать что-то:

#!/bin/sh

MYVAR=`pwd | sed "s|/|_|g"`
ls > /playlistdir/$MYVAR-list.txt
1
ответ дан 08.10.2019, 19:15

Я подозреваю, что проблема может состоять в том, что существуют пробелы в одних из имен каталогов. Например, если Ваш рабочий каталог является "/home/user/music/artist именем". Bash будет перепутан, думая, что Вы пытаетесь перенаправить к/home/user/music/artist и name.txt. Можно зафиксировать это с двойными кавычками

ls > "$(pwd).txt"

кроме того, Вы не можете хотеть перенаправлять к $ (pwd) .txt. В примере выше, Вы перенаправили бы вывод в файл "/home/user/music/artist name.txt"

5
ответ дан 08.10.2019, 19:15

Синтаксис:

ls > `pwd`.txt

, Который является ''' символом под' ~ ', не регулярная одинарная кавычка.

4
ответ дан 08.10.2019, 19:15

Теги

Похожие вопросы