10.1 what is a shell
(1) What is Shell
- Shell is the medium used when the system interacts with computer hardware. It is just a tool of the system
- In fact, there is another layer between the system and computer hardware - the system kernel
(1_1) record command history - The commands we have executed in Linux will be recorded. By default, 1000 historical commands can be recorded. These commands are saved in the user's home directory bash_ In the history file.
- However, it should be noted that only when the user exits the current shell normally, the commands running in the current shell will be saved to bash_ In history
“!” It is a special character related to the command history. The common application of high character consists of the following three characters - !!: Indicates the execution of the previous instruction. The example code is as follows:
[root@localhost ~]# pwd /root [root@localhost ~]# !! pwd /root
- ! n: "N" here refers to a number, which indicates the nth instruction in the execution command history. For example, "! 1002" indicates the 1002nd instruction in the execution command history. As shown in the figure below, it is an example of executing the 100th instruction:
[root@localhost ~]# history |grep 100 100 ls /mnt/ 694 history |grep 1002 696 history |grep 100 [root@localhost ~]# !100 ls /mnt/ cdrom
- ! String (string greater than or equal to 1): for example "! pw "indicates the last command starting with" pw "in the command execution history
[root@localhost ~]# !pw pwd /root
(2) Command and file name completion
Previously, we learned that pressing a tab key can help us complete an instruction, a path or a file name. If you press the tab key twice in a row, the system will list all commands or file names
(2_1) alias
- We seem to have seen alias before. It is one of the unique functions of bash. We can alias a commonly used instruction with a long name as a relatively simple and easy to remember instruction through alias
- Of course, if we don't use it, we can use the unalias command to remove the alias function
- Directly execute the alias command to see the preset alias of the system:
[root@localhost ~]# 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 mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
- We can also use our own command alias. The specific format is: alias named alias = 'specific command'. Let's do a simple operation below
[root@localhost ~]# alias lym='pwd' [root@localhost ~]# lym /root [root@localhost ~]# unalias lym [root@localhost ~]# lym bash: lym: Command not found...
(3) Wildcard
In bash, we can use * to match zero or more characters; use? Match one character. The specific operations are as follows:
[root@localhost ~]# ls -d /etc/yum* /etc/yum /etc/yum.conf /etc/yum.repos.d
(4) Input / output redirection
- Input redirection: used to change the input of a command
- Output redirection: used to change the output of the command (output redirection is more commonly used). Output redirection is to enter the result of the command into a file rather than on the screen
- Enter the redirected command:<“
- Output redirected command: ">"; In addition, the command of error redirection is: "2 >"; Append redirection command: "> >
[root@localhost ~]# echo "123">1.txt [root@localhost ~]# echo "123">>1.txt [root@localhost ~]# cat 1.txt 123 123
(5) Pipe symbol
We have seen the pipeline symbol before: |, which takes the output of one instruction as the input of the next instruction
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin chrony:x:993:988::/var/lib/chrony:/sbin/nologin unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin gluster:x:990:984:GlusterFS daemons:/run/gluster:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin yummy:x:1000:1000:yummy:/home/yummy:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin [root@localhost ~]# cat /etc/passwd|wc -l 44
(6) Job control
When we run a process, we can use Ctrl+Z to pause it, and then use fg command to restore it, or use bg command to make it go to the background, or use Ctrl+C command to terminate it. The example code is as follows
Insert code slice here
Use the vi command to edit test Txt file. After inputting some content casually, we press Esc and then use Ctrl+Z to pause it. The following situation will appear
As shown in the figure above, the editing of test has been stopped at this time Txt file, and then we can use the fg command to restore it. After entering fg, we enter the editing interface just now. We pause it again. The specific command is the same as above, and then we enter jobs to see the suspended or running tasks in the background
If you want the suspended task to run in the background, you can use the bg command
As can be seen from the above figure, vi doesn't seem to support running in the background. Let's try another command
How should we turn off tasks running in the background? If we haven't just exited the shell, we should first use the command fg number to move the task to the foreground, and then use Ctrl+c to end the task. The details are as follows:
We can see that task number 2 has been turned off. Of course, we can also kill the process through their pid. The details are as follows:
First find their pid through the command. In the figure above, they are 18021 and 23878 respectively. Then use the kill command to kill them directly.