Is there an equivalent of cd - for cp or mv
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
In Bash and similar shells cd -
changes the current directory to a previously visited one. It's often very handy. I wonder if there is similar shorthand for copying or moving files, like:
~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
I'd be also happy with zsh
specific answers.
linux bash file-transfer zsh
add a comment |
In Bash and similar shells cd -
changes the current directory to a previously visited one. It's often very handy. I wonder if there is similar shorthand for copying or moving files, like:
~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
I'd be also happy with zsh
specific answers.
linux bash file-transfer zsh
5
With bash: Instead of-
pressEsc
and then.
to get from last command its last argument (here:../project-b
).
– Cyrus
Mar 31 at 15:06
That's true @Cyrus, but in the example the intention is to copy fromproject-b
toproject-a
.
– Tad Lispy
Mar 31 at 15:19
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings inman bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.
– AnoE
Apr 1 at 11:15
add a comment |
In Bash and similar shells cd -
changes the current directory to a previously visited one. It's often very handy. I wonder if there is similar shorthand for copying or moving files, like:
~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
I'd be also happy with zsh
specific answers.
linux bash file-transfer zsh
In Bash and similar shells cd -
changes the current directory to a previously visited one. It's often very handy. I wonder if there is similar shorthand for copying or moving files, like:
~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
I'd be also happy with zsh
specific answers.
linux bash file-transfer zsh
linux bash file-transfer zsh
asked Mar 31 at 14:57
Tad LispyTad Lispy
313310
313310
5
With bash: Instead of-
pressEsc
and then.
to get from last command its last argument (here:../project-b
).
– Cyrus
Mar 31 at 15:06
That's true @Cyrus, but in the example the intention is to copy fromproject-b
toproject-a
.
– Tad Lispy
Mar 31 at 15:19
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings inman bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.
– AnoE
Apr 1 at 11:15
add a comment |
5
With bash: Instead of-
pressEsc
and then.
to get from last command its last argument (here:../project-b
).
– Cyrus
Mar 31 at 15:06
That's true @Cyrus, but in the example the intention is to copy fromproject-b
toproject-a
.
– Tad Lispy
Mar 31 at 15:19
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings inman bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.
– AnoE
Apr 1 at 11:15
5
5
With bash: Instead of
-
press Esc
and then .
to get from last command its last argument (here: ../project-b
).– Cyrus
Mar 31 at 15:06
With bash: Instead of
-
press Esc
and then .
to get from last command its last argument (here: ../project-b
).– Cyrus
Mar 31 at 15:06
That's true @Cyrus, but in the example the intention is to copy from
project-b
to project-a
.– Tad Lispy
Mar 31 at 15:19
That's true @Cyrus, but in the example the intention is to copy from
project-b
to project-a
.– Tad Lispy
Mar 31 at 15:19
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings in
man bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.– AnoE
Apr 1 at 11:15
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings in
man bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.– AnoE
Apr 1 at 11:15
add a comment |
2 Answers
2
active
oldest
votes
If your shell has cd -
, then it will likely have either the special variable $OLDPWD
and/or the shortcut ~-
for the directory you've been in previously.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Indeed the POSIX shell language (upon which ksh/bash/zsh are built) specifies that cd -
should be equal to cd "$OLDPWD"
.
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
add a comment |
You can always use shell backquotes.
They act like a subshell : the command in the backquotes is executed first, and its output is placed as argument of the main command.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"
New contributor
4
No, the commandcd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...
– Neal Young
Apr 1 at 0:21
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [tocd
], this shall be equivalent to the command:cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)
– G-Man
Apr 1 at 2:36
1
(Cont’d) … And bash(1) says “An argument of-
is converted to$OLDPWD
before the directory change is attempted. If a non-empty directory name fromCDPATH
is used, or if-
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”
– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use"$(cd -)"
.
– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
|
show 1 more comment
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419624%2fis-there-an-equivalent-of-cd-for-cp-or-mv%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If your shell has cd -
, then it will likely have either the special variable $OLDPWD
and/or the shortcut ~-
for the directory you've been in previously.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Indeed the POSIX shell language (upon which ksh/bash/zsh are built) specifies that cd -
should be equal to cd "$OLDPWD"
.
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
add a comment |
If your shell has cd -
, then it will likely have either the special variable $OLDPWD
and/or the shortcut ~-
for the directory you've been in previously.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Indeed the POSIX shell language (upon which ksh/bash/zsh are built) specifies that cd -
should be equal to cd "$OLDPWD"
.
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
add a comment |
If your shell has cd -
, then it will likely have either the special variable $OLDPWD
and/or the shortcut ~-
for the directory you've been in previously.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Indeed the POSIX shell language (upon which ksh/bash/zsh are built) specifies that cd -
should be equal to cd "$OLDPWD"
.
If your shell has cd -
, then it will likely have either the special variable $OLDPWD
and/or the shortcut ~-
for the directory you've been in previously.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Indeed the POSIX shell language (upon which ksh/bash/zsh are built) specifies that cd -
should be equal to cd "$OLDPWD"
.
edited Mar 31 at 15:28
answered Mar 31 at 15:20
grawitygrawity
243k37512570
243k37512570
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
add a comment |
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
1
1
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
Tilde expansion has a lot more to it even than that. For an additional taste, unix.stackexchange.com/a/286628/135943 and that doesn’t even cover home directories.
– Wildcard
Mar 31 at 21:50
add a comment |
You can always use shell backquotes.
They act like a subshell : the command in the backquotes is executed first, and its output is placed as argument of the main command.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"
New contributor
4
No, the commandcd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...
– Neal Young
Apr 1 at 0:21
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [tocd
], this shall be equivalent to the command:cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)
– G-Man
Apr 1 at 2:36
1
(Cont’d) … And bash(1) says “An argument of-
is converted to$OLDPWD
before the directory change is attempted. If a non-empty directory name fromCDPATH
is used, or if-
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”
– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use"$(cd -)"
.
– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
|
show 1 more comment
You can always use shell backquotes.
They act like a subshell : the command in the backquotes is executed first, and its output is placed as argument of the main command.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"
New contributor
4
No, the commandcd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...
– Neal Young
Apr 1 at 0:21
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [tocd
], this shall be equivalent to the command:cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)
– G-Man
Apr 1 at 2:36
1
(Cont’d) … And bash(1) says “An argument of-
is converted to$OLDPWD
before the directory change is attempted. If a non-empty directory name fromCDPATH
is used, or if-
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”
– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use"$(cd -)"
.
– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
|
show 1 more comment
You can always use shell backquotes.
They act like a subshell : the command in the backquotes is executed first, and its output is placed as argument of the main command.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"
New contributor
You can always use shell backquotes.
They act like a subshell : the command in the backquotes is executed first, and its output is placed as argument of the main command.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"
New contributor
New contributor
answered Mar 31 at 21:34
Nathanael C.Nathanael C.
511
511
New contributor
New contributor
4
No, the commandcd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...
– Neal Young
Apr 1 at 0:21
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [tocd
], this shall be equivalent to the command:cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)
– G-Man
Apr 1 at 2:36
1
(Cont’d) … And bash(1) says “An argument of-
is converted to$OLDPWD
before the directory change is attempted. If a non-empty directory name fromCDPATH
is used, or if-
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”
– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use"$(cd -)"
.
– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
|
show 1 more comment
4
No, the commandcd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...
– Neal Young
Apr 1 at 0:21
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [tocd
], this shall be equivalent to the command:cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)
– G-Man
Apr 1 at 2:36
1
(Cont’d) … And bash(1) says “An argument of-
is converted to$OLDPWD
before the directory change is attempted. If a non-empty directory name fromCDPATH
is used, or if-
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”
– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use"$(cd -)"
.
– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
4
4
No, the command
cd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...– Neal Young
Apr 1 at 0:21
No, the command
cd -
outputs nothing, so `cd -` expands to the empty string. Try the command % echo `cd -` to verify. You would need to use something like % echo `cd -; pwd` ...– Neal Young
Apr 1 at 0:21
2
2
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [to
cd
], this shall be equivalent to the command: cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)– G-Man
Apr 1 at 2:36
@NealYoung: It seems that there’s something wrong with your shell. POSIX says “When a <hyphen-minus> is used as the operand [to
cd
], this shall be equivalent to the command: cd "$OLDPWD" && pwd
, which changes to the previous working directory and then writes its name.” … (Cont’d)– G-Man
Apr 1 at 2:36
1
1
(Cont’d) … And bash(1) says “An argument of
-
is converted to $OLDPWD
before the directory change is attempted. If a non-empty directory name from CDPATH
is used, or if -
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”– G-Man
Apr 1 at 2:36
(Cont’d) … And bash(1) says “An argument of
-
is converted to $OLDPWD
before the directory change is attempted. If a non-empty directory name from CDPATH
is used, or if -
is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output.”– G-Man
Apr 1 at 2:36
@Nathanael C.: But please use
"$(cd -)"
.– G-Man
Apr 1 at 2:40
@Nathanael C.: But please use
"$(cd -)"
.– G-Man
Apr 1 at 2:40
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
There's only "something wrong" if the shell claims POSIX compliance, and I think it's perfectly normal for shells that weren't invoked as /bin/sh and aren't specifically trying to emulate a POSIX shell to implement their language in whatever way they want...
– grawity
Apr 1 at 3:55
|
show 1 more comment
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419624%2fis-there-an-equivalent-of-cd-for-cp-or-mv%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
5
With bash: Instead of
-
pressEsc
and then.
to get from last command its last argument (here:../project-b
).– Cyrus
Mar 31 at 15:06
That's true @Cyrus, but in the example the intention is to copy from
project-b
toproject-a
.– Tad Lispy
Mar 31 at 15:19
@Cyrus, I was always aware that bash has some Emacs-like key bindings and am a heavy Emacs user myself. I was always happily using the general line movement keys of emacs on the shell (C-a etc.). But your comment prompted me to actually look for key bindings in
man bash
. Holy moly... it really is Emacs-like, complete with the kill ring, the mark semantics (C-space) etc. Thanks for bringing that up.– AnoE
Apr 1 at 11:15