Вы можете создать псевдоним:
[alias]
ndiff = !git --no-pager diff --name-only
и затем запустить git ndiff
вместо git diff --name-only
. Или оставьте часть --no-pager
вне псевдонима и запустите git ndiff --name-only
, где ndiff
означает no-pager-diff.
Или вместо git diff
вы можете запустить git diff-tree
или git diff-files
или git diff-index
. Эти три команды являются бэкэндами сантехнических команд , которые git diff
использует (для большинства своих) различных режимов работы. Ни один из них не использует пейджер, и большинству из них требуются дополнительные опции (например, -r
), которые будут использоваться таким же образом, как git diff
их запускает, но они существуют и являются правильным способом написания скриптов [ 1115]. Для ваших собственных псевдонимов нет необходимости использовать сантехнические команды; Ваш собственный псевдоним может просто вызвать git --no-pager diff <options>
.
От язык Common LISP: Предикаты Равенства
(eq x y)
верны, если и только еслиx
иy
тот же одинаковый объект.
eql
предикат верен, если его аргументыeq
, или если они - числа того же типа с тем же значением, или если они - символьные объекты, которые представляют тот же символ.
equal
предикат верен, если его аргументами являются структурно подобные (изоморфные) объекты. Грубое эмпирическое правило - то, что два объекта равны, если и только если их печатные представления являются тем же.Два объекта
equalp
, если они равны; если они - символы и удовлетворяют символьно-равный, который игнорирует алфавитный регистр и определенные другие атрибуты символов; если они - числа и имеют то же численное значение, даже если они имеют различные типы; или если у них есть компоненты, которые являются всемequalp
.
Вот некоторые примеры от той же страницы, которую я связал с вышеупомянутым:
(eq 'a 'b) is false.
(eq 'a 'a) is true.
(eq 3 3) might be true or false, depending on the implementation.
(eq 3 3.0) is false.
(eq 3.0 3.0) might be true or false, depending on the implementation.
(eq #c(3 -4) #c(3 -4))
might be true or false, depending on the implementation.
(eq #c(3 -4.0) #c(3 -4)) is false.
(eq (cons 'a 'b) (cons 'a 'c)) is false.
(eq (cons 'a 'b) (cons 'a 'b)) is false.
(eq '(a . b) '(a . b)) might be true or false.
(progn (setq x (cons 'a 'b)) (eq x x)) is true.
(progn (setq x '(a . b)) (eq x x)) is true.
(eq #\A #\A) might be true or false, depending on the implementation.
(eq "Foo" "Foo") might be true or false.
(eq "Foo" (copy-seq "Foo")) is false.
(eq "FOO" "foo") is false.
(eql 'a 'b) is false.
(eql 'a 'a) is true.
(eql 3 3) is true.
(eql 3 3.0) is false.
(eql 3.0 3.0) is true.
(eql #c(3 -4) #c(3 -4)) is true.
(eql #c(3 -4.0) #c(3 -4)) is false.
(eql (cons 'a 'b) (cons 'a 'c)) is false.
(eql (cons 'a 'b) (cons 'a 'b)) is false.
(eql '(a . b) '(a . b)) might be true or false.
(progn (setq x (cons 'a 'b)) (eql x x)) is true.
(progn (setq x '(a . b)) (eql x x)) is true.
(eql #\A #\A) is true.
(eql "Foo" "Foo") might be true or false.
(eql "Foo" (copy-seq "Foo")) is false.
(eql "FOO" "foo") is false.
(equal 'a 'b) is false.
(equal 'a 'a) is true.
(equal 3 3) is true.
(equal 3 3.0) is false.
(equal 3.0 3.0) is true.
(equal #c(3 -4) #c(3 -4)) is true.
(equal #c(3 -4.0) #c(3 -4)) is false.
(equal (cons 'a 'b) (cons 'a 'c)) is false.
(equal (cons 'a 'b) (cons 'a 'b)) is true.
(equal '(a . b) '(a . b)) is true.
(progn (setq x (cons 'a 'b)) (equal x x)) is true.
(progn (setq x '(a . b)) (equal x x)) is true.
(equal #\A #\A) is true.
(equal "Foo" "Foo") is true.
(equal "Foo" (copy-seq "Foo")) is true.
(equal "FOO" "foo") is false.
(equalp 'a 'b) is false.
(equalp 'a 'a) is true.
(equalp 3 3) is true.
(equalp 3 3.0) is true.
(equalp 3.0 3.0) is true.
(equalp #c(3 -4) #c(3 -4)) is true.
(equalp #c(3 -4.0) #c(3 -4)) is true.
(equalp (cons 'a 'b) (cons 'a 'c)) is false.
(equalp (cons 'a 'b) (cons 'a 'b)) is true.
(equalp '(a . b) '(a . b)) is true.
(progn (setq x (cons 'a 'b)) (equalp x x)) is true.
(progn (setq x '(a . b)) (equalp x x)) is true.
(equalp #\A #\A) is true.
(equalp "Foo" "Foo") is true.
(equalp "Foo" (copy-seq "Foo")) is true.
(equalp "FOO" "foo") is true.
Еще некоторые примечания:
Большинство функций CL неявно использует EQL, когда никакой тест не указан
, Видят также РАВНЫЙ СТРОКЕ, = и ДРЕВОВИДНО-РАВНЫЙ
В ядре EQ обычно сравнение указателя
И грубое руководство:
To compare against... Use... Objects/Structs EQ NIL EQ (but the function NULL is more concise and probably cheaper) T EQ (or just the value but then you don't care for the type) Precise numbers EQL Floats = Characters EQL or CHAR-EQUAL Lists, Conses, Sequences EQ (if you want the exact same object) EQUAL (if you just care about elements) Strings EQUAL (case-sensitive), EQUALP (case-insensitive) STRING-EQUAL (if you throw symbols into the mix) Trees (lists of lists) TREE-EQUAL (with appropriate :TEST argument)
Примечание это для эффективности обычно EQ>> EQL>> РАВНЫЙ>> EQUALP.