(0基础学Linux系列)1.09 Bash基础

Posted 老男孩oldboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(0基础学Linux系列)1.09 Bash基础相关的知识,希望对你有一定的参考价值。

1.1 命令行提示符

[root@oldboyedu ~]# 

[root :命令行提示符@前面的字符代表当前登录的用户(可用whoami查询)

# 检查当前用户:
[root@oldboyedu ~]# whoami
root

@ 表示分隔符

oldboyedu,@后面的为主机名(可用hostname查询),
# 检查主机名:
[root@oldboyedu ~]# hostname
oldboyedu

~所在的位置,是窗口当前用户所在的路径(可用pwd查询)。
# 检查当前路径:
[root@oldboyedu ~]# pwd
/root
~ 表示用户家目录所在路径/root

]# 提示符,#号是管理员的提示符,root用户提示符,root皇帝。
# $ 提示符是普通用户提示符。一般大臣,布衣。
# 切换普通用户:
[root@oldboyedu ~]# su - oldboy #切换到普通用户oldboy下
[oldboy@oldboy ~]$ whoami
oldboy
[oldboy@oldboy ~]$ pwd
/home/oldboy ##普通用户的家目录
[oldboy@oldboy ~]$  快捷键ctrl+d退回

总结:

查看当前用户:whoami
查看当前路径:pwd
查看主机名:hostname
~ 用户的家目录,例如:/root,/home/oldboy

1.2 PS1变量

1)Linux命令行提示符受变量PS1控制。

[root@oldboy ~]# echo $PS1
[\\u@\\h \\W]\\$
  • PS1环境变量控制提示符长什么样子?
  • PS1变量控制命令行组成:
  • PS1=[\\u@\\h \\W]\\$ ,

2)更多调整

echo "PS1=[\\[\\e[34;1m\\]\\u@\\[\\e[0m\\]\\[\\e[35;1m\\]\\H\\[\\e[0m\\]\\[\\e[36;1m\\] \\w\\[\\e[0m\\]]\\$ " >> /etc/bashrc | source /etc/bashrc
字颜色 字背景颜色 字背景颜色设置效果
30:黑色 40:黑色 0:关闭所有属性
31:红色 41:红色 1:设置高亮
32:绿色 42:绿色 4:下划线
33:黄色 43:黄色 5:闪烁
34:蓝色 44:蓝色 7:反显
35:紫色 45:紫色 8:消隐
36:深绿色 46:深绿色
37:白色 47:白色

1.3 bash命令行

1)bash解释器或者翻译官,命令行输入命令都是由bash解释执行的

[root@oldboy ~]# echo $SHELL
/bin/bash

# sh等价于bash,工作中,多用bash
[root@oldboy ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

2)命令基本语法:

命令行语法,中括号内可选。
命令     [选项]    [路径/文件/目录]
ls       -ld       /etc/hosts

3)命令行快捷键

快捷键 作用
tab 自动补全功能*
ctrl+a 将光标移动至开头
ctrl+e 将光标移动至结尾
ctrl+u 删除光标前内容
ctrl+k 删除光标后内容
ctrl+l 清屏(同clear命令)
ctrl+方向键 按单词移动光标
esc+. 调出上一个命令最后一个【空格】后面的部分
ctrl+c 终止当前操作
ctrl+d 退出当前会话(logout),连续操作关闭xshell
Ctrl+Insert 复制命令行内容*
Shift+Insert 粘贴命令行内容*

1.4 基础命令

1.4.1 ls 查看当前目录下的内容(文件和目录)

1)查看当前目录下的内容

[root@oldboyedu ~]# ls /usr
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@oldboyedu ~]# ls /root
anaconda-ks.cfg  anaconda-screenshots

2)-l 参数 查看文件属性

[root@oldboyedu ~]# ls -l /root
total 4
-rw-------. 1 root root 1470 May  6 21:19 anaconda-ks.cfg
drwxr-x---. 2 root root  276 May  6 21:19 anaconda-screenshots

3)-a 参数 查看隐藏文件

什么是隐藏文件? 就是以.开头的文件

[root@oldboyedu ~]# ls -a /root
.   anaconda-ks.cfg       .bash_history  .bash_profile  .cshrc  .ssh
..  anaconda-screenshots  .bash_logout   .bashrc        .pki    .tcshrc

1.4.2 cd 切换路径

[root@oldboyedu /etc]# cd /tmp/
[root@oldboyedu /tmp]# pwd
/tmp

一些和cd相关的特殊字符

特殊字符 含义
~ 表示用户的家目录
- 表示上一次所在目录
. 表示当前目录
.. 表示上一级目录

1.4.3 pwd 显示当前用户所在的路径

[root@oldboyedu ~]# pwd
/root

[root@oldboyedu ~]# cd /etc/sysconfig/network-scripts/
[root@oldboyedu network-scripts]# 
[root@oldboyedu network-scripts]# pwd
/etc/sysconfig/network-scripts

1.4.4 mkdir 创建目录

1)创建一个目录

[root@oldboyedu ~]# mkdir oldboyedu
[root@oldboyedu ~]# ls
anaconda-ks.cfg  anaconda-screenshots  oldboyedu

2)创建一个连续的目录

[root@oldboyedu ~]# mkdir oldboyedu1..5
[root@oldboyedu ~]# ls
anaconda-ks.cfg       oldboyedu   oldboyedu2  oldboyedu4
anaconda-screenshots  oldboyedu1  oldboyedu3  oldboyedu5

3)-p 参数 递归创建目录

[root@oldboyedu ~]# mkdir -p oldboyedu01/oldboyedu02/oldboyedu03
[root@oldboyedu ~]# 
[root@oldboyedu ~]#  tree oldboyedu01
oldboyedu01
└── oldboyedu02
    └── oldboyedu03

2 directories, 0 files

1.4.5 tree 以树形结构显示文件和目录

1)以树形结构显示文件和目录

[root@oldboyedu ~]# tree /root
/root
├── anaconda-ks.cfg
├── oldboyedu
└── oldboyedu01
    └── oldboyedu02
        └── oldboyedu03

4 directories, 1 file

2)-L 参数 显示层数

[root@oldboyedu ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files

1.4.6 touch 创建文件

1)创建一个文件

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboyedu  oldboyedu01  test

2)创建一个连续的文件

[root@oldboyedu ~]# touch test01..05
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboyedu  oldboyedu01  test01  test02  test03  test04  test05

1.4.7 cp 复制文件或目录

语法:cp 源文件 目的

1)复制test文件至/tmp目录下

[root@oldboyedu ~]# cp test /tmp/
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboyedu  oldboyedu01  test  test01  test02  test03  test04  test05
[root@oldboyedu ~]# ls /tmp/
test

2)将test文件复制并改名

[root@oldboyedu ~]# cp test oldboy
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu  oldboyedu01  test

3)-r 参数 递归复制(可复制目录)

[root@oldboyedu ~]# tree oldboyedu01
oldboyedu01
└── oldboyedu02
    └── oldboyedu03

2 directories, 0 files
[root@oldboyedu ~]# cp -r oldboyedu01 /tmp/
[root@oldboyedu ~]# ls /tmp/
oldboyedu01
[root@oldboyedu ~]# tree /tmp/oldboyedu01/
/tmp/oldboyedu01/
└── oldboyedu02
    └── oldboyedu03

2 directories, 0 files

1.4.8 mv 移动文件或目录,剪切

1)移动文件

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu  oldboyedu01  test  test01  test02  test03  test04  test05
[root@oldboyedu ~]# 
[root@oldboyedu ~]# mv test oldboyedu/
[root@oldboyedu ~]# ls oldboyedu/
test

2)移动目录

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu  oldboyedu01  test01  test02  test03  test04  test05
[root@oldboyedu ~]# 
[root@oldboyedu ~]# mv oldboyedu /opt/
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu01  test01  test02  test03  test04  test05
[root@oldboyedu ~]# ls /opt/
oldboyedu

3)改名

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu01  test01  test02  test03  test04  test05
[root@oldboyedu ~]# mv oldboyedu01/ oldboyedu
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu  test01  test02  test03  test04  test05

1.4.9 rm 删除文件或目录

1)直接删除文件

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboy  oldboyedu  test01  test02  test03  test04  test05
[root@oldboyedu ~]# rm oldboy
rm: remove regular empty file ‘oldboy’? y

2)-f 参数 强制删除

[root@oldboyedu ~]# ls 
anaconda-ks.cfg  oldboyedu  test01  test02  test03  test04  test05
[root@oldboyedu ~]# rm -f test01
[root@oldboyedu ~]# ls 
anaconda-ks.cfg  oldboyedu  test02  test03  test04  test05

3)-r 参数 递归删除(可删除目录)

[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboyedu  test02  test03  test04  test05
[root@oldboyedu ~]# rm -r oldboyedu/
rm: descend into directory ‘oldboyedu/’? y
rm: descend into directory ‘oldboyedu/oldboyedu02’? y
rm: remove directory ‘oldboyedu/oldboyedu02/oldboyedu03’? y
rm: remove directory ‘oldboyedu/oldboyedu02’? y
rm: remove directory ‘oldboyedu/’? y
[root@oldboyedu ~]# ls
anaconda-ks.cfg  test02  test03  test04  test05

# 加上 -f 即可强制递归删除
[root@oldboyedu ~]# ls
anaconda-ks.cfg  oldboyedu  test02  test03  test04  test05
[root@oldboyedu ~]# rm -rf oldboyedu/
[root@oldboyedu ~]# ls
anaconda-ks.cfg  test02  test03  test04  test05

1.4.10 cat 查看文件内容

1)查看文件内容

[root@oldboyedu ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

2)-n 参数 显示行号

[root@oldboyedu ~]# cat -n /etc/hosts
     1  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

1.4.11 head 查看文件前10行

1)查看文件前10行

[root@oldboyedu ~]# head /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

2)-n 参数 指定查看文件前几行(n=数字)

[root@oldboyedu ~]# head -5 /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

1.4.12 tail 查看文件尾10行

1)查看文件尾10行

[root@oldboyedu ~]# tail /etc/passwd
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
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

2)-n 参数 指定查看文件尾几行(n=数字)

[root@oldboyedu ~]# tail -5 /etc/passwd
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

3)-f 参数 跟踪文件变化

[root@oldboyedu ~]# tail -f a.txt 
111
111
111
111

# 新开一个Xshell会话往a.txt文件里写内容
[root@oldboyedu ~]# echo a >> a.txt

# 原先的会话发生了变化
[root@oldboyedu ~]# tail -f a.txt 
111
111
111
111

a

::: hljs-center

:::

1.4.13 echo 打印字符输出

[root@oldboyedu ~]# echo a
a
[root@oldboyedu ~]# echo 1..5
1 2 3 4 5
[root@oldboyedu ~]# echo a..d
a b c d

1.5 路径相关

绝对路径:

从根开始,开头必须是/

  • /etc/hosts
  • /etc/sysconfig
  • /etc/hostname
  • /home/oldboy

地球中国北京昌平区沙河镇百沙路xxx老男孩教育教室8-1

相对路径:

沙河镇老男孩教育教室8

不从根/开始,相对于当前路径的路径

[root@oldboy ~]# cd /
[root@oldboy /]# cd etc
[root@oldboy etc]# pwd
/etc
[root@oldboy etc]# cd ../root
[root@oldboy ~]# pwd
/root

以上是关于(0基础学Linux系列)1.09 Bash基础的主要内容,如果未能解决你的问题,请参考以下文章

(0基础学Linux系列)1.02 Linux基础

(0基础学Linux系列)2.17 Linux网络基础

(0基础学Linux系列)1.01 计算机基础

(0基础学Linux系列)1.06 Xshell连接Linux

(0基础学Linux系列)1.07 远程连接故障

(0基础学Linux系列)1.05 VMware安装问题