NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Два из моего избранного:
1) Делают заполнение клавишей Tab нечувствительным к регистру (например, "CD/home/User" преобразовывает Вашу командную строку в: "CD/home/user", если последний существует и первый не делает. Можно включить его с "набором completion-ignore-case на" при подсказке или добавить, что это постоянно путем добавления "установило completion-ignore-case на" на .inputrc файл.
2) встроенная команда 'типа' похожа "который", но знающий о псевдонимах также. Например
$ type cdhome
cdhome is aliased to 'cd ~'
$ type bash
bash is /bin/bash
Я всегда устанавливал свою подсказку по умолчанию на "username@hostname:/current/path/name/in/full>"
PS1='\u@\h:\w> '
export PS1
, Сохраняет много беспорядка, когда Вы имеете дело с большим количеством различных машин.
При выполнении команды с большим выводом (как большое "делают") я хочу к не, только сохраните вывод, но также и посмотрите его:
делают установку 2> & 1 | кладут E.make
для первого удараПользовательское заполнение клавишей Tab (compgen и полный удар builtins)
заполнение клавишей Tab хорошо, но способность применить его к больше, чем просто именам файлов является большой. Я использовал его для создания пользовательских функций для расширения аргументов командам, которые я использую все время. Например, позволяет, говорят, что часто необходимо добавлять FQDN как аргумент команде (например, ping blah.really.long.domain.name.foo.com
). Можно использовать compgen и завершиться для создания функции удара, которая читает/etc/hosts файл для результатов так все, что необходимо ввести, тогда:
ping blah.<tab>
и это отобразит все Ваши текущие опции соответствия.
Так в основном что-либо, что может возвратить список слов, может использоваться в качестве функции.
Как быстрый калькулятор, скажите для вычислений процента:
$ date
Thu Sep 18 12:55:33 EDT 2008
$ answers=60
$ curl "http://stackoverflow.com/questions/68372/what-are-some-of-your-favorite-command-line-tricks-using-bash" > tmp.html
$ words=`awk '/class="post-text"/ {s = s $0} \
> /<\/div>/ { gsub("<[^>]*>", "", s); print s; s = ""} \
> length(s) > 0 {s = s $0}' tmp.html \
> | awk '{n = n + NF} END {print n}'`
$ answers=`awk '/([0-9]+) Answers/ {sub("<h2>", "", $1); print $1}' tmp.html`
и наконец:
$ echo $words words, $answers answers, $((words / $answers)) words per answer
4126 words, 60 answers, 68 words per answer
$
Не то, чтобы подразделение является усеченным, не округленный. Но часто это достаточно хорошо для быстрого вычисления.
Как найти файлы, соответствующие тексту, с помощью функции find | grep -H В этом примере какой файл ruby содержит строку перехода -
find. -name '* .rb' -exec grep -H jump {} \;
Только для Mac. Это просто, но, ЧЕЛОВЕК, я бы хотел знать об этом много лет назад.
open ./
Открывает текущий каталог в Finder. Вы также можете использовать его, чтобы открыть любой файл с его приложением по умолчанию. Также может использоваться для URL-адресов, но только если вы добавите к URL-адресу префикс http: //
, что ограничивает его полезность для открытия случайных случайных сайтов.