Comments 36
«Как много нам открытий чудных
Сегодня дарит мануал!» ©
Спасибо, я не задумывался про такую штуку.
Сегодня дарит мануал!» ©
Спасибо, я не задумывался про такую штуку.
Я давненько сделал себе в zsh что-то в это роде:
md() {
mkdir $1 && cd $1
}
но вот беда, с sudo не работает, не знаете как решить?
md() {
mkdir $1 && cd $1
}
но вот беда, с sudo не работает, не знаете как решить?
Сделать внешний скрипт (например, /usr/local/bin/md) либо скопировать эту функцию в zrh root'а.
мне кажется, с zshrc рута не заработает, потому как sudo -u username md тоже не работает, прийдется делать скрипт, но это как-то не красиво.
Может есть возможность реализовать через alias?
Может есть возможность реализовать через alias?
Через внешнюю программу или скрипт такое реализовать нельзя, т.к. текущий каталог — это свойство каждого процесса. В данном случае каталог сменится только для вызванной программы или интерпретатора скрипта. Ваш же шелл «останется» в том же каталоге, что и до вызова.
alias sudo='A=`alias` sudo '
Внешний IP еще можно посмотреть так:
$ curl ifconfig.me
А как посмотреть внутренний IP? Тот, что в ifconfig?
Хочу сделать скрипт, который покажет при логине имя сервера и его IP.
Хочу сделать скрипт, который покажет при логине имя сервера и его IP.
Распарсить вывод ifconfig. Например, так:
В разных *nix-системах формат вывода ifconfig может отличаться, поэтому, возможно, придётся скорректировать скрипт под конкретную модификацию ifconfig.
ifconfig [interface name] | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1
В разных *nix-системах формат вывода ifconfig может отличаться, поэтому, возможно, придётся скорректировать скрипт под конкретную модификацию ifconfig.
Благодарю.
В разных *nix-системах формат вывода ifconfig может отличаться, поэтому, возможно, придётся скорректировать скрипт под конкретную модификацию ifconfig.
А можно и так:
ip addr show <интерфейс>|grep inet\ |read i j k l m n o;echo $j|sed 's/\/.*$//'
net-tools давно устарели, отдельные дистрибутивы уже всерьёз думают о переходе на iproute2.
или так:
Встречал такое решение:
/usr/local/sbin/motd.sh
/etc/rc.local
ifconfig eth0|gawk '/inet addr/{print $2}'|gawk -F: '{print $2}'
Встречал такое решение:
/usr/local/sbin/motd.sh
#!/bin/sh
IFCONFIG=`which ifconfig 2>/dev/null||echo /sbin/ifconfig`
IPADDR=`LANG=en_US.UTF-8 $IFCONFIG eth0|gawk '/inet addr/{print $2}'|gawk -F: '{print $2}'`
MSJ_NO_IP_DHCP="If you could not get a DHCP IP address please type setup and select \"Network configuration\" to set up a static IP."
echo ""
echo "Welcome to Elastix "
echo "----------------------------------------------------"
echo ""
#echo "For access to the Elastix web GUI use this URL"
echo "To access your Elastix System, using a separate workstation (PC/MAC/Linux)"
echo "Open the Internet Browser using the following URL:"
if [ "$IPADDR" = "" ]; then
echo "http://<YOUR-IP-HERE>"
echo "$MSJ_NO_IP_DHCP"
else
echo "http://$IPADDR"
fi
echo ""
/etc/rc.local
/usr/local/sbin/motd.sh > /etc/motd
Вот еще от меня алиас, вдруг кому пригодится:
alias pwget='ssh alex@pasechnik screen -m -d wget -P /srv/samba/share --append-output=/srv/samba/share/pwget.log'
alias pwget='ssh alex@pasechnik screen -m -d wget -P /srv/samba/share --append-output=/srv/samba/share/pwget.log'
Давно использую, и с иерархией файлов. И удивлен, что не так много людей, знающих тонкости консоли…
Предчувствую появление ИТТ тролля, который крайне тонко пройдется по поводу тонкостей консоли
Крайне полезная штука, я кстати не знал — хотя линь использую со времен 7го редхэта… Shame on me
Крайне полезная штука, я кстати не знал — хотя линь использую со времен 7го редхэта… Shame on me
Ага :)
Ну, я в свое время много в удаленке провел, без графики. А тут уже и zsh, и различные скрипты, и обустраивание своего рабочего места. Много читал, многое перепробовал… Дажу систему ронял экспериментами. Для меня консоль — преимущество + независимость/универсальность + необходимость.
А тролль может и появиться, правда в этой теме его щедро накормят минусами :)
Ну, я в свое время много в удаленке провел, без графики. А тут уже и zsh, и различные скрипты, и обустраивание своего рабочего места. Много читал, многое перепробовал… Дажу систему ронял экспериментами. Для меня консоль — преимущество + независимость/универсальность + необходимость.
А тролль может и появиться, правда в этой теме его щедро накормят минусами :)
А чем функция лучше, чем файл со скриптом (кроме отсутствия необходимости создания отдельного файла)?
wget -q -O — checkip.dyndns.com/ | awk '{print $6}'| sed 's/<.*>//'
curl ifconfig.me
curl ifconfig.me
Давайте тогда делиться прикольными PS1 :)
export PS1='\[\e[37;42;1m\]\u@\h\[\e[0m\]\[\e[30;1m\] \d $(date +%H:%M:%S%P)\n\[\e[32;1m\]\w/\[\e[0m\]'
export PS1='\[\e[37;42;1m\]\u@\h\[\e[0m\]\[\e[30;1m\] \d $(date +%H:%M:%S%P)\n\[\e[32;1m\]\w/\[\e[0m\]'
Мне вот такой нравится (сразу весь bashrc, так как интерактивный):
# Check for an interactive session
[ -z "$PS1" ] && return
alias ls='ls --color=auto'
PS1='[\u@\h \W]\$ '
bash_prompt() {
local NONE="\[\033[0m\]" # unsets color to term's fg color
# regular colors
local K="\[\033[0;30m\]" # black
local R="\[\033[0;31m\]" # red
local G="\[\033[0;32m\]" # green
local Y="\[\033[0;33m\]" # yellow
local B="\[\033[0;34m\]" # blue
local M="\[\033[0;35m\]" # magenta
local C="\[\033[0;36m\]" # cyan
local W="\[\033[0;37m\]" # white
# emphasized (bolded) colors
local EMK="\[\033[1;30m\]"
local EMR="\[\033[1;31m\]"
local EMG="\[\033[1;32m\]"
local EMY="\[\033[1;33m\]"
local EMB="\[\033[1;34m\]"
local EMM="\[\033[1;35m\]"
local EMC="\[\033[1;36m\]"
local EMW="\[\033[1;37m\]"
# background colors
local BGK="\[\033[40m\]"
local BGR="\[\033[41m\]"
local BGG="\[\033[42m\]"
local BGY="\[\033[43m\]"
local BGB="\[\033[44m\]"
local BGM="\[\033[45m\]"
local BGC="\[\033[46m\]"
local BGW="\[\033[47m\]"
case $TERM in
xterm*|rxvt*)
if [ `echo $SSH_CLIENT | wc -c` -gt 1 ]; then SSH_FLAG=1; fi
if [ `/usr/bin/whoami` = "root" ]; then ROOT_FLAG=1; fi
if ([ "$SSH_FLAG" = 1 ] && [ "$ROOT_FLAG" = 1 ]); then
local TITLEBAR='\[\033]0;[SSH] \u@\h\007\]'
PS1="$TITLEBAR${R}[!] ${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
elif [ "$SSH_FLAG" = 1 ]; then
local TITLEBAR='\[\033]0;[SSH] \u@\h\007\]'
PS1="$TITLEBAR${EMR}[SSH]${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
elif [ "$ROOT_FLAG" = 1 ]; then
local TITLEBAR='\[\033]0;\u@\h\007\]'
PS1="$TITLEBAR${R}[!] ${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
else
local TITLEBAR='\[\033]0;\u@\h\007\]'
PS1="$TITLEBAR${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
fi
;;
*)
if [ "$SSH_FLAG" = 1 ]; then
PS1="[SSH]$PS1"
fi
if [ `/usr/bin/whoami` = "root" ]; then ROOT_FLAG=1; fi
if [ "$ROOT_FLAG" = 1 ]; then
PS1="$TITLEBAR${R}[!] ${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
else
PS1="$TITLEBAR${G}\u${Y}@\h ${W}at ${C}\W ${W}>:/ "
fi
;;
esac
}
bash_prompt
Мне кажется, у вас опечатка в строчке:
if [ -f~/.bash_func ]; then
if [ -f~/.bash_func ]; then
… отсутсвует пробел после
-f
(прошу прощения за разорванный комментарий).Вроде не критично, но поправил, спасибо :)
Ну как же не критично: без пробела
test(1)
воспримет -f
не как параметр, а как часть строки; таким образом, условие всегда будет истинным, независимо от наличия файла (т.к. строка всегда не пустая).нет, воспринимается как параметр.
и vim подсвечивает правильно.

uname -a
Linux comp 3.0.0-rc1 #1 SMP Sun Jun 5 18:17:00 MSD 2011 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"
Может быть, у вас какая-то странная убунта, но на всех шеллах и операционках, что я встречал, поведение такое:
Как видите, на непустую строку
$ [ -f /etc/passwd ] && echo ok || echo fuck
ok
$ [ -f /fuck/passwd ] && echo ok || echo fuck
fuck
$ [ -f/fuck/passwd ] && echo ok || echo fuck
ok
Как видите, на непустую строку
test(1)
возвращает true.wanip6() {
wget -q -O — ip6.me/ | head -6 | tail -1 | sed -e :a -e 's/<[^>]*>//g;/</N;//ba'
}
wget -q -O — ip6.me/ | head -6 | tail -1 | sed -e :a -e 's/<[^>]*>//g;/</N;//ba'
}
Sign up to leave a comment.
Функции в bashrc. Ещё одна простая вещь