Yanıtlar:
Klasik tarihin genişletilmesinden veya Readline işleminden mi bahsediyorsunuz? cd !$
bir sonraki giriş satırında bir önceki satırın son bağımsız değişkeninin yerine geçecek M-.veya M-_Readline'ı kullanarak çekecektir.
cd !$
. "Klasik tarih genişletme veya Readline işleme" Ne demek istediğinizi tam olarak anlamıyorum ...
!$
bir tarih genişlemesidir ; kabuk komutunuzu ayrıştırırken işler. M-. bir readline tuş vuruşu; readline, bastığınız her tuşu işleyen kütüphanedir ve M- tuşuna bastığınızı görür. ve sizin için son komutun son argümanında otomatik olarak
Sorunuz komut geçmişine erişmekse, bu iyi adlandırılmış komutu deneyin
history
Ayrıca Ctrl+ ' ryı deneyebilir ve yakın zamanda yazdığınızı hatırlamaya çalıştığınız bir komutu yazmaya başlayabilirsiniz.
(reverse-i-search)`cd ': cd mydir/data/
ESCKomutu seçmek veya çıkmak için tuşuna basın . Bu benim için en azından SuSE'de işe yarıyor; diğer dağıtımlardan emin değilim.
history | grep ...
!
vi
Komut satırınızı yönetmek için kullanmayı okudum . Süper havalı görünüyor. kabuk komutlarını düzenlemek için vi kullanarak
bu her zaman benim için çalıştı:
mkdir thisismyfolder
cd $_
$!
gerçekten yazdığınız son kelimeye $_
genişler , genişletmeden sonra son kelimeye genişler - böylece echo /tmp/tmpfile*
kaldırmak istediğiniz bir grup dosyayı görebilirsiniz ve sonra rm $_
yalnızca birini kaldırabilirsiniz.
Eğer koyarsanız, başka bir iplikten bir ipucu almak:
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
sonra .bashrc'nizde geçmişinizden bir şey yazmaya başlayabilir ve ardından yukarı oka basabilir ve daha sonra geçmiş öğenizi her öğeye bakmak yerine, halihazırda yaptığınız şeyle başlayan önceki girişlere atlayabilirsiniz. yazdınız.
Sanırım bu, soruda verilen belirli örnekle pek yardımcı olmuyor, ancak tarihe anında erişmeme yardımcı olan bir şey.
Eğer bash kullanırsanız pushd
ve öneririm popd
. Bir dizin yığını oluşturabilir ve ona hızla göz atabilirsiniz. Bu örneğe bakın:
PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$
$
göstermenin yararlı olduğunu anlıyorum pushd
.)
İlgili bir notta, bash içinde histverify kullanmanızı öneririz. Bunu ~ / .bashrc'nize koyun:
shopt -s histverify
Bu, bash! $ Veya diğer geçmiş işlevlerini genişlettikten sonra komutu yazdırmasına neden olur ve gerçekten çalıştırmak için enter tuşuna basmadan önce ona bakma şansı verir. Benim için, akıl sağlığı kontrolü ara sıra ekstra tuşa basmaya değer. cd foo
Komutu değil, komutu çalıştırdığımdan emin olmak istiyorum rm -rf foo
...
Ctrl-RYaklaşımın yanı sıra sık sık kullanıyorum Alt-.(ki bu tarif ettiğiniz senaryo için çok uygun). Ben zaman zaman! $ Kullanacağım.
Bunlar çok faydalı genel amaçlı tekniklerdir.
Ancak özel sorunuza yanıt vermek için:
Bir dizin oluşturmak ve doğrudan içine cd'ing o kadar yaygın bir kombinasyon ki onu sarmak için bir fonksiyona sahip olmak yararlıdır ..
function mcd {
local newdir='_mcd_command_failed_'
if [ -d "$1" ]; then # Dir exists, mention that
echo "$1 exists..."
newdir="$1"
else
if [ -n "$2" ]; then # We've specified a mode
command mkdir -p -m $2 "$1" && newdir = "$1"
else # Plain old mkdir
command mkdir -p "$1" && newdir="$1"
fi
fi
builtin cd "$newdir" # No matter what, cd into it
}
Kullanımı: mcd thisismyfolder
Kabuğunuz readline kullanıyorsa (durum böyle bash
) ATL+ .birlikte basmak gibi bir şey yapabilirsiniz ?
Gönderen GNU Readline belgelerinde :
yank-last-arg (M-. veya M-_)
Son argümanı önceki komuta (önceki geçmiş girdisinin son sözcüğü) ekleyin. Bir argümanla, yank-nth-arg gibi davranın. Yank-last-arg öğesine yapılan ardışık çağrılar geçmiş listesinde geriye doğru hareket eder ve her satırın son argümanını sırayla ekler.
cd this<TAB>