LINUX.ORG.RU
ФорумTalks

команда без пробелов. винда может, а линуксу слабо?


0

4

в винде работающую команду с дополнительными параметрами можно записать без пробелов и кавычек, например так: more%programfiles:~10,1%c:\Windows\system.ini где создаётся переменная из строки «Program Files», откуда вырезается пробел, который используется в качестве разделителя команды и её параметра

не смотря на мой опыт работы с линуксами, я не вижу очевидного универсального способа, который работал бы на большинстве систем и в стандартном окружении без использования кавычек и пробелов. возьмём, к примеру, команду cat /etc/passwd варианты?

Перемещено tazhate из development

Ответ на: комментарий от cipher

Пусть сначала меня затроллить попробует ☺

А если даже и сломаю пробел, его можно будет повесить на какую-нибудь менее используемую клавишу. Хоть на тот же menu

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)

Почему ещё никто не выложил картинку с троллейбусом?

schizoid ★★★
()
Ответ на: комментарий от schizoid

Ты сам-то попробовал это перед тем как советы раздавать? Или как мегабакс - лепишь в тред всякий тупняк?

anonymous
()
Ответ на: комментарий от anonymous

У меня на bash работает. Поменяй свой шелл на нормальный и не нервничай.

schizoid ★★★
()

Да объясните уже цели требования такого поведения от шелла? Уже 2 страницы обсуждения прочитал, интересно же. ☺

f1xmAn ★★★★★
()

«%programfiles:~10,1%» — означает «взять один символ, начиная с 10-го (нумерация с 0) из переменной окружения PROGRAMFILES (имя переменной регистронезависимо)». В английской и русской Windows там обычно по умолчанию «C:\Program Files», в немецкой «C:\Programme» (по XP включительно).

Прямым налогом %parameter:~offset,length% в bash является ${parameter:offset:length}.

Непонятно, зачем вырезать пробел откуда-то, если можно его указать прямо:
win: more c:\windows\system.ini
lin: more /etc/hosts

Если пробел является частью имени, проблемы тоже нет:
win: more «имя с пробелами»
lin: more «имя с пробелами»
lin: more 'имя с пробелами'
lin: more имя\ с\ пробелами

bormant ★★★★★
()
Ответ на: комментарий от Jam_myaso

да, в баше работает, за что шизоиду спасибо. я такое тестил, не некоторых оболочках не будет работать а есть более универсальная операция чем ${variable:11:1} - это вырезает один символ после 11го по счёту символа, работает в баше. а как можно записать это же по-другому?

lornikos
() автор топика
Ответ на: комментарий от bormant

естественно я в курсе как это работает и что можно использовать кавычки, спасибо за то, что мне не придётся объяснять другим что это всё такое. но условие задания - отстутствие пробелов, а про вариант в баше нам уже известно. есть ли какие-либо аналоги?

lornikos
() автор топика
Ответ на: комментарий от lornikos

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

Покажи мне эту кривую программу, которая принимает команды к шеллу, но не умеет нормально их обрабатывать, чтобы я её случайно не поставил себе, а те хрен её знает, что там ещё в ней нанаркоманили.

shell-script ★★★★★
()

возьмём, к примеру, команду cat /etc/passwd варианты?

cat</etc/passwd

Бугогагагага.

thesis ★★★★★
()
Ответ на: комментарий от schizoid

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

strangeman ★★★★
()
Ответ на: комментарий от lornikos

Прямые аналоги:

SPACE=' '
ls${SPACE}/etc
SPACE='before after'
ls${SPACE:6:1}/etc

bormant ★★★★★
()

Ты просто заменил пробелы символом % А я их могу заменить символом ; Вывод ты дурачёк :) Без обид.

Dron ★★★★★
()

Про батон и троллейбус уже пошутили?

trex6 ★★★★★
()

Хорошо,ладно А ЗАЧЕМ ПИСАТЬ ТАКОЙ НЕ ЧИТАБЕЛЬНЫЙ СКРИПТ? Если это простительно для коротких строчек, то для больших сценариев это evil the evil. Вопрос не в том можно или нельзя вопрос в том какая степень полезности от этого.

Dron ★★★★★
()

ну наконец-то появились теплые ламповые топики! ТС молодец, так держать! По сабжу сказать нечего

stevejobs ★★★★☆
()
Ответ на: комментарий от Dron

какая степень полезности

Окромя вреда — никакой пользы.

bormant ★★★★★
()
Ответ на: комментарий от lornikos

в виндовс чтобы выполнить команду, например, чтения файла надо написать more c:\windows\system32\drivers\etc\hosts что содержит пробел и наша программа

это проблемы вашей говнопрограммы, а не линукса

s0L
()
Ответ на: комментарий от stevejobs

Ага больше бы таких приводящих свои строчки cmd и кричащих вон как я могу, а вы хрень господня :)

Dron ★★★★★
()
$ name="name with spaces"
$ mkdir "$name"
$ ls
name with spaces
$ echo penis >"$name/file"
$ cat name\ with\ spaces/file 
penis

Чего ты хочешь-то? Приведи пример кода, который не работает, но по-твоему мнению, должен работать.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от strangeman

файл, стандартный для всех линуксов, да еще и с пробелами

Это не проблема, ИМХО. /etc/inittab, /etc/fstab. Проблема в том, что вырезание подстрок поддерживают не все оболочки (csh не умеет).

А так, в ksh, sh (dash), bash и т.п. можно и просто:

cat$IFS/etc/fstab

schizoid ★★★
()

С вами всё ясно.

Dron ★★★★★
()
Ответ на: комментарий от takino

а чё у тебя так мало звёзд, тролль? ненакомментил ещё?

lornikos
() автор топика
Ответ на: комментарий от lornikos

в общем да. без патчей. уже выяснили что в bash - cat${LESSOPEN:11:1}/home/user/.bashrc но LESSOPEN не универсальная переменная

Оп, зачем тебе это?
сделай env | grep " ", увидь что у тебя в списке 'универсальной' переменной с пробелом нету. ._.

takino ★★★★★
()
Ответ на: комментарий от takino

всё уже решено, проблема в универсальности метода для клонов с-shell и шеллов Борна

lornikos
() автор топика
Ответ на: комментарий от strangeman

Fbsd:
#find / -x -name '*\ *'
/usr/local/lib/ruby/gems/1.8/gems/thor-0.16.0/spec/fixtures/path with spaces
:3

takino ★★★★★
()

Только недавно открыл для себя, что для этого есть кавычки. А чем они, собственно, не подходят?

ArtKun ★★★★★
()
Ответ на: Я понял! от linuxnewb

я понял!

а я понял, что линуксоиды умеют читать максимум 20% того, что пишут пользователи других ос

lornikos
() автор топика

ЕМНИП эту возможность, т.е. использование IFS для разбора командной строки выпилили еще в SysV как небезопасную. Первый раз вижу, что это кому-то понадобилось.

at ★★
()
Ответ на: я понял! от lornikos

И это правильно. Зачем свободному народу слушать чужих?

linuxnewb
()

Хм.
И это все что оно умеет кроме тупацких батников?

Jetty ★★★★★
()
Ответ на: я понял! от lornikos

виндоиды читать вообще не умеют: зачем читать если можно кликнуть мышкой «Дополнительно»->«OK»->«OK». Доказано 20-ти летней практикой

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.