linux基础操作5------(shell)

发布于:2025-05-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

一.前言

本文来介绍一下linux的shell,除了最后的那个快捷键,其他的还是做一个了解就行了。

Shell: 蛋壳的意思,是linux中比较重要的一个概念,所有的命令其实都称之为shell命令。 看图解:shell就是内核的一个外壳,用户通过shell来控制内核进而驱动硬件做事情,这是它名字的由 来。Linux下,没有shell的话,就不能控制这个计算机了,因为内核是用户不能直接控制的。

二.shell提示符 

#root用户提示符

[root@localhost ~]#

#普通用户test1的提示符

[test1@localhost ~]$

#格式:

[用户名@主机名 所在目录]#

# 1、用户名,这个没说啥说的

# 2、主机名:localhost是主机名,windows电脑也有主机名:我的电脑-->属性-->高级系统设置-->计 算机名,同一个网络中如果有多台计算机的话,每个计算机都应该有个自己的名字,就是主机名。Linux主机 名默认叫做localhost,也是可以修改的

        [root@localhost ~]# hostname root1

        [root@localhost ~]# logout

        退出之后,在重新登录,就看到主机名改好了,如下

        [root@root1~]# hostname 

        root1

# 3、所在目录:root登录之后,默认所在目录是/root,此时~表示的/root目录,如果是普通用户登录 的,那么~表示的是用户家目录,cd切换目录的时候,显示的当前所在目录

        # root用户:

        [root@jaden ~]# pwd /root

        # 普通用户:

        [zhangsan@jaden ~]$ pwd

        /home/zhangsan

# 4、提示符号

        #代表当前登录的用户是管理员,$代表的是当前登录用户是普通用户 

#提示符格式定制,这个简单理解一下即可,一般都不改

# 原格式:

[root@test ~]# echo $PS1

[\u@\h \W]\$         # \u是用户,\h是主机名,\W是相对路径

# 临时修改:重新登录就又还原了

[root@test ~]#cd /usr/local/bin/

[root@test bin]#export PS1='[\u@\h \w]\$' # \w表示绝对路径

[root@test /usr/local/bin]#

#永久修改

[root@test 10:23:39 /usr/local/bin]#cd [

root@test 10:24:25 ~]#vi .bashrc

#找个空白的地方,插入一行

export PS1='[\u@\h \t \w]\$'

#linux PS1可以各种定制:参考https://www.cnblogs.com/Q--T/p/5394993.html

linux路径,这个我们讲过的

相对路径 不完整路径, 例子../bin ./bin bin

绝对路径 也叫完整路径,例子/usr/local/bin/ 

三.shell基础语法 

Linux的指令基本都是下面的语法结构,遇到什么指令都不用慌了。

不带参数的:

        reboot、pwd、id、ls等都可以不接参数,不多

带参数的:

        命令 参数 目标

        ls -a -l -h /opt # 参数还可以合并为-alh

        rm -rf /opt/test1

        命令 源... 目标

        mv 源路径 目标路径

        cp

查看命令的参数: 命令 -h或者--help

        [root@test 11:12:02 /opt]#mv --help

        用法:mv [选项]... [-T] 源文件 目标文件

        或:mv [选项]... 源文件... 目录

        或:mv [选项]... -t 目录 源文件...

        #格式解释

        [选项] 可选的参数

        ... 可以有多个

我自己简单总结的:

格式1:不带参数的命令:

        reboot、pwd、id、ls等都可以不接参数,不多

格式2:带参数一个参数的指令:

        ls -l usermod -h 或者 usermod --help

格式3:带多个参数的指令:

        ls -a -l -h # 参数还可以合并为-alh

格式4:带参数带一个目标的指令

        ls -l /boot rm -rf /tmp/jaden # 注意:千万不要rm -rf /* 这是删除根目录的意思,或者 rm -rf /tmp/*,如果tmp目录不存在,也是删除根目录的意思。

格式5:命令带一个目标

        cd /tmp/ 

        ls /tmp/

        mkdir jaden useradd jaden

        ...

格式6:命令带多个源和目标

        cp jaden.txt /tmp/11.txt # cp 源1 目标1

        cp 1.txt 2.txt 3.txt /tmp # cp 源1 源2 源3 目标1

格式7:命令带多个参数、多个源和多个目标l

        s -a -l -h /tmp /root /opt

        cp -a -v /root /root2 # -v是显示拷贝过程的,-a 保留原文件属性的前提下复制文件 其他格式就不多说了。

tips:如果不记得命令了可以双击table可以找到这个开头的命令,双击是找命令,当只有一个匹配的时候单击就是补齐 

四.快捷键

Ctrl + a #光标跳转至正在输入的命令行的首部

Ctrl + e #光标跳转至正在输入的命令行的尾部

Ctrl + c #终止前台运行的程序,比如ping指令

Ctrl + d #在shell中,ctrl-d表示推出当前shell。

Ctrl + z #将任务暂停,挂至后台, 执行fg命令继续运行

Ctrl + l #清屏,和clear命令等效。

Ctrl + k #删除从光标到行末的所有字符

Ctrl + u #删除从光标到行首的所有字符

Ctrl + r #搜索历史命令, 利用关键字搜索

ctrl + w #光标往前删除一个参数,以空格为分割。

这些快捷键记住会让我们事半功倍

五.history历史命令 

#历史

history

例子1:

[root@test 14:32:10 ~]#history

        1 exit

        2 ls

        3 head -1 test03.txt

        4 head -1 test03.txt|cat

        5 head -1 test03.txt|tac

        6 head -2 test03.txt|tac

        7 head -2 test03.txt|cat

        8 ip addr

        9 ip addr|tail -4 1

        0 ip addr|tail -4|head -1

        ......

例子2:

#使用!调用历史命令

[root@test 14:32:10 ~]#history|head -5

        1 exit

        2 ls

        3 head -1 test03.txt

        4 head -1 test03.txt|cat

        5 head -1 test03.txt|tac

[root@test 14:32:26 ~]# !3

        head -1 test03.txt

head: 无法打开"test03.txt" 读取数据: 没有那个文件或目录 

#使用!调用mv开头的命令

[root@test 14:42:17 ~]#history

        1 ls -a -l .bash_history

        2 history

        3 ls

        4 history

        5 mv aaaaa.txt /tmp/

        6 history

[root@test 14:42:19 ~]#!mv # 按回车,会自动找最近一次执行的mv开头的指令

mv aaaaa.txt /tmp/

mv: 无法获取"aaaaa.txt" 的文件状态(stat): 没有那个文件或目录

例子4:

#清除历史记录

history -c # 这是清除内存中的历史指令

删除主文件夹下面.bash_history # 这是清除硬盘中的历史指令,内存中的指令会自动备份 到.bash_history中,但是有个延迟,退出登录之后,才会将历史指令同步到硬盘文件中

每个用户家目录下都有一个.bash_history,记录的是自己用户的历史指令。

.bash_history默认记录最近的1000条指令,通过echo $HISTSIZE可以查看,可以配置的更大或者更小一 些,vi /etc/profile,这个以后再说。

六.命令别名(花名) 

#别名

alias

# 比如:ls -l 直接可以写ll即可

例子1:

#查看别名

[root@test 15:23:17 ~]#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 --showtilde'

例子2:

#添加别名

[test1@test 15:24:23 ~]$alias rm='rm -i' # -i是提示警告信息用的

[test1@test 15:27:08 ~]$alias |grep rm

alias rm='rm -i'

或者:[test1@test 15:24:23 ~]$alias rm='echo 禁止使用删除操作'

例子3:

#取消别名

[test1@test 15:27:13 ~]$unalias ls

[test1@test 15:27:47 ~]$alias |grep ls

alias别名的优先级高于系统命令 别名一定要是可执行的,不能随便定义别名,比如jaden='aaaaaaa',执行jaden会报错,没有aaaaaaa这 个指令

例子4:

#alias永久生效

[root@localhost ~]# vi .bashrc

#空白处,增加一行

alias cip='ip addr|tail -4|head -1'

七.总结 

这个没啥好说的,作为最强最全的全家桶,这个做出来是让大家了解了解的,大家记住快捷指令就好了。 

 


网站公告

今日签到

点亮在社区的每一天
去签到