Linux-shell

发布时间 2023-07-27 20:33:09作者: 雀雀飞了

1 shell

############# shell是什么
-Bash Shell是一个命令解释器(python解释器),它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕
-没有图形化界面了
-远程链接工具,链接上,就打开了一个shell窗口,可以输入命令

-进入和退出
    bash
    exit

#############shell 能干什么
使用Shell实现对Linux系统的大部分管理,例如:
1.文件管理(文件创建,移动,复制,删除,编辑…)
2.权限管理(不同用户不通权限)
3.用户管理(创建,删除….)
4.磁盘管理(挂载)
5.网络管理
6.软件管理
原来win上通过 点点点  完成的操作,现在都用bash命令来操作


#############shell 如何使用
	1 直接输入命令 –> 效率低 –>适合少量的工作
    	ls
        pwd
    2 Shell Script(shell 脚本) –> 效率高–>适合复杂重复性的工作
    	-django项目部署:
        	uwsgi -x xx.xml
            celery work,beat
            
        -vi test.sh
        for i in {1..100}
        do
         echo "create test$i"
        done
        -方式一:chmod +x test.sh   #加入执行权限
        	./test.sh   # 可以执行
        -方式二:
        	bash test.sh
#############Shell提示符
	### 1 [root@lqz ~]#   解释
    root:用户
    @:没有含义
    lqz:主机名
    ~ :路径,用户家路径,root用户家路径是  /root
    # : 超级用户
    $ :普通用户

    
    ### 2 主机名
    	hostname  # 查看主机名
    
    ### 3 创建用户(先听)
    	useradd lqz  # 在/home 路径下创建一个根用户同名的文件夹--->这个用户家路径
        passwd lqz   # 给用户设置密码
        #使用lqz登录 ---》final-shell重新使用lqz链接
        # root用户链接了,切换成lqz用户
        	su 用户名  # 要不要输入密码,取决于你是谁
          
   ### 4  whoami
	看我是谁

Shell基础语法

# 格式
#命令      选项       参数
command [-options] [arguments]

# 以ls命令为例
	ls -a
    ls --all
    ls -al  # 等同于  ls -l  等同于  ll
    ls -al /home
# 必须以命令开头,选择和参数,可以有,也可以没有



shell 补全

# 敲了命令,按tab,如果有多种选择,都会列出来,如果没有了,只有这一个,直接补齐

# 查看本机ip
	ip addr
# 使用 ifconfig:找不到,外部命令,第三方软件支持        win:ipconfig
	yum install net-tools -y
    ifconfig # 查看ip了
    
    
    
    
    
# 问题:
	-刚刚不能上网了----》dns有问题---》解决:加了个dns2
    -把yum源改成了阿里云的源----》
    	/etc/yum.repos.d
		http://mirrors.aliyun.com/repo/Centos-7.repo   # 下载Centos-7.repo 放在这个路径下即可
         yum clean all
		yum makecache

shell命令快捷键

Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e    #光标跳转至正在输入的命令行的尾部
Ctrl + c    #终止前台运行的程序
Ctrl + z    #将任务暂停,挂至后台
Ctrl + l    #清屏,和clear命令等效。  
Ctrl + k    #删除从光标到行末的所有字符
Ctrl + u    #删除从光标到行首的所有字符
Ctrl + r    #搜索历史命令, 利用关键字,Tab建选中
Ctrl + w    #按单词或空格进行向前删除
Ctrl + 左右建 #按单词或空格进行向前向后跳

#在命令行前加面加 "#" 则该命令不会被执行

命令History

# history 可以查看命令历史
# 使用上下键可以快速选择之前执行过的命令
# !!  执行上一条命令
# !数字  执行history历史中第 数字  行的命令
# !yum   最近一次的yum命令
# history -d 100  删除第100条历史记录
# history -c      清空记录(保存到文件中的还有)
# history -w      保存历史集合,保存到当前用户的家目录 .bash_history
# > .bash_history  清空文件的保存(操作完,不让别人看你执行的命令)

命令别名

# 设置别名
alias xx='ls -al'  # 以后敲xx等同于ls -al
alias lqz='ifconfig'

#取消别名
unalias lqz

# 上述操作只在当前会话生效,永久生效
echo "alias lqz=ls -al" >> /etc/bashrc  # 所有人都生效
echo "alias lqz=ls -al" >> /root/bashrc #只针对于root

Shell获取帮助

# 命令 --help  提示你怎么用

# man ls 
q退出
空格翻页,上下键翻页

内部命令,什么是外部命令

# 内部命令
	linux内置的命令  ls    pwd
# 外部命令 --第三方软件支持的
	ifconfig
    
    
    
# type -a pwd   查看是内部还是外部


# yum provides ifconfig

# 查看环境变量---》任意路径敲命令,都能找到,命令在环境变量中
echo $PATH  #用 : 分割

# 外部命令,一般都在 :/usr/sbin/

外置命令内存缓存

如果是外置命令还会涉及到一个内存缓存,也就是说,当我们出现重复执行相同的命令,会通过缓存调取执行,也就意味着不会搜索PATH路径

2 文件管理

2.1 系统目录结构

# Windows: 以多根的方式组织文件 C: D:
# Linux:以单根的方式组织文件 /

##### 1.存放命令相关的目录
/bin, 普通用户使用的命令 /bin/ls, /bin/date
/sbin,管理员使用的命令 /sbin/service,poweroff,useradd…

只要看到bin路径,就应该意识到放的是可执行文件
# which 命令名
# whereis 命令名  更全


####2 存放用户相关数据的家目录,比如:windows不同的用户登陆系统显示的桌面背景不一样

/home,普通用户的家目录, 默认为/home/lqz

环境变量的东西不要删,删掉试一下

/root,超级管理员root的家目录, 普通用户无权操作

#####3.系统文件目录
/usr,相当于C:Windows
/usr/local,软件安装的目录,相当于C:Program
/usr/bin/,普通用户使用的应用程序(重要)
/usr/sbin,管理员使用的应用程序(重要)
/usr/lib,库文件Glibc 32bit
/usr/lib64,库文件Glibc 64bit

# 补充:动态链接库文件
	-win上能看到  xx.dll
    -linux上能看到  xx.so
    -c,c++编写过后,编译后会产生两种东西
    	-可执行文件
        -动态链接库问题


###4 启动目录
/boot 存放的系统启动相关的文件,例如:kernel,grub(引导装载程序)
linux内核+GUN软件

#### 5.配置文件目录
/etc,极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-,网络配置文件
/etc/hostname,系统主机名配置文件,主机名很重要,有些特殊服务要依赖主机名,没有主机名会报错起不来;修改了要重启:reboot
/etc/resolv.conf,dns客户端配置文件,域名解析服务器,一般我们不配置,因为网卡的配置好了,会覆盖掉它,网卡的优先级高
/etc/hosts,本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析

/etc/motd :登录后显示的信息

#### 6 可变的目录与临时目录
/var,存放一些变化文件,比如/var/log/下的日志文件,登陆日志
/var/tmp,进程产生的临时文件
/tmp,系统临时目录(类似于公共厕所),谁都可以使用
# 1 查看登陆日志
cat /var/log/secure #查看登陆时间
# 2 进程产生的临时文件(360清理垃圾,就是会清理)

##### 7.设备目录文件
/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能源源不断的产生数据,类似于取款机,随时随地取钱


###8.虚拟的文件系统(如对应的进程停止则/proc下对应目录则会被删除)
/proc,反映系统当前进程的实时状态 :process
PS:类似于小汽车的仪表板,能够看到汽车是否有故障,或者是否缺油了

ls /proc # 可以看到很多id号,pid号,进程号,唯一
ls 进程id号的文件夹
如果进程被关闭,id号的文件夹就没了
id号每次启动都不唯一,只有一个进程唯一,systemd 是进程号1的进程,所有进程都是基于它派生出来的

###### 9其他
#1 media:提供设备的挂载点,媒体文件
# linux 新增了盘符,需要手动挂载
# 把光盘里的数据,挂载到media目录
mount  /dev/cdrom /media/

# 2 mnt:提供设备的挂载点(同上)

# 3 opt:第三方工具,第三方软件默认安装的(mysql...)

# run :下有pid,log结尾的文件
ls /run
cat sshd.pid  # 进程运行的pid号,放在文件中
ps aux |grep sshd

# .lock文件的作用,锁机制
# 假设现在执行
yum install tree
# 再开一个窗口执行相同命令
yum install tree
'''
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  71 M RSS (470 MB VSZ)
    Started: Tue Aug 18 00:26:31 2020 - 00:24 ago
    State  : Sleeping, pid: 6191
'''
cat /run/yum.pid

参考文件:https://www.cnblogs.com/liuqingzheng/articles/17558867.html