3.bash解释器与基础命令

1.系统文件与文件系统

1.1简介

系统文件: 操作系统的代码文件.(操作系统也是一款软件)
文件系统: 系统中文件的排列方式
	windows 硬盘分盘 有多个分区 有多个以盘符开始的路径
	Linux   有分区 但是只有一个目录,最大的目录称为根目录,用 '/' 标识.
	/---
		|-- /
    	|-- /

image-20211210100006066

[root@localhost ~]# cd /
[root@localhost /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

image-20211210100317628

1.2 排列方式

windows: D:\\file1\file2\a.txt
linux :  /home/file1/file2/a.txt 

1.3绝对路径与相对路径

绝对路径:从根目录开始,依次将各级子目录的名字组合的路径。
相对路径:不以根目录开始,以当前所在位置为参照物分路径。

2.shell 交互式环境

2.1shell

shell:Linux的解释器,解释输入命令的含义交由内核进行处理.
shell解释器有很多版本, 最常用的为bash解释器.

2.2basd解释器

在启动Linux系统后登入,默认直接进入bash解释器的交互式环境.
Last login: Fri Dec 10 08:39:09 2021 from 192.168.15.1
[root@localhost ~]# 
1.命令提示符的组成
命令提示符的组成有四部分: 
[root@localhost ~]#
  1      2      3 4
第一部分 root      为用户名称
 @         分割符号
第二部分 localhost 当前登入系统主机名称 之后会合理修改名称
第三部分 ~         当前进入的目录路径
第四部分 #         此时登入系统用户权限 
				 root管理员权限#  
				 非管理员权限$
2.修改命令提示
echo 命令在终端打印信息
[root@localhost ~]# echo 'hello word!'
hello word!
PS1 变量存储着 命令提示符的信息
$PS1 取这个变量内的值
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
\u用户名
\h主机名
\W路径
\$身份提示符
临时修改自定的信息,现在只是保存到变量中,写入文件才是永久修改.
PS1=[\u@kid \W]\$
[root@localhost ~]# PS1='[\u@kid \W]\$'
[root@kid ~]# # 重启就没了
3.特殊表示符
.     代表当前路径
..    代表上级路径  
../.. 上上级目录
~     当前登入用户的home目录
.-    上次所在目录 
/     代表根目录
隐藏文件以.开头例: .file1  
4.bash快捷键
tab       # 自动补齐 命令名称
ctrl + a  # 光标移动到命令行的起始位
ctrl + e  # 光标移动到命令行的末尾
ctrl + c  #  +z 终止当前运行的程序
ctrl + l  # 清屏

命令 !$     命令作用于上一个命令的最后一个操作对象
Esc + . :  上一条命令的最后一个元素

ctrl + u  # 将光标到行首信息剪切
ctrl + y  # 将剪切的内容进行粘贴
ctrl + k  # 将光标到行尾信息剪切

ctrl + s  # 锁定系统窗口信息状态 输入的信息被堆积,解锁执行.
ctrl + q  # 解锁系统窗口信息状态
ctrl + 方向键 <  >  # 命令行中快速移动光标
ctrl + u  
ctrl + y 

1

ctrl + k  ctrl + a 移动到开头
ctrl + y 

2

ctrl + 方向键 <  >  # 命令行中快速移动光标

4

2.3shell语法

命令 + 参数 + 操作对象
参数分:
长格式 --xxx
短格式 -x
某些操作支持缩写

2.4历史记录

history    # 查看历史执行过的命令,默认记录着1000(可调)
	在home目录下有一个.bash_history文件记录这些命令
history -c # 清除记录 
↑↓         # 上下按键,可翻找最近执行命令
10       #  执行历史命令中的第10

2.5起别名

alias                    # 查看当前使用别名的命令
alias 别名=ls /xxxx/xx   # 建立别名
unalias  别名            # 取消别名
# 默认的别名
[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'

2.6bash手册

 man 查询手册
 使用方法  man 命令 # 命令的详细描述和操作介绍
 man man           # 查看man命令的使用
 
 格式:
	man [需要查看帮助的命令]
	
		命令解释说明信息:NAME
		命令语法说明信息:SYNOPSIS 总览
		命令描述详细说明:DESCRIPTION 描述
		命令参数详细说明:OPTIONS 选择权

	q : 退出
	/[搜索内容]  搜索内容
	
命令详细文档:https://www.linuxcool.com/ 
命令 --help 命令的帮助信息,实例.
	简写 -h
help 命令 只能查看内置命令

2.7命令分类

系统命令分为两种:
内置命令: 系统安装已经存在的
外置命令: 需要安装第三方软件包

which 命令 查看命令存放路径:
(man help 中查看)
内置命令: 
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete,
       compopt, continue, declare, dirs, disown,  echo,  enable,  eval,  exec,  exit,  export,
       false,  fc,  fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile,
       popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt,  source,  suspend,
       test,  times,  trap,  true,  type,  typeset, ulimit, umask, unalias, unset, wait
# 查看命令存放的位置
[root@localhost ~]# which cd
/usr/bin/cd

3.关机&重启

3.1关机

系统关机命令: 
shutdown -h  --- 延迟关机(默认延迟一分钟)
shutdown -h 10   延迟10分钟后关机
shutdown -h now/0 立刻关机
shutdown -c  --- 取消关机/重启
poweroff / init0 关机


Linux是支持多用户同时操作,在一个人输入关机或重启的命令时,
会向其他用户发广播,通知关机的情况.只会延迟操作能被取消.
Shutdown scheduled for Thu 2021-12-09 21:43:36 CST, use 'shutdown -c' to cancel.

关机计划  2021-12-09 21:42:36 将进行可以使用  shutdown -c 命令 取消计划

shutdown -c

Broadcast message from root@localhost.localdomain (Thu 2021-12-09 21:42:39 CST):

The system shutdown has been cancelled at Thu 2021-12-09 21:43:39 CST!

广播消息来自root@localhost.localdomain 
系统关机已于2021-12-09星期四21:43:39  shutdown -c 取消!

3.2重启

系统重启命令:
shutdown -r  --- 延迟重启(默认延迟一分钟)
shutdown -r 10   延迟10分钟后重启
shutdown -r now/0 立刻重启
reboot / init 6

4.启动级别

4.1init介绍

init是Linux系统操作中不可缺少的程序之一。
  所谓的init进程,它是一个由内核启动的用户级进程。
  内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。
  内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

4.2级别

init一共分为7个级别,这7个级别的所代表的含义如下
0:停机或者关机(千万不能将initdefault设置为0
1:单用户模式,只root用户进行维护
2:多用户模式,不能使用NFS(Net File System)
3:完全多用户模式(标准的运行级别)
4:安全模式
5:图形化(即图形界面)
6:重启(千万不要把initdefault设置为6

5.系统服务

systemctl  --- 管理系统服务程序
systemctl start    服务程序名称  --- 启动服务
systemctl restart  服务程序名称  --- 重启服务
systemctl stop     服务程序名称  --- 停止服务
systemctl status   服务程序名称  --- 查看服务状态

6.路径相关

pwd  # 查看当前路径
ls   # 查看当前路径的文件和文件夹
	参数:
		-a 显示隐藏文件
		-l 详细信息 --> 可简写为 ll
		-F 区分文件和目录 名字带/为目录  @链接文件 没有带东西为文件		
			Linux中的链接相当于快捷方式。
		-R 选项列出单前目录下包含的子目录文件
cd   # 切换路径
	cd 回车 == cd ~
# pwd 查看当前目录
[root@localhost ~]# pwd  
/root
# cd 切换到根目录
[root@localhost ~]# cd /
[root@localhost /]# 
# ls 查看当前目录下的文件及文件夹
[root@localhost /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
# -a 每个目录下都有 . .. 隐藏着
[root@localhost /]# ls -a
.   bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
..  boot  etc  lib   media  opt  root  sbin  sys  usr

image-20211210113856118

# 判断目录时候存在 ls 文件名称
	
[root@localhost /]# ls bb
ls: cannot access bb: No such file or directory
# ll 查看详细信息
[root@localhost /]# ll
total 16 <--- 总数
lrwxrwxrwx.   1 root root    7 Dec  9 15:30 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Dec  9 15:37 boot
drwxr-xr-x.  19 root root 3080 Dec  9 18:29 dev
.......
ll命令结果说明

dr-xr-xr-x.   5 root root 4096 Dec  9 15:37 boot

第一个栏位,表示文件的属性。
Linux的文件基本上分为三个属性:
可读(r),可写(w),可执行(x)。

这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。
第一个字母表示文件类型,
”-”,普通文件.
”d”目录,字母”d”,是dirtectory(目录)的缩写.
“l”符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息.
“b”块设备文件。
“c”字符设备文件。
# -F 选项区分目录和文件 
# Linux中的链接相当于快捷方式。
[root@localhost /]# ls -F
bin@   dev/  home/  lib64@  mnt/  proc/  run/   srv/  tmp/  var/
boot/  etc/  lib@   media/  opt/  root/  sbin@  sys/  usr/
# -R 选项列出单前目录下包含的子目录文件,太长了不演示了,文件太多,程序运行时间长,可以通过,ctrl + c 结束程序

7.创建目录和删除目录

7.1创建目录

madir  # 创建目录
makir 文件名称  创建指定目录
	-p  递归创建目录(创建多级目录)
	makir 文件名称/文件名称/...	
	-v 显示文件夹创建过程
[root@localhost /]# cd
[root@localhost ~]# ls
anaconda-ks.cfg
# makir 文件名称
[root@localhost ~]# mkdir aaa
[root@localhost ~]# ls
aaa  anaconda-ks.cfg
# 创建多级目录
[root@localhost ~]# mkdir -p b/c/d
[root@localhost ~]# mkdir -v notes
mkdir: created directory ‘notes’
[root@localhost ~]# ls
anaconda-ks.cfg   notes
# 安装tree 查看目录树
[root@localhost ~] yum -y install tree
[root@localhost ~]# tree
.
├── aaa
├── anaconda-ks.cfg
└── b
    └── c
        └── d
4 directories, 1 file
案例:在c目录下操作上级目录创建文件夹.
mkdir ../xxx
# 先进制c目录
[root@localhost ~]# cd b/c
[root@localhost c]# pwd
/root/b/c
[root@localhost c]# mkdir ../notes
#
[root@localhost c]# cd ../..
[root@localhost ~]# tree
.
├── aaa
├── anaconda-ks.cfg
└── b
    ├── c
    │   └── d
    └── notes
5 directories, 1 file

7.2删除文件

删除文件有两种方式:
* 删除数据属于危险操作 一般不会删除文件 
* 把文件移动到一个指定的垃圾文件夹中
1.物理删除:直接删除文件
2.逻辑删除:将文件隐藏,没有直接删除
rmdir 删除空目录
rmdir 目录名称 删除指定目录  

rm  物理删除的命令
格式:
	rm [参数] [需要删除文件的路径]
参数:
	-f : 不提示直接删除
	-r : 递归删除目录及其内容
	-i : 每次移除前提示
[root@localhost ~]# ls
aaa          b          anaconda-ks.cfg  
[root@localhost ~]# rmdir aaa
[root@localhost ~]# rmdir b
rmdir: failed to remove ‘b’: Directory not empty
删除 "b" 失败: 目录非空
# 删除目录和文件
[root@localhost ~]# rm  -rf b
[root@localhost ~]# tree
.
└── anaconda-ks.cfg
0 directories, 1 file
补充:
	在linux系统中,不能够直接删除文件夹。
	linux系统中禁止使用:rm -rf /*

解决rm命令误操作
	将rm命令改一个名称。

8.文件相关

8.1创建文件

touch 文件名 # 创建文件
* Linux 文件可以没有后缀.
# touch 创建文件
[root@localhost ~]# touch a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt

8.2文件查看


cat        一次性查看文件
less      逐行逐页查看 (推荐)
more      逐行逐页查看 (显示进度条)
head -n   只看文件的前n行,默认10
tail -n   只看文件的后n行,默认10
cat >> 文件名字 << EOF
编辑文件
输入文本 输入EFO 结尾按选回车结束编辑
[root@localhost ~]# cat >> a.txt << EOF
> 你好
> 你好2
> EOF
[root@localhost ~]# cat a.txt
xxx
你好
你好2
[root@localhost ~]#

8.3复写文件

echo 打印echo后面的字符串
echo 字符串 > 文件    先将文件内容情况再将字符串追加到文件中
# 追加信息到 a.txt 文件中
[root@localhost ~]# echo xxx > a.txt
# 查看文件内容
[root@localhost ~]# cat a.txt
xxx
[root@localhost ~]# echo xxx > a.txt
[root@localhost ~]# cat a.txt
xxx

8.4追加文本

echo 字符串 >> 文件    在文件内容末尾换行再追加字符串
# 追加信息
[root@localhost ~]# echo aaa >> a.txt
[root@localhost ~]# cat a.txt
xxx
aaa

10.移动文件

移动的命令想当剪切
格式:
	mv [文件原路径] [文件新路径]
# 移动文件
[root@localhost ~]# ls
aaa  anaconda-ks.cfg  a.txt  b
[root@localhost ~]# mv aaa b/
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  b
[root@localhost ~]# cd b
[root@localhost b]# ls
aaa  c  notes
# 移动到回原来的位置
[root@localhost b]# mv aaa ../
[root@localhost b]# ls
c  notes
[root@localhost b]# cd -
/root
[root@localhost ~]# ls
aaa  anaconda-ks.cfg  a.txt  b

10.复制文件

* 在Linux中,文件夹是不可以直接复制。
cp 命令 复制文件 cp的缩写copy
格式:
	cd [参数] [被复制文件的路径] [复制到某个位置]
参数:
	-r : 递归复制。
	-a : 保证某些属性不变。
	stat 命令: 查看文件详细属性。
[root@localhost ~]# ls
aaa  anaconda-ks.cfg  a.txt  bbb
[root@localhost ~]# cp aaa bbb/
# 无法直接移动目录 加-r
cp: omitting directory ‘aaa’
[root@localhost ~]# cp -r aaa bbb/
[root@localhost ~]# stat aaa
...
Access: 2021-12-11 12:08:13.849890186 +0800
Modify: 2021-12-11 12:07:30.725699450 +0800
Change: 2021-12-11 12:07:30.725699450 +0800

 
 [root@localhost ~]# stat bbb/aaa
...
Access: 2021-12-11 12:08:13.849890186 +0800
Modify: 2021-12-11 12:08:13.849890186 +0800
Change: 2021-12-11 12:08:13.849890186 +0800


[root@localhost ~]# mkdir ccc
[root@localhost ~]# cp -ra aaa ccc/
[root@localhost ~]# stat ccc/aaa
...
Access: 2021-12-11 12:08:13.849890186 +0800
Modify: 2021-12-11 12:07:30.725699450 +0800
Change: 2021-12-11 12:17:22.032332929 +0800

image-20211211122011051

猜你喜欢

转载自blog.csdn.net/qq_46137324/article/details/121860405
今日推荐