LINUX.ORG.RU

Проблема с алиасами

 , , ,


1

2

1) Есть алиасы:
alias -- -="nice -n 19"
alias ca="cp -a"

При запуске
- ca тра та та
выводит
nice: ca: No such file or directory

Реально ли добиться запуска
nice -n 19 cp -a тра та та
, где nice -n 19 и cp -a заменены на алиасы (или на функции)?


2) Как сделать, чтобы после алиасов работало автодополнение путей и файлов по табу?


3) Как создать из loop'а алиасы?:

for a in `seq 0 7`
do
	for b in `seq 0 7`
	do
		for c in `seq 0 7`
		do
			alias $a$b$c="chmod $a$b$c"
		done
	done
done

Как такое реализовать? Или, если алиасы не получится, может, как-то получится функции? Может, есть другой способ, не через for?

★★★★★

Кстати, если запустить
nice -n 19 ca тра та та
он тоже ругается

teod0r ★★★★★ ()

1) man [code]

2)

$ cmd2=echo
$ cmd1='echo lol'
$ $cmd1
lol
$ $cmd1
lol
$ $cmd2

$ $cmd2 $cmd1
echo lol
derlafff ★★★★★ ()
Ответ на: комментарий от derlafff

1) man [code]

ну там только два тире слились, думал и так понятно. про [code] знаю

2)

какое отношение то что ты написал имеет к моему вопросу?

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

какое отношение то что ты написал имеет к моему вопросу?

такое, что алиасы так не работают. юзай переменные

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

Хотя вру, все работает.

$ alias tm="time "
$ alias eh="echo wat"
$ tm eh
wat

real    0m0.000s
user    0m0.000s
sys     0m0.000s
derlafff ★★★★★ ()
Ответ на: комментарий от derlafff

=«time »

ох ты, спасибо! всё дело в пробеле в конце

teod0r ★★★★★ ()

алиас обрабатывается шелом, поэтому после

nice -n19
алиас ca не работает (т.к. выполняется nice, а он не в курсе твоих башевских алиасов)

я бы сделал так:

alias n='nice -n19'
alias nca='n cp -a'
автодополнение работает:
st@fj ~ $ nca /var/
account/ cache/   db/      empty/   lib/     lock/    log/     mail/    nmbd/    run/     spool/   tmp/     www/     xen/     

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

автодополнение работает:

не во всех ситуациях

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

приведи пример, где не работает

когда столкнусь, напишу, сейчас не помню

По поводу

алиас ca не работает (т.к. выполняется nice, а он не в курсе твоих башевских алиасов)

derlafff подсказал, возникла идея создать на все команды одноимённые алиасы с пробелом в конце, должно решить мою проблему.
Подводных камней никаких не может возникнуть?
По идее, если в алиас включить полный путь, должно работать даже быстрее, т.к не будет проверять $PATH

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

2) Как сделать, чтобы после алиасов работало автодополнение путей и файлов по табу?

в zsh подобное искаропки

lazyklimm ★★★★★ ()

Ещё такой вопрос:

Как создать из loop'а алиасы?:

for a in `seq 0 7`
do
	for b in `seq 0 7`
	do
		for c in `seq 0 7`
		do
			alias $a$b$c="chmod $a$b$c"
		done
	done
done

Как такое реализовать? Или, если алиасы не получится, может, как-то получится функции?

teod0r ★★★★★ ()
Ответ на: Ещё такой вопрос: от teod0r

пробовал данную штуку скормить xargs'у, предвариткльно добавив echo перед alias, пробовал обернуть запуск скрипта в обратные ковычки, в пезультате создаются алиасы вида NNN="chmod

teod0r ★★★★★ ()
Ответ на: Ещё такой вопрос: от teod0r

Так всё у тебя работает, бери и пользуйся

cat testalias.sh
#!/usr/bin/env bash
for a in `seq 0 7`
do
    for b in `seq 0 7`
    do
        for c in `seq 0 7`
        do
            alias $a$b$c="chmod $a$b$c"
        done
    done
done
10 алиасов:
 alias| head -n 10
alias 000='chmod 000'
alias 001='chmod 001'
alias 002='chmod 002'
alias 003='chmod 003'
alias 004='chmod 004'
alias 005='chmod 005'
alias 006='chmod 006'
alias 007='chmod 007'
alias 010='chmod 010'
alias 011='chmod 011'

ты сам пытаешься запустить перед тем как вопрос задать?

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

скрипт нужно выполнять в текущем шелле:

source ~/testalias.sh

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

проблеиа теперь в том, что терминал стал открываться очень долго (несколько секунд)

7680 алиасов только с участем chmod, ещё есть другие алиасы.
+ ещё хочу на +r -r +w -w +x -x u+r u-r +rw u+rw u-x и т.д сделать, это ещё больше сотни

teod0r ★★★★★ ()
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от teod0r

Походу, проще создать десяток тысяч скриптов в $PATH, не будет так тупить, надеюсь

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

так и сделал. сейчас пока 7910 скриптов.
гораздо удобнее чем алиасы.

во первых можно всегда использовать, в отличие от алиасов, в других скриптах, внутри других команд, например find -exec

во вторых можно править на лету и после этого сразу будет работать, не надо делать . ~/.bashrc

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

приведи пример, где не работает

alias K=pkill
alias d=cd (показывает все файлы, а не только директории)

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