Это - курсор по умолчанию. Можно работать:
xsetroot -cursor_name left_ptr
установить указатель на стрелку влево. Как правило, это входит в Ваш .xinitrc файл.
Обработка аргументов, которые передаются через командную строку скрипта, так же просты, как следует. Скажем, у нас был этот скрипт:
$ cat cmd.bash
#!/bin/bash
echo "arg1: $1"
echo "arg2: $2"
Теперь запустится без аргументов:
$ ./cmd.bash
arg1:
arg2:
с 1 аргументом:
$ ./cmd.bash hi
arg1: hi
arg2:
с 2 аргументами:
$ ./cmd.bash hi bye
arg1: hi
arg2: bye
Вы можете затем проверить, проверяют, являются ли аргументы 1 и 2, являются действительными каталогами или нет, а затем выручите или продолжайте по мере необходимости. Таким образом, мы вводим 2 чека, чтобы увидеть, являются ли 2 аргументами каталогов или нет, если не выйти.
$ cat cmd.bash
#!/bin/bash
[ -d "$1" ] || exit
[ -d "$2" ] || exit
[ $# == 2 ] || exit
echo "arg1: $1"
echo "arg2: $2"
Скажем, у нас есть эти каталоги.
$ mkdir d1 d2
$ ls -l
total 12
-rwxrwxr-x. 1 saml saml 89 Oct 14 23:13 cmd.bash
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d1
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d2
Если нам дам что-либо, кроме 2 каталогов, сценарий просто выйдет.
$ ./cmd.bash hi bye
Если нам дают 2 каталога:
$ ./cmd.bash d1 d2
arg1: d1
arg2: d2
Если нам дам более 2 аргументов:
$ ./cmd.bash d1 d2 d3
Я оставлю сравнение 2 каталогов. Для обучения Bash я направил вас к ссылке ниже для бесплатной онлайн-книги на Bash.
Проблема в вашей домашней программе.
Из вашего комментария к другому ответу вы попытались:
cp ../cambridge/security/parking ./parking2
Это вполне действительная команда в обычной оболочке. Однако проблема заключается в том, что программе тестирования не требуется ./
на ./parking2
.
При указании пути к файлу (практически с любой программой, а не только cp
), если в пути нет ведущего /
, он неявно становится ./
. Таким образом, вы должны быть хороши, если изменить команду на:
cp ../cambridge/security/parking parking2
-121--253388- >
заставляет grep думать, что файл является двоичным, потому что он является двоичным. Дело в том, что вы опустошили файл, но не остановили программу, которая его заполняла.
> output.txt
создает output.txt
, если он не существует, и усекает его до нулевой длины.
В точку выполнения > output.txt
имеется процесс tee
, в котором файл открыт. Усечение файла не влияет на положение записи tee
. Допустим, он записал N байт перед усечением. При следующей записи tee
после усечения запись начнется в позиции N . Запись в положение за текущим концом файла разрешена и заполняет начало файла пустыми байтами.
Grep видит файл, который начинается с нулевых байтов. Он правильно сообщает файл как двоичный.
Можно указать GNU grep для обработки файла как текста путем вызова grep -a
. Он будет искать весь файл, включая пустые байты (которые не совпадают, поэтому они не влияют на результат, если нет совпадения в первой строке, но они могут вызвать замедление, если их много).
Лучшим решением является указание tee
всегда записывать в текущем конце файла. К счастью (как отметил Стефан Шазелас ), есть вариант: tee -a
(присутствует во всех POSIX-совместимых системах). Сначала нужно обрезать файл.
>output.txt
nc -l -k -p 9100 | tee -a output.txt
start В большинстве файловых систем блоки, полностью состоящие из пустых байтов, остаются нераспределенными. Этот специализированный метод сжатия называется созданием разреженного файла .
-121--60220- Количество аргументов в параметре $ #
.
if [ $# -ne 2 ]; then
echo 1>&2 "Usage: $0 DIRECTORY1 DIRECTORY2"
exit 3
fi
Если требуется принудительно использовать оба аргумента в качестве каталогов (в отличие от файлов других типов), проверьте их с помощью -d
.
Утилита diff
сравнивает два файла. При использовании опции -r
выполняется рекурсивное сравнение каталогов.
diff -ru -- "$1" "$2"