2016-04-09 26 views
0

Komut satırından başka bir komuta bir terminal takma adı oluşturmam ve terminalimi yeniden başlatmaya gerek kalmadan kullanmamı sağlayan basit bir komut arıyorum.Kolayca takma ad oluşturma komutu

Kullanım örneği şu şekildedir, küçük bir bash betiği oluşturdum ve bunu gist'e ekledim.

# Babel in your project 
npm i json -g 
npm install --save-dev babel-core babel-cli babel-preset-es2015 babel-preset-react 
json -f package.json -I -e 'this.scripts.test = "mocha --compilers js:babel-core/register --recursive"' 
json -f package.json -I -e 'this.babel = {}' 
json -f package.json -I -e 'this.babel.presets = ["es2015", "react"]' 
json -f package.json -I -e 'this.main = "./lib/index"' 
json -f package.json -I -e 'this.esnext = "./src/index"' 

böyle terminalden buradan çalıştırabilirsiniz: kolay yolu terminalden bir alias oluşturmak için varsa

bash -c "$(curl -fsSL https://gist.githubusercontent.com/reggi/8035dcbdf0fb73b8c8703a4d244f15cf/raw/767ec8c2fb54b554ce122cc85953da5b277dbaf4/babel-ready.sh)" 

merak ediyorum. Basit gibi birşey:

# non-POSIX-compliant function keyword used to allow dash in function name 
function add-alias() { 
    # declare locals explicitly to prevent scope leakage 
    local content_line cmd 

    (($# == 1)) && [[ $1 ]] || { 
    echo "Usage: add_alias name" >&2 
    return 1 
    } 
    IFS= read -r content_line 

    # reject inputs containing newlines 
    content_line=${content_line%$'\n'} 
    if [[ $content_line = *$'\n'* ]]; then 
    echo "ERROR: Only one line may be provided" >&2 
    return 1 
    fi 

    # generate a command 
    printf -v cmd "alias %q=%q" "$1" "$content_line" 

    # eval it in the local shell, and add to the rc if that succeeds 
    eval "$cmd" && printf '%s\n' "$cmd" >>"$HOME/.bashrc" 
} 

:

add-alias babel-ready -- bash -c "$(curl -fsSL https://gist.githubusercontent.com/reggi/8035dcbdf0fb73b8c8703a4d244f15cf/raw/767ec8c2fb54b554ce122cc85953da5b277dbaf4/babel-ready.sh)" 
+3

Tam olarak add-alias'ın ne yapmasını istiyorsunuz? Takma adı .bashrc'ye eklenmeli ve geçerli kabukta kullanılabilir duruma getirilmeli, tamamen önemsiz değildir. Sadece mevcut kabukta bir takma ad oluşturması gerekiyorsa, basitçe 'takma ad kullanın', değil mi? Takma adı geçerli kabuklara eklenecekse, (işlev? Veya) takma adının kendisi olması gerekir. –

+0

@JonathanLeffler Kalıcı bir küresel takma ad istiyorum. Tam olarak önemsiz değil, ne demek istiyorsun? – ThomasReggi

+0

@ThomasReggi, size * en * sistem ve yapılandırmalar için çalışacak bir cevap vermek kolay olurdu, ama * her zaman * çalışacak bir cevap (ve ideal olarak idempotent, yani, bashrc dosyanızı değiştirmiyorsanız) takma ad zaten var) imkansız olan rc dosyalarınızın kod akışını ayrıştırıp anlayabilmeyi gerektirir. –

cevap

0

bir kaba girişimi şöyle görünebilir (değil akış kontrol farkında, tanımak ve aynı takma eski sürümlerini kaldırmak mümkün değildir, İdempotent değil) ... olarak kullanılan: <<'EOF' kullanımı

add-alias babel-ready <<'EOF' 
bash -c "$(curl -fsSL https://gist.githubusercontent.com/reggi/8035dcbdf0fb73b8c8703a4d244f15cf/raw/767ec8c2fb54b554ce122cc85953da5b277dbaf4/babel-ready.sh)" 
EOF 

Not - yorumlu metin alıntı önemlidir, Bu, uzantılar tanımlanırken genişletmelerin çalışmasını engeller (çalıştığı zamanın tersi). Bu nedenle, komut satırı argümanından ziyade, kodun stdin üzerinde geçirilmesi işte bu yüzden kullanıcının komut satırı argümanlarını uygun şekilde alıntılama sorumluluğunu üstlenir.

İlgili konular