Использование псевдонимов с использованием цикла for или while в .bashrc

Воскресенье равно 0, понедельник — 1 и т. д.

http://man7.org/linux/man-pages/man5/crontab.5.html

   The time and date fields are:

          field          allowed values
          -----          --------------
          ...
          day of week    0-7 (0 or 7 is Sunday, or use names)

1
14.05.2015, 01:10
2 ответа

Вы были очень близко:

i=0
while [ $i -le 4 ]; do
  alias "c$i"="ssh computer-1-$i"
  i=`expr $i + 1`
done

Просто добавьте символ $ перед i внутри цикла while .

2
29.04.2021, 00:28

Это можно сделать с помощью nmap и сценария, Например, http-get.nse *

$ nmap -p* --open --script http-get.nse --script-args http-get.path=/,http-get.match="downloads" 192.168.13.2

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-13 23:09 CEST
Nmap scan report for 192.168.13.2
Host is up (0.029s latency).
Not shown: 4235 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
| http-get: 
|_  GET / -> 200 OK
5050/tcp open  mmcc
| http-get: 
|_  GET / -> 200 OK
5051/tcp open  ida-agent
| http-get: 
|_  GET / -> 303
5055/tcp open  unot
| http-get: 
|   GET / -> 200 OK
|_  Matches: downloads
8118/tcp open  privoxy
| http-get: 
|_  GET / -> 400
8200/tcp open  trivnet1
| http-get: 
|_  GET / -> 200 OK

Nmap done: 1 IP address (1 host up) scanned in 17.31 seconds 192.168.1.1

Он выдает http-запрос каждому обнаруженному открытому порту и запрашивает страницу по пути, указанному в http-get.path = в -script-args , и просматривает ответ, чтобы найти соответствующее ключевое слово, определенное в http-get.match =

. он сообщает код состояния запроса GET и, возможно, совпадение ключевого слова.

5055/tcp open  unot
| http-get: 
|   GET / -> 200 OK
|_  Matches: downloads

Этот сценарий может потребовать дальнейших изменений, например. Я не проверял поддержку https. Но это должно тебя начать.

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

-121--105393-

touch создает новый пустой файл, если он не существует, потому что это то, для чего он был разработан. Утилита должна содержать код для конкретной обработки этого случая. Утилита появилась в Unix V7 ; его руководство описало его таким образом:

touch - дата обновления последнего изменения файла

touch пытается установить дату изменения каждого файла . Это делается путем считывания символа из файла и его обратной записи. Если файл * * * не существует, будет предпринята попытка его создания, если не указан параметр -c .

(Не знаю, что сделал touch , если файл был пуст. Основной системный вызов пришел позже.)

Я не знаю точно, почему touch был разработан для создания файла, но я подозреваю, что это из-за make . Почему необходимо установить текущее время изменения файла? Есть случаи, когда было бы полезно установить время модификации на определенное время, но эта возможность появилась позже, исходный сенсорный мог установить время модификации только на текущее время. Причиной этого является повторное выполнение правила make , зависящего от файла.

Предположим, что у вас есть файл foo и makefile, который объявляет команду для создания bar из foo . При вводе make bar выполняется команда и создается bar . Если bar существует и является более новой, чем foo , make bar ничего не делает, поскольку make предполагает, что bar уже создан. Однако если bar старше foo , сделайте вывод о том, что bar не является актуальным и нуждается в регенерации.

Но что делать, если изменились правила создания панели ? Тогда у вас есть два варианта:

  • rm bar; сделать брусок
  • сенсорным foo; make bar

Для создания bar потребуется foo , в противном случае команда обычно не работает.

Терминология «прикосновения» также присутствовала в утилите make : make -t bar будет только притворяться, что выполняет команды, то естьустановка времени изменения bar на текущее время без фактического выполнения команды создания bar (это можно сделать, если вы считаете, что изменения в foo не должны влиять на bar ). Поэтому утилита touch была автономной версией функции make -t .

-121--31703-

Ваша непосредственная проблема заключается в том, что i является только односимвольным рядом. Для доступа к значению переменной i необходимо использовать синтаксис для доступа к значению переменной: «$ i» .

while [ "$i" -le 4 ]

(Здесь можно опустить двойные цитаты, но использовать их - хорошая привычка влезать.)

Оболочки имеют встроенную базовую арифметику. Утилита expr является остатком старых дней, когда они этого не сделали. Вы можете написать

i=0
while [ "$i" -le 4 ]
do
  alias "c$i=ssh computer-1-$i"
  i=$((i + 1))
done

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

Bash имеет C-подобный синтаксис цикла. Поскольку это ваш файл запуска bash, нет причин не использовать синтаксис bash-specific.

for ((i = 0; i <= 4; i++)); do
  alias "c$i=ssh computer-1-$i"
done
1
29.04.2021, 00:28

Теги

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