кодесурса
«Linux

Linux Команды и аргументы

script1adsense2code
script1adsense3code

Вступление

На этом занятии мы рассмотрели расширение оболочки, внимательно изучив команды и аргументы. Знание расширения оболочки важно, потому что многие команды в вашей системе Linux обрабатываются и, скорее всего, изменяются оболочкой до их выполнения.

Интерфейс командной строки или оболочка, используемая в большинстве систем Linux, называется bash, что означает Bourne снова shell. Оболочка bash включает в себя элементы sh (исходная оболочка Bourne), csh (оболочка C) и ksh (оболочка Korn).

В этой главе часто используется команда echo для демонстрации функций оболочки. Команда echo очень проста: она повторяет ввод, который она получает.


[email protected]:~$ echo Burtonville
Burtonville
[email protected]:~$ echo Smurfs are blue
Smurfs are blue

аргументы

Одной из основных функций оболочки является выполнение сканирования командной строки. Когда вы вводите команду в командной строке оболочки и нажимаете клавишу ввода, оболочка начинает сканирование этой строки, разбивая ее на аргументы. При сканировании строки оболочка может вносить множество изменений в введенные вами аргументы.

Этот процесс называется расширением оболочки. Когда оболочка закончит сканирование и изменение этой строки, она будет выполнена.

удаление пробелов

Части, разделенные одним или несколькими последовательными пробелами (или табуляциями), рассматриваются как отдельные аргументы, любые пробелы удаляются. Первый аргумент - это команда, которую нужно выполнить, остальные аргументы передаются команде. Оболочка эффективно разделяет вашу команду на один или несколько аргументов.


[email protected]:~$ echo My  first  webpage
My first webpage
[email protected]:~$ echo My   first    webpage
My first webpage
[email protected]:~$ echo    My    first    webpage
My first webpage
[email protected]:~$      echo      My      first       webpage
My first webpage

Это объясняет, почему следующие четыре разные командные строки одинаковы после расширения оболочки.

Команда echo отобразит каждый аргумент, полученный от оболочки. Команда echo также добавит новый пробел между полученными аргументами.

одинарные кавычки

Вы можете предотвратить удаление пробелов, заключив их в кавычки. Содержимое строки в кавычках рассматривается как один аргумент. На скриншоте ниже эхо получает только один аргумент.


[email protected]:~$ echo 'A line with   single   quotes'
A line with   single   quotes
[email protected]:~$

двойные кавычки

Вы также можете предотвратить удаление пробелов, заключив их в двойные кавычки. То же, что и выше, echo получает только один аргумент.


[email protected]:~$ echo "A line with      double      quotes"
A line with      double      quotes
[email protected]:~$

Позже в этом уроке при обсуждении переменных мы увидим важные различия между одинарными и двойными кавычками.

эхо и цитаты

Строки в кавычках могут содержать специальные экранированные символы, распознаваемые командой echo (при использовании echo -e). На приведенном ниже снимке экрана показано, как использовать новую строку и вкладку (обычно восемь пробелов).


[email protected]:~$ echo -e "A line with \na newline"
A line with 
a newline
[email protected]:~$ echo -e 'A line with \na newline'
A line with 
a newline
[email protected]:~$ echo -e "A line with \ta tab"
A line with 	a tab
[email protected]:~$ echo -e 'A line with \ta tab'
A line with 	a tab
[email protected]:~$

Команда echo может генерировать больше, чем пробелы, табуляции и переводы строк. Посмотрите на странице справочника список вариантов.

команды

внешние или встроенные команды?

Не все команды являются внешними по отношению к оболочке, некоторые встроены. Внешние команды - это программы, которые имеют свой собственный двоичный файл и находятся где-то в файловой системе. Многие внешние команды находятся в / bin или / sbin. Встроенные команды являются неотъемлемой частью самой программы оболочки.

тип

Чтобы узнать, будет ли команда, переданная оболочке, выполняться как внешняя команда или как встроенная команда, используйте команду type.


[email protected]:~$ type cd
cd is a shell builtin
[email protected]:~$ type cat
cat is /bin/cat

Как видите, команда cd встроена, а команда cat - внешняя.

Вы также можете использовать эту команду, чтобы показать вам, является ли команда псевдонимом или нет.


[email protected]:~$ type ls
ls is aliased to `ls --color=auto'

запуск внешних команд

Некоторые команды имеют как встроенную, так и внешнюю версии. Когда одна из этих команд выполняется, встроенная версия имеет приоритет. Для запуска внешней версии необходимо ввести полный путь к команде.


[email protected]:~$ type -a echo
echo is a shell builtin
echo is /bin/echo
[email protected]:~$ /bin/echo Running the external echo command...
Running the external echo command...

который

Команда which будет искать двоичные файлы в переменной окружения $ PATH (переменные будут объяснены позже). На приведенном ниже снимке экрана показано, что cd встроен, а ls, cp, rm, mv, mkdir, pwd и являются внешними командами.

[email protected]:/$ which cp ls cd mkdir pwd
/bin/cp
/bin/ls
/bin/mkdir
/bin/pwd

псевдонимы

создать псевдоним

Оболочка позволяет создавать псевдонимы. Псевдонимы часто используются для облегчения запоминания имени существующей команды или для упрощения ввода параметров.

 [email protected]:~$ cat text2
apple
mango
banana
[email protected]:~$ alias xyz=tac
[email protected]:~$ xyz text2
banana
mango
apple

сокращать команды

Псевдоним также может быть полезен для сокращения существующей команды.

[email protected]:~$ alias ll='ls -lh --color=auto'
[email protected]:~$ alias c='clear'
[email protected]:~$

параметры по умолчанию

Псевдонимы могут использоваться для предоставления командам параметров по умолчанию. В приведенном ниже примере показано, как установить параметр -i по умолчанию при вводе команды rm.


[email protected]:~$ rm -i xyz.txt
rm: remove regular file ?xyz.txt?? no
[email protected]:~$ rm xyz.txt
[email protected]:~$ ls xyz.txt
ls: cannot access xyz.txt: No such file or directory
[email protected]:~$ touch xyz.txt
[email protected]:~$ alias rm='rm -i'
[email protected]:~$ rm xyz.txt
rm: remove regular empty file ?xyz.txt?? no
[email protected]:~$

В некоторых дистрибутивах псевдонимы по умолчанию используются для защиты пользователей от случайного удаления файлов ('rm -i', 'mv -i', 'cp -i')

просмотр псевдонимов

Вы можете предоставить один или несколько псевдонимов в качестве аргументов команды alias, чтобы получить их определения. Отсутствие аргументов дает полный список текущих псевдонимов.


[email protected]:~$ alias c ll
alias c='clear'
alias ll='ls -lh --color=auto'

unalias

Вы можете отменить псевдоним с помощью команды unalias.


[email protected]:~$ which rm
/bin/rm
[email protected]:~$ alias rm='rm -i'
[email protected]:~$ which rm
/bin/rm
[email protected]:~$ unalias rm
[email protected]:~$ which rm
/bin/rm
[email protected]:~$

отображение расширения оболочки

Вы можете отобразить расширение оболочки с помощью set -x и прекратить его отображение с помощью set + x. Возможно, вы захотите использовать это далее в этом руководстве, или если у вас есть сомнения относительно того, что именно оболочка делает с вашей командой.


[email protected]:~$ set -x pran
[email protected]:~$ echo $user
+ echo
[email protected]:~$ echo \$user
+ echo '$user'
$user
[email protected]:~$ set -x \pran
+ set -x pran
[email protected]:~$ echo \$user
+ echo '$user'
$user
[email protected]:~$ set +x
+ set +x
[email protected]:~$ echo \$user
$user
[email protected]:~$

Упражнение, практика и решение:

1. Сколько аргументов в этой строке (не считая самой команды).

коснитесь '/etc/cron/cron.allow' 'abc123.txt' "abc456.txt"

Код:

touch '/etc/cron/cron.allow' 'abc123.txt' "abc456.txt"
answer: three

2. Является ли tac встроенной командой оболочки?

Код:

Yes.
type tac

3. Существует ли псевдоним для rm?

Код:

alias rm

4. Прочтите man-страницу rm, убедитесь, что вы понимаете опцию -i rm. Создайте и удалите файл для проверки опции -i.

Код:

man rm
touch testfile
rm -i testfile

5. Выполните: псевдоним rm = 'rm -i'. Проверьте свой псевдоним с помощью тестового файла. Это работает как ожидалось?

Код:

touch testfile
rm testfile (should ask for confirmation)

6. Перечислите все текущие псевдонимы.

Код:

alias

7. Создайте псевдоним «город», который повторяет ваш родной город.

Код:

 alias city='echo Antwerp'
  
 

8. Используйте свой псевдоним, чтобы проверить, что он работает.

Код:

city (it should display Antwerp

9. Выполните set -x, чтобы отобразить расширение оболочки для каждой команды.

Код:

set -x

10. Проверьте функциональность set + x, выполнив псевдонимы вашего города и rm.

Код:

shell should display the resolved aliases and then execute the command:
datasoft @ datasoft-linux ~$ set +x
datasoft @ datasoft-linux ~$ city
+ echo antwerp
antwerp

11. Выполните set + x, чтобы остановить отображение расширения оболочки.

Код:

set +x

12. Удалите псевдоним вашего города.

Код:

unalias city

13. Каково расположение команд cat и passwd?

which cat (probably /bin/cat)
which passwd (probably /usr/bin/passwd)

14. Объясните разницу между следующими командами:
эхо
/ Бен / эхо

Код:

The echo command will be interpreted by the shell as the built-in echo command. 
The /bin/echo command will make the shell execute the echo binary located in the /bin directory.

15. Объясните разницу между следующими командами:
эхо привет
эхо -n привет

Код:

The -n option of the echo command will prevent echo from echoing a trailing newline.
echo Hello will echo six characters in total, echo -n hello only echoes five characters.
(The -n option might not work in the Korn shell.)

16. Покажите ABC с двумя пробелами между B и C.
(необязательный)

Код:

echo "A B C"

17. Выполните следующую команду (не используйте пробелы), чтобы отобразить точно так же, как показано ниже

Пример вывода:

 4 + 4 = 8
  10 + 14 = 24 

Решение заключается в использовании вкладок с.

4+4 =8
10+14 =24
echo -e "4+4\t=8" ; echo -e "10+14\t=24"

18. Используйте echo для точного отображения следующего:

Код:

??\\
echo '??\\'
echo -e '??\\\\'
echo "??\\\\"
echo -e"??\\\\\\"
echo ??\\\\

19. Используйте одну команду echo для отображения трех слов в трех строках.

Код:

echo -e "one \ntwo \nthree"

Предыдущая: Linux - файловое дерево
Далее: переменные оболочки Linux

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code