基础_有关bash 及特性

一,bash介绍

bash shell 命令解释器,是内核和用户的交互

用于文件管理、目录管理、网络管理、用户管理、权限管理、磁盘管理、软件管理

--------通俗来说它就是个软件即应用程序,计算机的三大体系结构:应用程序、操作系统、硬件;操作系统+硬件=平台,在此平台上开发应用程序,应用程序在不用的操作系统运行即跨平台;操作系统的内核用来控制和管理硬件,同时为应用程序提供接口,所以它是内核和用户的交互。

执行方式:命令   /   脚本

命令:适合少量的工作,效率低

脚本:shell编程,适合复杂性的工作,效率高


二,命令行结构

[root@babysnow ~]#               管理员的命令行结构

[test@babysnow ~]$                普通用户的命令行结构

[   ]    括号的作用

root   本身就是超级管理用户 所在位置是当前登录用户

@      分隔符

babysnow    当前系统的主机名

~        当前用户的家目录

#         超级管理员命令提示符

$         普通用户命令提示符


三, Linux的命令组成

语法:

命令                 -【选项】       参数

command          -option           arguements

1,命令是整条shell命令的主题

2,选项是用来调节命令的具体功能

3,参数是命令要操作的对象,文件或目录

4,中括号中的选项或者参数,可有可无

5,命令,选项及参数两两之间至少要有一个空格分割

6,命令的位置不能发生变化,选项和参数可以调换



命令

[root@babysnow ~]# ls

anaconda-ks.cfg


命令+选项

[root@babysnow ~]# ls -l

总用量 4

-rw-------. 1 root root 1190 7月  18 00:36 anaconda-ks.cfg


命令+选项+参数

[root@babysnow ~]# ls -l /root/

总用量 4

-rw-------. 1 root root 1190 7月  18 00:36 anaconda-ks.cfg


选项:

引导格式,用横杠“-”表示单个字符 例如 -l

引导长格式,用长横杠“--”表示多个字符,基本上都是一个单词,比如 --help

使用多个横杠可以组合, -h -l -a,组合成-ahl(顺序都可以)



常见命令报错及解决

[root@babysnow ~]# ls-l

-bash: ls-l: 未找到命令               

报错解决:

1,命令行写错了

2,命令没有写错,系统没有安装这个命令,需要安装才能使用

(此处因为命令与选项之间没有空格)


[root@babysnow ~]# ls -l /toor

ls: 无法访问/toor: 没有那个文件或目录

解决:

1,文件或者目录名称写错了

2,路径记错了

                 电脑报错那就是错了,believe in computer,仔细检查~~~


四, bash特征

               yum install -y bash-completion      下载bash命令补全                

1,tab键盘补全

命令补全

us

useradd      usermod      users        usx2yloader

userdel      usernetctl  usleep


选项补全

参数补全  文件的路径补全


2, 快捷键

control c  取消当前的设置

control d  退出当前登陆用户,系统帮助执行一个命令 logout

control l    清屏

control a  将光标移动到当前行的行首

control e  将光标移动到当前行的行尾

control 左右方向键    向左/右移动一组字符 (mac本不支持)

control u    剪切光标及前面的所有内容(删除整行)

control y    粘贴(粘贴剪切的内容)

control k    删除光标后面的内容

control w  删除一组字符串 从后往前删

delete        从前往后删除字符(小键盘里的delete,mac本不支持)

control r    搜索历史命令

control s  锁定屏幕 输入的操作也会执行 只是看不到

control q  解锁

esc.          获取上一条命令的最后的参数

!!          执行上一条命令

!ls            执行最近一次以ls开头的命令


3, 命令历史记录

history  记录所有执行过的命令

! 24    执行历史记录中第24条命令

-d  删除指定的一条历史记录

-w  将历史记录写入文件中 ,默认写到.bash_history里

-c  清除历史记录


4, alias 查看系统所设置的别名

[root@babysnow ~]# 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'

                         自己设置别名alias zx=‘cat .bash_history’ 只能当前临时生效


5, 获取命令的帮助方法

    1,man ls (man + 命令名字)

        获取命令的帮助及语法

    2,help  只能查看系统的内置命令

    3,--help    有的命令不支持 ,基本上选项帮助

          [root@babysnow ~]# ls --help

    4,info  非常详细的显示命令的说明信息

          [root@babysnow ~]#info ls显示的很高级但是看不懂...

    5, 网络 帮助 https://man.linuxde.net/

                  linux.web3.xin


6,关机重启及注销命令

关机

shutdown -h 0/now    立刻关机(0或者now)

shuedown -h 10          10分钟后关机  (单位默认分钟)

shuedown -h  11:40    定时关机

shutdown -c                取消关机时间设置

poweroff                      关机

systemctl poweroff    centos 6要求的

halt                              只关闭系统,不关闭电源

halt -p  (poweroff) 所有都关掉包括电源

init 0                    通过运行级别进行关机(后期会讲到级别)


重启

shutdown -r  0          立刻开机

shutdown -r  now    立刻开机

shutdown -r  10        10分钟后开机

shutdown -r  11:40  定点重启

shutdown -c            取消重启或关机的操作

reboot                        重启

init 6                          运行级别进行重启


注销

logout      退出当前登陆的用户  (只能退出登陆式shell,用户名和密码的方式)

control d  快捷键退出指令

exit            退出当前退路的用户或窗口(可以退出非登陆式shell,脚本就是非登陆式shell)


7,获取IP的命令

ip (centos7自带的)

ip a :(address)获取所有网卡的信息

ip a s ens33 (ip addres show ens33):查看某个网卡的信息

ifconfig :(安装命令 yum install  -y  net-tools)

                    [root@babysnow ~]# ifconfig ens33

hostname -i :显示ipv6  ipv4 地址  (mac本不支持)

hostname -I:显示外网的网址

curl ifconfig.me: 获取公网的地址,...等等其他命令可百度



8, 系统目录结构


windows 目录结构

C:\windows\user

D:\download


Linux的目录结构

所有的的目录的起点或者顶点都是根 /  类似于倒挂的树形结构

Linux中必须知道必须会的文件或目录

[root@babysnow ~]# ls -1 /

四个软连接文件

都在/usr/这个目录下面

bin    :普通用户可以使用的命令 软连接

sbin  :管理员可以使用的命令

lib      : 库文件 32位的库文件

lib64  :64位的库文件


boot  :系统启动引导目录 存放的是系统启动文件

dev    :设备目录


/dev/cdrom  -> sro 系统的光盘镜像设备

=

/dev/sr0


/dev/zero :产生字符设备的目录 源源不断的产生字符

/dev/null  : 黑洞设备 垃圾回收站 回收的数据

/dev/random : 产生随机数的设备 $RANDOM

/dev/pts        : 所有的终端目录

/dev/stderr    :错误输出设备

/dev/stdin  :标准输入

/dev/stout    :标准输出

/dev/sda        :第一块物理磁盘

/dev/sda 1    :第一个分区

/dev/sda 2    :第二个分区

/dev/sda 3    :第三个分区


/etc  非常重要 系统的配置目录 存放配置文件

etc/sysconfig/network-scripts/ifcfg-* 网卡配置文件 ,后面加上自己网卡信息


/etc/hostname    主机名配置文件

/etc/resolv.conf  本地DNS配置文件

/etc/hosts    主机名与IP的映射关系目录 本地域名解析文件

/etc/fstab    系统挂载目录 开机自启动挂载列表

/etc/passed  系统用户文件 所有的用户设备


/home  所有普通用户的家目录  /hone/test

/media  临时挂载目录 可移动设备

/mnt      临时挂载目录 光盘镜像挂载到这里

/opt        早期第三方的软件安装目录

/proc      实时反映进程运行时的状态  仪表盘

/root  管理用户root的家目录

/run    进程运行时产生的pid文件

/srv      物理设备的相关文件

/sys      物理设备的相关驱动信息

/tmp      公共目录  所有的用户都可以在这里管理自己的文件

          (一定时间不妨问,系统会定时清理目录下的文件)

/usr            相当于windows目录  系统程序目录

/usr/local  软件安装目录


/var      可变的目录  日志

/var/log    系统日志目录

/var/log/messages  系统级别的日志

/var/log/secure        用户登陆日志

/var/tmp                    进程运行时产生的临时文件

/var/run                      进程运行时产生的pid文件


定位:

包含完整的文件名称及位置信息,路径,就是系统对文件的一种定位方式


绝对路径 : 完整的路径

                  所有以根开始或者以~开始  都是绝对路径             

[root@babysnow ~]# ll /etc/hosts

-rw-r--r--. 1 root root 158 6月  7 2013 /etc/hosts


相对路径  : 不是以根或者~为开头的 就是相对路径

[root@babysnow etc]# ll hosts

-rw-r--r--. 1 root root 158 6月  7 2013 hosts

点 .      表示当前目录

点点 ..  表示当前目录的上一级目录



9,基础管理命令

1,pwd 显示当前的目录

[root@babysnow ~]# pwd

/root

以绝对目录的形式显示所在的位置 所在的目录路径

2,cd  切换目录路径

cd  或 cd~  cd /root  :切换当前用户家目录

cd /    切换到跟目录

cd .    保持原位置不动

cd ..    切换到当前目录的上一级目录

cd -    返回到上一次所在的目录

[root@babysnow ~]# cd /opt

[root@babysnow opt]# cd -

/root


3, ls 列出目录的列表信息

选项:

ls 直接用,针对当前目录进行操作

ls -l := ll (系统别名)以长格式形式显示目录列表信息


ls -a :显示所有文件 ,包括隐藏文件,以.为开头的文件都是隐藏文件

[root@babysnow ~]# ll -a

总用量 28

dr-xr-x---.  2 root root  135 7月  18 01:12 .

dr-xr-xr-x. 17 root root  224 7月  18 00:35 ..

-rw-------.  1 root root 1190 7月  18 00:36 anaconda-ks.cfg

-rw-------.  1 root root  500 7月  18 14:55 .bash_history

-rw-r--r--.  1 root root  18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc


ls -i :显示文件的inode号,即索引节点

ll -d: 显示目录本身信息

[root@babysnow ~]# ll -d /etc

drwxr-xr-x. 73 root root 8192 7月  18 15:43 /etc

ll -h : 以字节大小格式显示文件大小

ll -S: 以文件大小的方式进行排序显示

ll -t :根据时间进行排序

ll -r :  倒叙排序

ll -F:给不同文件加上不同的标识符

          / :    表示的是目录

          * :可执行的文件

          = :socket 文件 套接字文件

          |  :管道文件

          @:普通文件 ,不显示

ls -1 :把文件名按照行的形式显示


4, tree 树形结构显示目录列表

      yum install -y tree 安装tree命令


选项:

tree -a : 显示所有文件,包括隐藏文件

tree -d : 只显示目录文件

tree -f : 以绝对路径的形式记录文件的路径

tree -F: 给不同的文件加上不同的标识符

tree -L: 指定显示目录的层级


5, mkdir  创建目录


mkdir -v  显示创建过程

mkdir -p  创建多级目录 目录存在时不会再次创建也不会报错

mkdir -m  创建目录时修改目录默认权限

mkdir { }    花括号里生存序列

[root@babysnow ~]# echo {1..10}

1 2 3 4 5 6 7 8 9 10

注意,与..的区别;有序的用.. ;无序的用逗号



6,touch  创建文件  创建的是空文件

文件存在时,不会报错,会修改文件创建时间

  《在Linux系统中,一切皆文件》

Linux系统中区分大小写,    windows中不区分大小写

[root@babysnow ~]# touch test{1..5}

[root@babysnow ~]# ll /root

总用量 4

-rw-------. 1 root root 1190 7月  18 00:36 anaconda-ks.cfg

-rw-r--r--. 1 root root    0 7月  18 17:49 test1

-rw-r--r--. 1 root root    0 7月  18 17:49 test2

-rw-r--r--. 1 root root    0 7月  18 17:49 test3

-rw-r--r--. 1 root root    0 7月  18 17:49 test4

-rw-r--r--. 1 root root    0 7月  18 17:49 test5


7, cp 复制  拷贝

选项:

cp -r  递归拷贝,拷贝目录,否则拷贝不了目录

cp -p 拷贝的时候保持属性信息

cp -d  复制的时候保持软连接  否则默认拷贝的是源文件

cp -a  即-rdp

当文件已经存在时,提示是否覆盖

cp -i  当文件存在时提示是否覆盖 系统自在别名

命令行前加\  取消别名\cp -i 便会提醒是否覆盖

cp -t  把源文件和目标目录的位置进行替换


8, mv 移动 重命名文件夹

      移动目录,不会报错

      在移动的过程中重命名文件

mv -i  文件存在时 提示是否覆盖

mv -t 把源文件目标目录的位置进行替换

mv -f 强制覆盖,不会提示是否覆盖


9, rm 删除命令  非常危险的命令

选项:

rm -i : 删除时提示 是否确认删除

rm -f:强制删除

rm -r:递归删除 ,删除目录时候需要用上

删除所有 * (通配符,所有的意思)  rm -rf ./* 删除当前目录下的所有 不包含隐藏文件



10,显示文件内容命令

1, echo  :讲你想要的内容输出到屏幕上面 ;创建文件 ;打印变量 ;输出颜色 ; 改变文件内容

[root@babysnow ~]# echo hello

hello

[root@babysnow ~]# echo 'hello'

hello

[root@babysnow ~]# echo "hello"

hello

echo -n : 不自动换行

echo -e :支持特殊字符

            \n

[root@babysnow ~]# echo -e "hello\nihao"

hello

ihao

              \t  tab键 (空格及改变引号不影响)

[root@babysnow ~]# echo -e "hello\tnihao"

hello nihao

[root@babysnow ~]# echo -e "hello \t nihao"

hello  nihao

[root@babysnow ~]# echo -e 'hello \t nihao'

hello  nihao

> 标准输出重定向 如果文件存在,会清空文件内容 在将你输出的内容重定向进去

>> 标准输出追加重定向  如果文件存在,不会清空文件的内容 会将你的内容追加文件的底部

2,cat 显示文件内容的命令  完整的显示一个文件的内容

    创建/合并文件

选项:

cat -n : 显示行号

cat -A : 给每行结尾加上标识符 (如果有空行 会容易识别出)

创建新文件,EOF可以是其他字符

[root@babysnow ~]# cat >aaa<

> 123

> 345

> EOF

[root@babysnow ~]# cat aaa

123

345

[root@babysnow ~]# cat bbb

345

678

890

合并文件

[root@babysnow ~]# cat aaa bbb

123

345

345

678

890

[root@babysnow ~]# cat aaa bbb >ccc

[root@babysnow ~]# cat ccc

123

345

345

678

890

如果cat aaa bbb >>ccc ,就是把aaa 和bbb的内容重复到ccc

[root@babysnow ~]# cat aaa bbb >>ccc

[root@babysnow ~]# cat ccc

123

345

345

678

890

123

345

345

678

890



3, more 分页显示文件内容,文件显示内容后会自动退出

内部指令

空格或者f键  向下翻页

b键                  向上翻页

回车键            向下一行

q                          退出

h                        指令帮助

=                        当前光标所在的行号

/内容                  搜索要过滤的内容 没有高亮显示

                    n      向下搜索 不能向上

选项:

more -5  指定一页显示5行

more +5  从第五行开始显示



4,less  分页显示文件内容 文件内容显示完后不会自动退出

内部指令

空格或者f键  向下翻页

b键                  向上翻页

回车键            向下一行

q                          退出

h                        指令帮助

=                      显示当前页从第几行到第几行 总共多少行

                  显示到此页,已经显示了多少字节 子节多少 显示的进度

/内容            搜索要搜索的内容会高亮显示

            n 向下查找

            N 向上查找

选项:

less -N  显示行号

less -i      搜索到时候,忽略大小写



5, head  显示文件头部信息 默认显示前十行

选项:

head -n : 取消默认输出

head -n 2或 head -2 :显示前两行

head -c :取出一个文件开头的字符,默认5个字符


6, tail 显示文件尾部信息 默认显示最后十行内容

选项:

tail -n 1 或者tail -1  显示最后一行内容

tail -c :取出文件的最后几个字符,默认5个字符(注意换行符也算一个字符)

tail -f :实时查看文件内容的底部变化  查看日志

tail -F:实时查看文件内容的底部变化  文件不存在时 会一直搜索到有为止

7, tailf  实时查看文件内容的变化 = tail -f

  当文件内容没有变化时,不会去读区磁盘,减少磁盘的读写

选项:

tailf -n :取消默认输出


11, 文件查找命令

1,locate  根据本地的数据库表进行查找文件 系统每天更新一次

yum  install  -y  mlocate

updatedb  更新数据库,每次手动更新

locate选项:

-i  搜索到忽略大小写

-r 简单运行正则表达式


2, whereis 查找系统的二进制文件以及说明文件和源代码文件 (只查找系统自带的)

选项:

-b:只查找二进制文件

-m:只查找说明文件

-s:只查找源代码文件


3,which 查找命令的绝对路径


4,  type 显示命令类型  (内部或外部命令

选项:

-a :显示内置命令的路径

-p : 只显示命令的绝对路径(如果是外部命令的话)


5, find 查找文件

选项:

-type 根据文件类型查找

        f 普通文件

        d 目录

        l 软连接

-name  根据文件名称查找

            "hostname"  精确查找

            "*hostname" 以hostname为结尾

            "hostname*"  以hostname为开头

            "*hostname*" 文件包含hostname

-iname  忽略大小写


12, 文件的上传与下载

本地的上传与下载  yum install  -y  lrzsz  (Mac本不能使用)

1,rz  从windows中上传到Linux中,不能上传目录,不能上传大于4G的文件

rz -E :文件已经存在时,进行接着上传,重命名,在文件后面加上点数字

2, sz下载

mac本:

scp  -rp  /etc/hosts  [email protected]:/opt

scp  -rp    [email protected]:/etc/hosts    /opt/下载到linux系统上

3, wget 联网从远程下载

-q  静默输出 不显示下载过程

-O  指定下载的路径和名称

--limit-rate =10k  限速

4, curl  通过url规则进行文件传输的  测试网址

选项:

-I  获取网站请求的头部信息

-s 静默输出

-o 把要下载的内容输入到指定的文件当中

你可能感兴趣的:(基础_有关bash 及特性)