zsh: удалить прогнозируемый текст

Ваша проблема в том, что ваш скрипт перебирает каждый аргумент и выполняет все команды независимо от того, является ли аргумент правильной точкой монтирования. Я не тестировал это, но решение ниже должно дать вам желаемый результат.

now="$(date +%Y-%m-%dT%H:%M:%S)"
sp=" "
NFS="NFS1 NFS2  NFS3"
MOUNT_STATUS="$TRUE FALSE" #TRUE or FALSE
RUN_TIME="" #Start time to endtime of script per NFS
if [ $# -eq 0 ]; then
echo $now
set -e
else
for i in "$@"; do
echo -n "$now" ;
if [ -d $i ]; then
echo -n NFS=$(df -hP "$i" | awk '{print $NF}' | sed -n '1!p')  2>&1 | sed 's/^/ /'  ;
echo    $(if [[ "$i" == "/media /a/nbackup201 /a/ndt301" ]] ;
echo -n MOUNT_STATUS=;
then
echo 'TRUE' ;
else
echo $([[ "$i" != "/media /a/nbackup201 /a/ndt301" ]])    ;
echo 'FALSE' ; fi) |  sed 's/^/ /'             
else
echo -n NFS=$i MOUNT_STATUS=false
done
fi
2
10.04.2017, 22:59
1 ответ

Вы можете просто удалить все от курсора до конца строки с помощью kill-line или vi-kill- виджет eol .

  • В режиме emacs kill-line по умолчанию привязана к Control + K .
  • В режиме vi vi-kill-eol по умолчанию привязан к D в командном режиме. Поэтому вам нужно войти в режим vicmd (по умолчанию Escape ), а затем нажать D

    В качестве альтернативы вы можете добавить пользовательскую привязку для kill-line ] в режиме вставки ( viins ) для немедленного доступа. Например, чтобы привязать его к Control + K , запустите

     bindkey '^ K' kill-line
    
1
27.01.2020, 22:18

Теги

Похожие вопросы