I'm searching for just one command — nothing with &&
or |
— that creates a directory and then immediately changes your current directory to the newly-created directory. (This is a question someone got for his exams of "linux-usage", he made a new command that did that, but that didn't give him the points.) This is on a debian server if that matters.
相关问题
- Is shmid returned by shmget() unique across proces
- How to access the camera from my Windows Phone 8 a
- how to get running process information in java?
- Error building gcc 4.8.3 from source: libstdc++.so
- Why should we check WIFEXITED after wait in order
Putting the following into your .bash_profile (or equivalent) will give you a
mkcd
command that'll do what you need:This article explains it in more detail
I don't think this is possible but to all people wondering what is the easiest way to do that (that I know of) which doesn't require you to create your own script is:
This way you don't need to write the name of the new directory twice.
!$
retrieves the last ($
) argument of the last command (!
).(There are more useful shortcuts like that, like
!!
,!*
or!startOfACommandInHistory
. Search on the net for more information)Sadly
mkdir /myNewDir/ && cd !$
doesn't work: it retrieves the last of argument of the previous command, not the last one of themkdir
command.Maybe I'm not fully understanding the question, but
makes the temp directory and then changes into that directory.
For oh-my-zsh users:
take 'directory_name'
Reference: Official oh-my-zsh github wiki
define a bash function for that purpose in your
$HOME/.bashrc
e.g.then type
mkdcd foodir
in your interactive shellSo stricto sensu, what you want to achieve is impossible without a shell function containing some
&&
(or at least a;
) ... In other words, the purpose of the exercise was to make you understand why functions (or aliases) are useful in a shell....PS it should be a function, not a script (if it was a script, the
cd
would affect only the [sub-] shell running the script, not the interactive parent shell); it is impossible to make a single command or executable (not a shell function) which would change the directory of the invoking interactive parent shell (because each process has its own current directory, and you can only change the current directory of your own process, not of the invoking shell process).PPS. In Posix shells you should remove the
function
keyword, and have the first line bemkdcd() {
I believe you are looking for this: