GNU/Linux >> Znalost Linux >  >> Linux

Existuje zkratka pro spuštění navrhovaného příkazu v terminálu?

Vytvořte alias vhodný pro váš shell. V bash , přidejte tento řádek do ~/.bashrc :

alias sagi="sudo apt-get install"

Poté source ~/.bashrc a spusťte alias abyste ověřili, že se alias zobrazuje ve vašem seznamu. Poté stačí napsat

sagi <package>

vyvolat alias. U ostatních shellů bude formát příkazu alias a název souboru rc jiný, ale source a alias by mělo být stejné.


AKTUALIZACE:Nyní se pokusí nainstalovat /bin/program , /usr/bin/program , /sbin/program nebo /usr/sbin/program .
Toto je zcela automatické...
Řekněme, že zadáte g++ main.cpp a nemáte nainstalované g++, zeptá se, zda chcete nainstalovat balíček g++, a pokud odpovíte ano, nainstaluje jej a poté spustí g++ main.cpp .

(Toto je jednorázové nastavení... Udělejte to a můžete začít)

  1. Nainstalujte apt-file... sudo apt-get install apt-file
  2. Aktualizujte jeho mezipaměť... sudo apt-file update
  3. Upravte ~/.bashrc a přidejte k němu toto:

    command_not_found_handle () {
    ask () {
      echo -ne "$1 (Y/n) ";
      read -N1 YES_ANSWER;
      echo "";
      YES_ANSWER=`echo $YES_ANSWER | sed 's/Y/y/; s/N/n/;'`;
      if [ "x$YES_ANSWER" == "xy" ]; then
        unset YES_ANSWER;
        return 0;
      elif [ "x$YES_ANSWER" == "xn" ]; then
        unset YES_ANSWER;
        return 1;
      elif [ "x$YES_ANSWER" == "x" ]; then
        unset YES_ANSWER;
        return 0;
      else
        ask_yes "$1";
        unset YES_ANSWER;
        return $?;
      fi;
    }
    if [ "x$1" == "x" ]; then
      echo "File name not provided.";
      return 1;
    fi;
    echo "Command not found: $1";
    echo "Searching for file in database...";
    FILE="`apt-file search /bin/$1 | sed 's/: /_/'`";
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /usr/bin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /sbin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /usr/sbin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      for f in "$FILE"; do
        if ask "\nDo you want to install package `echo $f | sed 's/_.*$//'` which provides `echo $f | sed 's/^.*_//'`?"; then
          sudo apt-get install `echo $f | sed 's/_.*$//'`;
          "[email protected]";
          return $?;
        fi;
      done;
    else
      echo "Could not find file $1.";
      return 1;
    fi;
    }
    

Stále to testuji, ale v předběžném testu se zdá, že to funguje. Tu a tam by bylo dobré spustit apt-file update pro obnovení seznamu dostupných souborů.

Chcete-li, aby se upravený ~/.bashrc stal účinným, proveďte jeden z následujících kroků:odhlaste se a znovu se přihlaste, nebo spusťte . ~/.bashrc .


Pokud jste v grafickém terminálu, třikrát klikněte na řádek začínající sudo apt-get označte jej celý a poté jej kliknutím prostředním tlačítkem vložte do terminálu. Případně, soudě podle výstupu, napište něco jako

# $(program | tail -n 1)

pro provedení výstupu tail -n 1 po přivedení výstupu program . Tohle asi není kratší. To by však teoreticky mělo umožnit definici aliasu, jako je následující

# alias ii='$( $(history -p !!) | tail -n 1)'

který by měl převzít poslední příkaz v historii, provést jej, získat jeho poslední řádek a provést jej znovu. Bohužel to nefunguje. Zde se diskutuje o podobném problému, ale nepodařilo se mi jej přizpůsobit tomuto problému, bash si obvykle stěžuje, že nenašel "" .


Linux
  1. gnome-terminal:příkaz nenalezen

  2. ip příkaz v terminálu Mac OS X

  3. Bash, pokud na jednom řádku

  1. Naplánované příkazy

  2. Existuje nástroj pro čtení proměnných prostředí ze souboru env a následné spuštění příkazu (lehčí než foreman)?

  3. Příkaz RPM se zablokuje

  1. Mých 10 nejlepších terminálových zkratek pro Linux

  2. Jak spustit příkaz, který přežije uzavření terminálu?

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