How to create custom commands in Unix/Linux?
Solution 1
Create a bash script in your /usr/bin folder, it should look something like this
#!/bin/bash
Whatever combination of commands you want to run when you type this thing.
Its really that easy.
Just name the bash script what you want to type in to the terminal, and make it excecutable: chmod +x filename
and you're good to go!
Solution 2
- Create a directory say "bin" under your home directory.
-
Update your path variable to include this bin directory. Put this in
.profile
or.bash_profle
file to make it permanent.export PATH=$PATH":$HOME/bin"
-
Create a script say, "hello" and keep it in your bin directory. Give execute permission to the hello script by
$ chmod +x hello
.#!/bin/bash echo My first program
-
Reload
.profile
or.bash_profle
:$ . ~/.bash_profile
-
From any directory, you simply type:
$ hello My first program
Solution 3
Easy, create an alias.
Say you want to write a command to cd into your download directory. And you want to call it cdd.
alias cdd='cd ~/Downloads'
You can create any command you want.
Here is further information:
http://www.mediacollege.com/linux/command/alias.html
Solution 4
Most, if not all by now, Linux distributions have a little script in ~/.bashrc that looks almost identical to this:
if [ -e ~/.bash_aliases ]
then
. ~/.bash_aliases
fi
This merely means you can create your own commands (also known as 'aliases
' usually referred to an existing command with some arguments you always have to use, or a list of commands that have to be executed in order).
Your Linux distribution will most likely not have the .bash_aliases file created in your home, unless you've manually done that already. So to create the file, type in the following command:
touch ~/.bash_aliases
Now that file will be executed automatically every time you fire off a new Terminal.
What you can do now is create a list of aliases and add them to that file for later uses. For example, the rm
(remove) command by default does NOT ask you to confirm your request when you tell it to delete a file/directory. However, there is an argument that tells rm
to ask you to confirm your request, -i
. So, rm -i filePath
will display a message asking you if you were sure you want to delete the specified file. Now, if you were to accidentally delete a file, you will very likely forget to include the -i
option, and that's where an alias
becomes very beneficial. Typing the following command
echo "alias rm='\rm -i'" >> ~/.bash_aliases
will tell Bash
that every time you request to delete a file, a confirming message will be displayed to you. Of course, there is a lot more you can do—this is just the basics.
If you want to learn how to use some basic commands (i.e. cd
, touch
, rm
, mkdir
, pushd
, popd
, etc.) and/or more sophisticated ones, I'd recommend a very good book you can have on your bookshelf as a reference called
a practical guide to linux commands editors and shell programming, by Mark G. Sobell. ISBN: 978-0133085044
Related videos on Youtube
Pedro Rainho
Updated on September 18, 2022Comments
-
Pedro Rainho over 1 year
I've create a demo app to test my problem and this is my layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#1e1c1c"> </RelativeLayout>
The only thing i've added was the background. Now the question, running this layout the background is not #1e1c1c but #181c18, why is this happening?
How can I fix this?
Thanks
-
Tony Anderson almost 11 yearsFor future reference, you should check out the facts page. It explains the things you should put in your questions. (such as posting the things that you have researched & tried). That's likely why someone gave this question a down vote.
-
-
Jeff Grimes almost 10 yearsThis doesn't persist across sessions, though. This command works, but isn't permanent. A more permanent way would be to modify your ~/.bash_aliases file and add the line you suggested there.
-
Delicia Brummitt almost 9 yearsAlso works by adding it to your ~/.bashrc file
-
phil294 about 8 yearswhy the backslash?
-
Squirrl about 6 yearsexecute with
./filename
-
M.O. almost 6 yearsI know this is very old but I have seen your suggestion of creating a
bin
folder in a lot of answers here. Is there any problem if it's.bin
instead ofbin
?. I am really picky about how myhome
looks and I dont want an extra folder just because. -
ConstantFun about 5 yearsI have tried using this unsuccessfully and was very frustrated for a while thinking there was something wrong with my
zsh
install or$PATH
but it ended up being that thechmod -x hello
wasn't working, neither does a capital-X
. Instead I triedchmod 755 hello
, while I am not sure of the security risks in regards to this command it actually let me runhello
. Does anyone have an explanation for this? I am assuming it is a problem in regards to age? -
Filip Happy almost 5 years@ConstantFun Use
chmod +x hello
to add 'run' privileges to the script.chmod -x hello
does the exact opposite - removes the 'run' privileges. (Notice the plus/minus sign difference in the answer and in your comment.) -
Robert Houghton over 4 years@phil294 perhaps you mean forward slash? So when you see ~/ that is a shortcut to saying /home/yourname/.bashaliases else here is info about backslashes as escape characters: unix.stackexchange.com/questions/146663/meaning-of-backslash
-
phil294 over 4 years@RobertHoughton thanks! But I guess I had been confused to the backslash inside
rm=\rf
instead. I now know that its purpose is to point to the realrm
binary (at /usr/bin or wherever), and to ignore any possible functions or other aliases namedrm
. -
user151496 about 4 years@JeffGrimes you can put it in the
~/.profile
file (or.bashrc
as Deilicia mentioned) and it will be permanent enough. very useful on hostings with limited file editing rights btw -
Junning Huang almost 3 yearsI think add alias to your .bashrc file is the most elegant and simple way to custom your command. Thanks!