Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!


Click here to return to the 'Problems with ls and ll investigated' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
Correct alias with no bugs?
Authored by: geohar on Feb 08, '02 09:20:32AM

the best illustration of what's wrong with the script

install the title-change postcmd
type: echo $foo
where foo is non-existant
postcmd will try to interpret foo, will fail and you will get

foo: Undefined variable.
Faulty alias 'postcmd' removed.
foo: Undefined variable.

The problem is that you'd like !# to return the textual representation of the last line, _without_ doing substitutions on it....

I therefore believe that the following is the correct command

alias postcmd 'echo -n "^[]0;"`history -h 1`"^G"'

George



[ Reply to This | # ]
Correct alias with no bugs?
Authored by: geohar on Feb 08, '02 03:03:04PM

_or_ if you really want !# so that aliasses are expanded,

then

alias postcmd echo "'^[]0;\!#^G'"

where the !# above is escaped with a backslash (don't know if geeklog will kill it though ;)

will work, and won't fail on undefined variables, because the whole thing it echoes is in single-quotes...

George



[ Reply to This | # ]
Correct alias with no bugs?
Authored by: hysterion on Feb 08, '02 07:43:23PM
> if you really want !# so that aliasses are expanded, > > then > > alias postcmd echo "'^[]0;!#^G'" > > where the !# above is escaped with a backslash > (don't know if geeklog will kill it though ;) Ah, good! I had also noticed this "Faulty alias removed" problem, when you feed it an undefined variable. And indeed this seems to fix it. Provided, that is, I still include the sched part, thus:
sched +0:00 alias postcmd echo -n "'^[]0;!#^G'"
(with backslash before the "!"). Otherwise, opening a new terminal gives me: Welcome to Darwin! echo: No match. Faulty alias 'postcmd' removed. [localhost:~] fz% That still leaves the ls problem open, though...

[ Reply to This | # ]
Correct alias with no bugs?
Authored by: hysterion on Feb 07, '03 08:34:41AM

Actually this one still gives an error when the undefined variable is in quotes:

[localhost:~] fz% echo '$foo'
foo: Undefined variable.
Faulty alias 'postcmd' removed.
$foo



[ Reply to This | # ]
Correct alias with no bugs?
Authored by: geohar on Feb 08, '02 03:03:17PM

_or_ if you really want !# so that aliasses are expanded,

then

alias postcmd echo "'^[]0;\!#^G'"

where the !# above is escaped with a backslash (don't know if geeklog will kill it though ;)

will work, and won't fail on undefined variables, because the whole thing it echoes is in single-quotes...

George



[ Reply to This | # ]
Correct alias with no bugs?
Authored by: Anonymous on Feb 10, '02 08:56:01PM

Works for me, no problem. At least ls is still displayed as ls, rather than the first line of the output (which is exactly what you DON'T want). I still wish it could display what directory, but hey there's always pwd and the prompt. ;)



[ Reply to This | # ]
Problems with ls and ll investigated
Authored by: hysterion on Feb 08, '02 07:24:32PM

> printf '#! /bin/sh n echo "foo"' > test
> chmod 700 test
> alias test "test dummyarg"
> test
>
> will display foo, rather than test in the titlebar.
> This is the analogue of what the ls alias does right?

I still can't reproduce this one. If I do the exact same thing (again, insert backslash before the n):

[localhost:~] fz% printf '#! /bin/sh \n echo "foo"' > test
[localhost:~] fz% chmod 700 test
[localhost:~] fz% alias test "test dummyarg"
[localhost:~] fz% test

it just sits there (no output, no change in the title bar). If I fix it thus:

[localhost:~] fz% printf '#! /bin/sh \n echo "foo"' > test
[localhost:~] fz% chmod 700 test
[localhost:~] fz% alias test "./test dummyarg"
[localhost:~] fz% test
foo

then the script works but I get "./test dummyarg", not "foo", in the title bar. I tried a few other changes, but none will put "foo" in the title bar.

I see the problem with aliasing ls -<something>, though -- it looks like the title bar catches the first line of output. For example:

[localhost:~] fz% alias ls 'ls -l'
[localhost:~] fz% ls

drwxr-xr-x 22 fz staff 704 Feb 7 06:05 Applications
drwx------ 16 fz staff 500 Feb 7 01:33 Desktop
drwx------ 21 fz staff 670 Feb 8 14:46 Documents
drwx------ 36 fz staff 1180 Jan 31 01:34 Library
drwx------ 3 fz staff 264 Jan 25 02:55 Movies
drwx------ 2 fz staff 264 Dec 10 08:37 Music
drwx------ 3 fz staff 264 Jan 30 06:50 Pictures
drwxr-xr-x 10 fz staff 296 Jan 26 14:18 Projects
drwxr-xr-x 4 fz staff 264 Nov 20 17:51 Public
drwxr-xr-x 5 fz staff 264 Nov 20 17:51 Sites
-rwx------ 1 fz staff 23 Feb 8 19:12 test
-rwx------ 1 fz staff 21 Feb 7 17:29 test1

the title bar says "total 24". The weird thing is, it only seems to happen when the alias itself is named ls. Indeed, compare the above with:


[localhost:~] fz% unalias ls
[localhost:~] fz% alias lt 'ls -l'
[localhost:~] fz% lt
total 24
drwxr-xr-x 22 fz staff 704 Feb 7 06:05 Applications
drwx------ 16 fz staff 500 Feb 7 01:33 Desktop
drwx------ 21 fz staff 670 Feb 8 14:46 Documents
drwx------ 36 fz staff 1180 Jan 31 01:34 Library
drwx------ 3 fz staff 264 Jan 25 02:55 Movies
drwx------ 2 fz staff 264 Dec 10 08:37 Music
drwx------ 3 fz staff 264 Jan 30 06:50 Pictures
drwxr-xr-x 10 fz staff 296 Jan 26 14:18 Projects
drwxr-xr-x 4 fz staff 264 Nov 20 17:51 Public
drwxr-xr-x 5 fz staff 264 Nov 20 17:51 Sites
-rwx------ 1 fz staff 23 Feb 8 19:12 test
-rwx------ 1 fz staff 21 Feb 7 17:29 test1

Can anyone explain this ?!?







[ Reply to This | # ]