Что находится в Fedora repos (особенно обновление) является последним. Вы могли бы попробовать koji, где недавно созданные пакеты загружаются. Что Вы находите, там идет от неудавшихся сборок до крайне поврежденных пакетов полностью к обновлению, у которого требуют распределение прямо сейчас. Определенно не рекомендуемый, но эй, Unix - все о предоставлении пользователю достаточного количества веревки для стрельбы в их ноги.
Вы могли попробовать Fedora 18, но что у каждого в настоящее время есть gnome-shell-3.6.2-6.fc18. Или погружение в сыромятную плеть (прокручивающиеся обновления с очень последним материалом, который не взорвался на первом показе).
В рекомендациях по синтаксису служебных программ POSIX (в частности, # 13) указано, что для служебных программ, которые ожидают чтения из имени файла, -
означает стандартный ввод, а для утилит, которые ожидают записи имени файла, -
означает стандартный вывод. Например, cat somefile -
копирует содержимое somefile
на свой стандартный вывод, за которым следует то, что он читает на своем стандартном вводе.
Это правило не распространяется на команду cd
, поскольку она не читает и не записывает в файл. cd
делает другое: аргумент -
означает «предыдущий каталог». Команда cd -
эквивалентна cd "$ OLDPWD" && pwd
. Такое поведение характерно для команды cd
и для непосредственных команд, таких как pushd
.
Обратите внимание, что -
- это операнд, а не опция. Только аргументы, начинающиеся с -
, а не только -
или -
, являются вариантами. Основное значение операнда состоит в том, что -
не влияет на его особое значение. Например, cd - -P
заменяет подкаталог с именем -P
, но cd - -
совпадает с cd -
], он не переходит в каталог с именем -
. Точно так же cat - -
читает не из файла с именем -
, а из стандартного ввода.
cd -
на самом деле сокращение для cd "$OLDPWD" && pwd
, где $OLDPWD
устанавливается каждый раз, когда вы меняете каталоги в каталоге, в котором вы только что находились.
Обработка -
зависит от приложения. Некоторые приложения используют -
для обозначения STDIN
, например. grep
, awk
Другие приложения могут использовать -
в качестве сокращения для всего, что они выбирают, как указывает ответ Майкла, с su
, -
в качестве сокращения для --login
Хотя Майкл упоминает, что su
и другие приложения могут использовать -
, чтобы означать всё, что они хотят (чтение из stdin - обычное дело), Git использует -
таким же образом, как cd
делает , для смены ветвей.
$ git status
On branch master
$ git checkout foobar
$ git status
On branch foobar
$ git checkout -
$ git status
On branch master
Любая программа может использовать -
в качестве аргумента, чтобы обозначать все, что они хотят. Одним из распространенных примеров является su
, в котором -
используется как сокращение для - login
. Единственное соглашение, которое я могу придумать, это то, что программы, которые читают из файлов, часто используют -
для обозначения «читать из stdin» , но это полностью зависит от программы
-
определено в POSIX Utility Syntax Guidelines как стандартный вход:
Guideline 13:
For utilities that use operands to represent files to be opened for either
reading or writing, the '-' operand should be used to mean only standard input
(or standard output when it is clear from context that an output file is being
specified) or a file named -.
Вы можете увидеть это определение для утилит, которые работают с файлами для чтения или записи. cd
не принадлежит к этим утилитам, поэтому -
в cd не следует этому руководству.
Кроме того, POSIX также определил -
имеет собственное значение с cd:
-
When a <hyphen> is used as the operand, this shall be equivalent to the
command:
cd "$OLDPWD" && pwd
which changes to the previous working directory and then writes its name.
Добавляю сюда свои два цента. Я использую '-', чтобы сказать инструменту ps2pdf читать со стандартного входа, как несколько человек предлагали ранее:
man -t ls | ps2pdf - ls.pdf
Вышеуказанный один лайнер создает pdf версию man-страницы для ls в текущем каталоге.
Надеюсь, кто-нибудь найдет это полезным :).