parser.awk:
#!/usr/bin/awk -f
function die(msg) { print msg > "/dev/stderr"; exit 1 }
BEGIN {
FS=opener
if (mode=="l") linewise=1
else if (mode=="i") trim_closer=length(closer)
else if (mode!="a") die("mode must be one of: l,i,a")
}
{
live=level
for (f=1; f<=NF; f++) {
if (f>1) {
live=++level
if (mode=="i" && level>1 || mode=="a") printf "%s", opener
}
cur=$f
level-=gsub(closer, "", cur)
if (level<0) die("Unbalanced")
if (!linewise) {
cur=$f
if (sub(".*" closer, "", cur)) printf "%s",
substr($f, 1, length($f) - length(cur) - (level ? 0 : trim_closer))
else if (live) printf "%s", $f
}
}
if (live) {
if (linewise) print
else print ""
}
}
END { if (level>0) die("Unbalanced") }
Звоните как awk -v'opener={' -v'closer=}' -v'mode=a' -f parser.awk
. Если режим a
, это печатает скобки и содержание всех наиболее удаленных, сбалансированных {...}
; если режим i
, это печатает только их содержание; если режим l
, это печатает полные строки где наиболее удаленное {...}
начинается, остается открытым, или завершения.
Можно использовать
cd -
или Вы могли использовать
cd $OLDPWD
Другие ответы определенно завершены в прямом смысле ответа. cd -
и cd $OLDPWD
определенно основной выбор для этого. Однако я часто нахожу что, входя в рабочий процесс с pushd
и popd
работы лучше.
Короче говоря, если Вы перемещаетесь в каталог с окончательным намерением возвращения туда, где Вы запустили, использовать pushd
/popd
.
Существенное различие легко показывает пример.
$ cd dir1
$ pushd dir2
На данном этапе у Вас есть стопка каталога, которая является dir2, dir1
. Выполнение pushd
без аргументов отложит Вас в dir1
со стеком теперь как dir1, dir2
. popd
сделал бы то же, но оставит Вас с пустой стопкой каталога. Это очень не отличается, чем, как Вы были бы с cd -
рабочий процесс.
Однако теперь можно теперь изменить каталоги многократно и возвратиться к dir1
. Например,
$ cd dir1
$ pushd dir2
$ cd dir3
Если Вы работаете popd
в этой точке Вы вернетесь к dir1
.
pushd
и вернитесь к предыдущей папке в то время как popd
- луг.
– Bernhard
30.06.2013, 22:08
dirs -v
, но действительность для меня - то, что часто простой случай - все, что я действительно использую. (Или, хуже, я делаю ошибку при попытке push +2
или подобный) кроме того, я думал маленькие шаги для того, чтобы заставлять кого-то попробовать рабочий процесс. :)
– Josh Berry
01.07.2013, 05:53
Можно "определить ключ" для 'CD -' путем редактирования '~/.bashrc' файл и включая псевдоним для команды. Например, Вы могли добавить 'CDC' для создания его 'CD -', который предоставит Вам более короткий способ добраться до последнего каталога путем добавления:
alias cdc='cd -'
Таким образом, Вы просто ввели бы 'CDC', и она поместит Вас в Ваш последний рабочий каталог.
bind '"\e[24~":"\C-k \C-ucd -\n"'
(или более предпочтительно переместите его в inputrc
файл, как упомянуто в ответе).
– ADTC
16.02.2016, 07:00
Вы должны использовать:
cd ~-
он делает то же самое, что и cd -
(из принятого в настоящее время ответа), без раздражающего эха каталога, и его легче набирать, чем cd "$OLDPWD"
или cd - > /dev/null
.
cd..
переходит к предыдущей папке в дереве папок. cd -
переходит в папку, которая была раньше. Эта команда не работала в некоторых дистрибутивах (Ubuntu 16.04 ), работает в Debian 9.
cd -
. Например, когда Вы вводитеcd /usr/local
Вы знаете, что находитесь в/usr/loal
, но когда Вы вводитеcd -
Вы не всегда помните, от которого каталога Вы произошли из. Таким образом, это сохраняет Вас от вводаcd -; pwd
. Но это - все предположение. – Raphael Ahrens 01.09.2015, 07:37alias -- -='cd -'
затем используйте-
(1 символ) вместоcd -
(4 символа). Быстрее:D
– ADTC 16.02.2016, 06:38