How to create custom commands in Unix/Linux? [closed]
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
For 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.
4 Answers 4
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.
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!
/usr/bin folder is intended for the Linux distributor. ~/bin is the right place to put personal stuff and /usr/local/bin is for custom software intended for everyone on the system to use. One would like to keep a degree of logical separation / easy navigation over their own files.
- 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
I 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 of bin ?. I am really picky about how my home looks and I dont want an extra folder just because.
I 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 the chmod -x hello wasn’t working, neither does a capital -X . Instead I tried chmod 755 hello , while I am not sure of the security risks in regards to this command it actually let me run hello . Does anyone have an explanation for this? I am assuming it is a problem in regards to age?
@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.)
Say you want to write a command to cd into your download directory. And you want to call it cdd.
You can create any command you want.
This 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.
@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
I think add alias to your .bashrc file is the most elegant and simple way to custom your command. Thanks!
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
Как создать собственную команду в Linux
Начнём с того, для чего вам может понадобиться своя команда. Ситуации бывают разные, иногда банально лень набирать сложную и длинную команду или вы просто не помните её. Создание своей команды упрощает и ускоряет работу. Это как использовать аббревиатуру вместо полного названия — вы пишете одну команду, которая может выполнять несколько различных. Для создания своей команды будем использовать alias , так называемые псевдонимы. С их помощью можно не запоминать длинные строки кода, а просто присвоить их одной команде. Чтобы проверить список уже созданных псевдонимов, введём команду alias :
alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto'
Список может отличаться, но правила создания псевдонима всегда одни и те же. Рассмотрим на примере alias cp=’cp -i’
alias | начало |
cp | имя команды, которое мы будем использовать, оно может быть любым |
= | знак присваивания |
‘cp -i’ | в одинарных кавычках указываем значение |
Рассмотрим ещё один пример. Допустим, вам необходимо поискать наиболее объёмные директории, в статье «Что делать, когда осталось мало места на диске» есть нужная команда, но она большая и трудно запоминаемая. Тогда почему бы не добавить её как псевдоним? Готовый псевдоним будет выглядеть так:
alias duM=’du -hx —max-depth=15 / | grep «[[:digit:]]\.*G»‘ Теперь, достаточно ввести команду duM , чтобы получить список наиболее объёмных директорий. Конечно же вместо duM вы можете использовать любое другое слово. В этой статье мы рассмотрим создание постоянных псевдонимов, так как временные не столь практичны, ведь они будут исчезать каждый раз, когда вы отключитесь от сервера. Итак, для добавления псевдонима, нам потребуется файл .bashrc , находящийся в домашней директории пользователя. Как он может выглядеть:
# .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Как видим, в нём уже есть некоторые псевдонимы, поэтому можно добавить новые сразу за следующими. Если их нет, то просто добавляем в конец файла. Чтобы применить изменения после редактирования файла, вводим команду: . ~/.bashrc После чего можете использовать команду, которую добавили ранее.
Как создать свою команду в Linux?
эта команда запишет в файл конфига bash ваш постоянный собственный алиас к необходимой команде (или нескольким через знак «;»). т.е. если будете вбивать «android» от имени своего юзера, то автоматом в данном случае будет осуществлен переход в нужную директорию и запускаться Андроид Студио. я думаю это самый простой способ 🙂
nano /usr/local/bin/android
Вставить туда
#!/bin/bash
cd /opt/android-studio/bin/
./studio.sh
Затем выйти и сохранить. И chmod +x /usr/local/bin/android
Все
Alias это всего лишь один из способов решить вашу задачу. В широком смысле слова оболочка Linux (bash?) ищет ту команду которую вы набрали в консоли последовательно во всех каталогах указанных в переменной $PATH.
Например:
user@hostname:/home/user# echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
Вы можете включить в переменную $PATH путь до вашего shell скрипта и тогда оболчка будет искать любую набранную вами команду в том числе и там. Добавить что-то к переменной проще всего вот так:
export PATH=$PATH:/opt/android-studio/bin/
Чтобы между различными входами в систему переменная сохранялась добавьте вот такие строки в в файл .bahs_profile вашей домашней директории.
PATH=$PATH:/opt/android-studio/bin/ export $PATH
Этот подход лучше чем создание алиаса потому, что если вам потребуется создать ещё одну команду не будет необходимости прописывать новый алиас. Достаточно положить исполняемый файл в нужный каталог.