GNU/Linux >> Znalost Linux >  >> Linux

Lze ',,' přiřadit k '..'?

Aliasy k tomu nejsou určeny, ale můžete vytvořit funkci nazvanou cd to je obal pro skutečný cd . Tenhle mi funguje! Stačí jej vložit do .bash_profile nebo soubor vašeho profilu podle vašeho výběru.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

Nebo s komentáři a pěkným formátováním:

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

UPRAVIT

Děkujeme @derobert za upozornění na if then else je zde lepší než && || . Také jsem si právě uvědomil (*facepalm *), že tato implementace bude fungovat pouze v případě jakýchkoli argumentů mimo cestu (tj. -L -P ) nejsou prvním argumentem. Buďte tedy varováni, pokud máte špatný zvyk psát cd -L ,, tohle ti nepomůže. A to není triviální správně zacházet, myslím.


ZSH:

Pokud používáte zsh alias -g ,,=".." je to, co potřebujete, ale to způsobí, že ",," se rozšíří všude, nejen při použití s ​​cd .

Od man zshbuiltins :

Pokud -g příznak je přítomen, definujte globální alias; globální aliasy jsou rozšířeny, i když se nevyskytují na pozici příkazu.

BASH:

Pokud je omezeno na bash (protože je otázka označena bash), přečtěte si následující:

Toto je čistě alias řešení, jak bylo požadováno, nicméně to udělá více, než je požadováno, možná frustruje uživatele (viz varování na konci mého příspěvku).

Citace man bash :

Pokud je poslední znak hodnoty aliasu prázdný, pak se zkontroluje rozšíření aliasu i další příkazové slovo za aliasem.

Proto stačí alias cd s mezerou navíc (aby bylo možné rozšířit jeho další argument) a poté alias ,, na .. . Viz to

alias cd='cd '
alias ,,='..'

poskytuje přesně to, co potřebujete.

Všimněte si, že to platí nejen pro bash (a jeho alias implementace), ale všechny shelly kompilující POSIX. Cituji příklad z man 1p alias (manuál tuto funkci nepopisuje explicitně, pouze jako příklad):

  1. Nastavte nohup tak, aby se mohl vypořádat s argumentem, který je sám o sobě názvem aliasu:

           alias nohup="nohup "
    

Upozornění: Jak píše @PeterCordes ve svém komentáři, automaticky to způsobí jiné aliasy k rozšíření při zápisu po cd . Může vyžadovat, abyste napsali cd \grep pokud chcete změnit adresář na grep ale vaše grep je alias pro grep --color=auto . Bez zpětného lomítka cd ohlásí chybu „příliš mnoho argumentů“ (nemůžete cd do dvou adresářů najednou)!.


Aliasy musí být první slovo příkazu. Také alias musí být nahrazen slovem proto žádné mezery).

Bash Reference Manual:Aliasy

Aliasy umožňují nahradit slovo řetězcem když je použito jako první slovo jednoduchého příkazu.

Můžete alias oba .. a ,, být cd .. .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. Může být Bash skript připojen k souboru?

  2. Může se barevný motiv vázat na vyrovnávací paměť?

  3. Lze velikost písma Grub přizpůsobit?

  1. Jak mohu používat aliasované příkazy s xargs?

  2. Alias ​​s proměnnou v bash

  3. Jak mohu monitorovat disk io?

  1. Jak předat parametry aliasu?

  2. Jak na `alias Sudo !!`?

  3. Spustit příkaz, který je zastíněn aliasem?