一、命令行简介

1.1 Linux 命令行提示符介绍

[root@root_pc ~]#         #<==这是超级管理员root用户对应的命令行
[oldboy@oldboy_pc ~]$ #<==这是普通用户oldboy对应的命令行

1、#号,是使用超级用户root登录后的命令行结尾提示符,而$号是使用普通用户登录后的命令行结尾提示符。

2、命令行提示符@前面的字符代表当前登录的用户(可用whoami查询),@后面的为主机名(可用hostname查询),~所在的位置是窗口当前用户所在的路径。

系统Bash命令行的提示符是由一个称为PS1的系统环境变量控制的。

PS1变量 含义
\d 代表日期,格式为weekday month date,例如“Mon Aug 1”
\H 完整的主机名称
\h 仅取主机的第一个名字
\t 显示时间为24小时格式,如:HH:MM:SS
\T 显示时间为12小时格式
\A 显示时间为24小时格式:HH:MM
\u 当前用户的账号名称
\v BASH的版本信息
\w 显示完整的路径,其中家目录会以~代替,这是本例的主角
\W 利用basename取得工作目录名称,所以只会列出最后一个目录
\# 执行的第几个命令
\$ 提示字符,如果是root,则提示符为#,如果是普通用户,则为$

因此,要查看当前的PS1变量的值,可采用如下命令:

echo $SP1                 #<== 打印超级管理员对应的PS1
>>>[\u@\u \W]$ #<==@是一个分隔符

临时修改PS1变量对应的值:

PS1='[\u@\h \w]$ '        #  更改了w的大小写

永久修改

编辑 /etc/bashrc 文件
修改第36行左右的 $PS1
注销并重新登录系统或直接执行 source /etc/bashrc

1.2 Linux命令行常用快捷键

  常用连接工具SecureCRT 和 Xshell 客户端软件,以下快捷键也正对这两个工具。

快捷键 供能说明(标红带*为常用)
最有用的快捷键
tab 命令或路径等的补全键,Linux最有的快捷键*
移动光标快捷键
Ctrl+a 光标回到命令行首*
Ctrl+e 光标回到命令行尾*
Ctrl+f 光标向右移动一个字符(相当于方向键右键)
Ctrl+b 光标向左移动一个字符(相当于方向键左键)
剪切、粘贴、清除快捷键
Ctrl+Insert 复制命令行内容*
Shift+Insert 粘贴命令行内容*
Ctrl+k 剪切(删除)光标处当行尾位的字符*
Ctrl+u 剪切(删除)光标处当行首的字符*
Ctrl+w 剪切(删除)光标前的一个单词
Ctrl+y 粘贴Ctrl+u/Ctrl+k/Ctrl+w删除的文本
Ctrl+c 中断终端正在执行的任务或者删除整行*
Ctrl+h 删除光标所在处的前一个字符(相当于退格键)
重复执行命令快捷键
Ctrl+d 退出当前Shell命令行*
Ctrl+r 搜索命令行使用过的历史命令记录*
Ctrl+g 从执行Ctrl+r的搜索历史命令模式中退出
控制快捷键
Ctrl+l 清除屏幕的所有内容,并在屏幕的最上面开始一个新行,等同于clear命令
Ctrl+s 锁定终端,使之无法输入内容
Ctrl+q 解锁执行Ctrl+s的锁定状态
Ctrl+z 暂停执行在终端运行的任务*
!号开头的快捷命令
!! 执行上一条命令
!pw 执行最近以pw开头的命令*
!pw:p 仅打印最近以pw开头的命令,但不执行
!num 执行历史命令列表的第num(数字)条命令*
!$ 上一条命令的最后一个参数,相当于Esc+.(点)
ESC相关
Esc+.(点) 获取上一条命令最后的部分(空格分隔)*
Esc+b 移动到当前单词的开头
Esc+f 移动到当前单词的结尾

1.3 在Linux命令行下查看命令帮助

man 参数选项 命令 / 文件
命令 --help

  如果需要中文显示,需要调整系统字符集为 zh_CN.UTF-

cat /etc/sysconfig/i18n
>>LANG="zh_CN.UTF-8"
echo $LANG
>>zh_CN.UTF-

bash内置命令:

  在Linux系统里有一些特殊的命令,它们就是bash程序的内置命令,例如cd、history、read等,这些命令在系统目录里不存在真实的程序文件(存在于bahs程序里)

help cd

还有一个很少用的,跟man差不多的命令info,但是几乎用不到。

info ls

1.4 Liinux 关机、重启、注销

shutdown

参数选项 解释说明
-r 重启系统,而不是关机,shutdown -r now
-h 关机,shutdown -h now
-c 取消正在执行的shutdown指令

其他命令表

命令 说明
关机命令
shutdown -h now 立即关机
shutdown -h +1 1分钟后关机,1可以是别的数字或时间点,例如:11:00。shutdown -c取消
halt 立即停止系统,需要人工关闭电源,是reboot的链接文件
init 0 切换运行级别到0,0表示关机,因此此命令的作用就是关机
poweroff 立即停止系统,并且关闭电源
重启命令
reboot 立即重启(生产常用)
shutdown -r now 立即重启(生产常用)
shutdown -r +1 1分钟后重启
init 6 切换运行级别到6,6表示重启,因此此命令的作用就是重启
注销命令
logout 注销退出当前用户窗口
exit 注销退出当前用户窗口,快捷键Ctrl+d

二、文件和目录操作命令

2.1 pwd:显示当前所在的位置 *****

  pwd 命令是 “print working directory”的缩写,其功能是显示当前工作目录的绝对路径。正常情况下使用不带参数。

2.2 cd:切换目录 *****

  cd命令是 "Change Directory"的缩写,其功能是从当前工作目录切换到指定的工作目录。

  该命令是 bash shell 内置命令。

参数选项 解释说明(带*的为重点)
- 当只使用“-”选项时,将会从当前目录切换到系统环境变量"OLDPWD"对应值的目录路径,即当前用户上一次所在的目录路径
~

当只使用“-”选项时,将会从当前目录切换到系统环境变量"HOME"对应值的目录路径,即当前用户的家目录所在的路径

.. 当只使用“..”选项时,将会从当前目录切换到当前目录的上一级目录所在的路径

2.3 tree:以树形结构显示目录下的内容

  功能是以树形结构列出制定目录下的所有内容,包括所有文件、子目录即子目录里的目录和文件。

  tree 命令需要安装,检查  rpm -qa tree ,安装 yum -y install tree

参数选项 解释说明
-a 显示所有文件,包括隐藏文件(以 "." 点开头的文件)
-d 只显示目录*
-f 显示每个文件的全路径
-i 不显示树枝,常与-f参数配合使用
-L level 遍历目录的最大层数,level为大于0的正整数*
-F 在执行文件、目录、Socket、符号连接、管道名称等不同类型文件的结尾,各自加上 "*"、"/"、"="、"@"、"|"号,类似于 ls 命令的 -F 选项

  如果出现系统字符集问题,不能正确显示中文,以下命令解决

LANG=en_US.UTF-

实例:

显示 etc 下第一层的目录结构
tree -dL /etc/ 显示 boot 下第一层完整路径
tree -L -f /boot/ >>>
|____ /boot/dir1
|____ /boot/dir2
|____ /boot/dir3 显示 boot 下第一层完整路径而不带树杈
tree -L -fi /boot/ >>>
/boot/dir1
/boot/dir2
/boot/dir3

技巧性实例

过滤以斜线结尾的所有内容(其实就是过滤出目录)
tree -L -F /boot/ | greop /$ 使用 -d 参数显示目录树
tree -L -d /boot/

2.4 mkdir:创建目录 *****

  mkdir 是“make directions”缩写。功能是创建目录。如果目录已经存在,会提示,而不会继续创建。

可以创建多个目录

mkdir dir1 dir2 dir3
参数选项 解释说明(带 * 的为重点)
-p

1:递归创建目录

2:即使要创建的目录事先已存在也不会报错提示目录已存在

-m 设置新创建目录的默认目录对应的权限
-v 显示创建目录的过程
mkdir -p /test/test
mkdir -pv test/{dir1_1,dir1_2}/{dir2_1,dir2_2}
mkdir -m dir2

扩展知识:大括号{}

echo {B,C}
>>>B C echo A{B,C}
>>>AB AC echo A{,C}
>>>A AC

  生产案例:写了一个Shell脚本,准备对某个目录(假如目录很大, 几百个GB)做一些操作,在此之前要测试脚本,所以要搭建一个模拟环境,然后把目录结构复制过去。

显示 test 文件夹的所有目录树,--noreport不显示最后一行统计信息
tree -fid --noreport test
tree -fid --noreport test >>~/test.txt 搭建好环境后运行
mkdir -p `cat ~/test.txt` 当使用反引号(键盘ESC下方),反引号内部使用cat命令读取 test.txt.文件内容。
一个命令语句中如果还有反引号包含的命令,那么需要优先执行反引号中的命令语句。

2.5 touch:创建空文件或改变文件的时间戳属性  *****

  touch命令有两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性

参数选项 解释说明
-a 只更改指定文件的最后访问时间
-d STRING 使用字符串 STRING 代表的时间作为模板设置指定文件的时间属性
-m 只更改指定文件的最后修改时间
-r file 将指定文件的时间属性设置为与模板文件 file 的时间属性相同
-t STAMP 使用 [[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒
touch a.txt b.txt
touch stu{..}
会创建 stu01 stu02 stu03 stu04 stu05 touch -a test.txt
touch -m test.txt
touch -d test.txt 指定创建文件后的文件修改时间为2020年10月01日
touch -r test1.txt test2.txt 让test1的时间属性和test2.txt一致
touch -t 201512312234.50 test.txt

扩展知识

GNU/Linux 的文件有3种类型的时间戳

Access:-- ::20.502156890 +  最后访问文件的时间
Modify:-- ::20.502156890 + 最后修改文件的时间
Change:-- ::20.502156890 + 最后改变文件状态的时间 atime:最后访问时间(ls -lu) 查看文件内容时,文件的访问时间(access time)会改变
mtime:最后修改时间(ls -lt) 修改文件内容,文件的修改时间(modify time)会改变
ctime:状态改变时间(ls -lc) 修改文件内容、移动文件或改变文件属性等,文件的change时间会改变

2.6 ls:显示目录下的内容及相关属性信息  *****

list的缩写

参数选项 解释说明
-l 使用长格式列出文件及目录信息
-a 显示目录下的所有文件,包括以“.”字符开始的隐藏文件
-t 根据最后的修改时间(mtime)排序,默认是以文件名排序
-r 依相反次序排序
-F 在条目后加上文件类型的指示符号(*、/、=、@、|,其中的一个)
-p 只在目录后面加上“/”
-i 显示inode节点信息
-d 当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接
-h 以人类可读的信息显示文件或目录大小,如1KB,23MB,2GB等
-A 列出所有文件,包括隐藏文件,但不包括“.”与“..”这两个目录
-S 根据文件大小排序
-R 递归列出所有子目录
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-c 根据状态改变时间(ctime)排序
-u 根据最后访问时间(atime)排序
--color={never,always,auto} 不同的文件类型显示不同的颜色参数,never表示不显示,always表示总是显示,auto表示自动显示
--full-time 以完整的时间格式输出
--time-style={full-iso,long-iso,iso,locale} 以不同的时间格式输出,long-iso效果最好
--time={atime,ctime} 按不同的时间属性输出,atime表示按访问时间,ctime表示按改变权限属性时间,如果不加此参数则默认为最后修改时间
ls -a
ls -l 这时候时间属性列默认显示的是文件的最后一次修改时间 ls -l --time-style=long-iso 以long-iso方式显示时间。如果不加的话,没有年份的信息
ls --full-time 等同于上面这句 ls -l --time-style=long-iso --time=atime ls -F |grep / 过滤目录 ls -l dir1 此时不能查看目录本身的信息,而是看目录内文件信息
ls -ld dir1 可以看目录信息 ls -R dir1 查看递归信息

  ls -F 命令的扩展知识

可执行普通文件  *
目录 /
套接字 =
FIFOs |
符号链接 @ 生产场景数据库备份,获取数据库名列表 #! /bin/bash
# backup database and sava one week data
# test --
destdir=/data/mysql_backup
musqldumpbin=/usr/local/mysql/bin/mysqldump ls -F /usr/local/mysql/data/egrep "/" |awk -F "/" 'print $1' >/root/dbfilename.list

  文件输出内容的属性解读

 -rw-r--r--  root root  Oct  : test
列属性 属性说明
文件inode索引 test文件的inode索引节点编号为12345
文件类型 文件类型是 - ,表示这是一个普通文件
文件权限 文件权限是 rw-r--r--,表示文件属主可读、可写,文件所归属的用户组可读,其他用户可读
硬链接数个数 表示test这个文件没有其他的硬链接;因为连接数是1,就是它本身
文件属主 这个文件所属的用户,这里的意思是test文件被root用户所拥有,是第一个root
文件属组 这个文件所属的用户组,在这里是root用户组,是第二个root
文件大小 文件大小是35字节
文件修改时间 这里的时间是test文件最后被更新(包括文件创建、内容更新、文件名更新等)的时间,可用如下命令查看文件的修改、访问及变化的时间;ls -l、ls -l --time=atime、ls -l --time=ctime,注意:这里只是显示不同的文件属性时间,并不是按照属性时间排序

2.7 cp:复制文件或目录 *****

  copy的缩写

参数选项 解释说明
-p 复制文件时保持源文件的所有者、权限信息及时间属性
-d 如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标文件或目录
-r 递归复制目录,即复制目录下的所有层级的子目录及文件
-a 等同于上面的p、d、r这3个选项功能的总和
-i 覆盖已有文件前提示用户确认
-t 默认情况下命令格式是“cp 源文件 目标文件”,使用 -t 参数可以颠倒顺序,格式变为 “cp -t 目标文件 源文件”

cp 覆盖文件之前不提示是否覆盖的几种方法(原因,cp有默认别名,cp -i)

which cp 查看 cp 的系统别名
一:使用命令全路径,这样就不用用到别名了 /bin/cp file1 file2 二、命令开头使用反斜线,屏蔽系统别名
\cp file1 file2 三、取消cp的别名,但重启后失效
unalias cp 四、注释别名
cat ~/.bashrc

2.8 mv:移动或重命名文件 *****

参数选项 解释说明
-f 若目标文件已经存在,则不会询问而是直接覆盖
-i 如目标文件已经存在,则会询问是否覆盖
-n 不覆盖已经存在的文件
-t 指定 mv 的目标目录,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后,和cp命令的-t选项功能一致
-u 在源文件比目标文件新,或目标文件不存在时才进行移动
移动多个文件
mv file1 file2 file3 dir1/ 把所有file文件移动到 dir1 下面

2.9 rm:删除文件或目录 *****

  remove 的缩写,删除一个或多个文件或目录。

参数选项 解释说明
-f 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认
-r 递归删除目录及其内容

rm 非常危险

、可以通过mv 替代 rm,先移动到回收站 /tmp
、备份,异机备份
、find . -type f -name ".txt" -mtime +|xargs rm -f
、切换目录,同时不使用通配符

2.10 rmdir:删除空目录 *

几乎不用

参数选项 解释说明
-p 递归删除目录,当子目录删除后其父目录为空时,也一并删除。如果整个路径被删除,或者由于某种原因保留了部分路径,则系统在标准输出上显示相应的信息
-v 显示命令的执行过程

2.11 ln:硬链接与软链接 *****

  link的缩写。其功能是创建文件间的链接(make links between files),链接类型包括硬链接(hard link)和软链接(符号链接,symbolic link)

参数选项 解释说明
无参数 创建硬链接
-s 创建软链接

2.11.1 硬链接

  硬链接是指通过索引节点(inode)来进行链接。在linux(ext2、ext3、ext4)文件系统中,所有文件都有一个独有的inode编号。在Linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就被称为硬链接。

、具有相同inode节点号的多个文件互为硬链接文件
、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
、只有删除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除

2.11.2 软链接

  类似于windows里面的快捷方式

、软链接类似于windows的快捷方式(可以通过readlink命令查看其指向)
、软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体
、即使删除了源文件,软链接文件也还是依然存在,但是无法访问指向的源文件路径内容了
、软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同

2.11.3 目录链接

、对于目录,不可以创建硬链接,但是可以创建软链接。
、目录可以跨文件系统
、硬链接不能跨越文件系统
、每个目录下面都有一个硬链接 “.”号,和对应上级目录的硬链接 “..”
、在父目录中创建一个子目录,父目录的链接数会增加1(子目录都有 ".."来指向父目录)。但是在父目录中创建文件时,父目录的链接数不会增加

2.12 readlink:查看符号链接文件的内容 **

使用cat命令查看软链接文件时,看到的是源文件内容。可以用readlink查看软链接的真实内容。

参数选项 解释说明

-f

一直跟随符号链接,直到非符号链接的文件位置,但要保证最后必须存在一个非符号链接的文件

《Linux》跟老男孩学Linux核心系统命令的更多相关文章

  1. 《跟老男孩学Linux运维:Web集群实战》读书笔记

    Linux 介绍 Linux 安装 Linux 调优 Web 基础 Nginx 应用 LNMP 应用 PHP 缓存加速 Nginx 调优 MySQL 应用 NFS 网络文件共享 Nginx 反向代理与 ...

  2. 学linux内核与学linux操作系统有什么区别!?

    linux内核包括:进程管理,存储管理,IO管理,文件系统等功能.linux操作系统则是linux内核再加上像shell或图形界面和其他的实用软件,比内核庞大的多.建议先学shell命令和linux下 ...

  3. 参照跟老男孩学linux运维搭建nagios实验小结

        nagios效果示例 http://192.168.0.236/nagios       用户名:hong     密码:123   一. 服务端安装准备   1. 更新源 cd /etc/y ...

  4. Linux 核心系统命令目录

    S5 Linux信息显示与搜索文件命令 S6 文件备份与压缩命令 S7 Linux用户管理及用户信息查询命令 S8 Linux磁盘与文件系统管理命令 S9 Linux 进程管理命令 S10 Linux ...

  5. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  6. 学Linux到底学什么?

    前言 我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么? 为什么要学Linux 在回答学什么之前,我们先看看为什么要学.首先我们需要认识到的是,很多服 ...

  7. 【Linux 运维】linux系统关机、重启、注销命令

    linux 关机.重启.注销命令: 关机命令: shutdown -h now 立刻关机(生产常用) shutdown -h  +1  一分钟后关机      (    shutdown -c 可以将 ...

  8. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  9. 24小时学通Linux内核之有关Linux文件系统实现的问题

    有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问题,虽然Win10发布了,,但我还是好喜欢XP呀,好想回家用用家里的XP来 ...

随机推荐

  1. ICEM-哑铃(无厚度)

    原视频下载地址:https://pan.baidu.com/s/1i44hdkh 密码: 96dh

  2. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...

  3. [C++] explicit关键字使用方法

    C++中,构造函数可以用作自动类型转换,但是这种转换不一定是程序所需要的,有时会导致错误的类型转换. 下面的代码,在mian函数中,将一个整形赋值为对象类型. #include "iostr ...

  4. IIS 7中添加FTP站点并设置指定用户访问

    1. 开启 FTP 和 IIS 服务功能:   2. 添加新用户: 打开计算机管理界面:   展开“本地用户与组”:   邮件点击“用户”->点击“创建新用户”:   在创建新用户对话框输入用户 ...

  5. Cesium学习笔记(六):几何和外观(Geometry and Appearances)【转】

    https://blog.csdn.net/UmGsoil/article/details/74912638 我们先直接来看一个例子 var viewer = new Cesium.Viewer('c ...

  6. C#中将xml文件反序列化为实例时采用基类还是派生类的问题

    基类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  7. python3.6安装 zipimport.ZipImportError: can't decompress data; zlib not available【转】

    python3.6.3 安装: .tgz cd Python- ./configure make make altinstall `make altinstall` , 报错: zipimport.Z ...

  8. ActiveMQ消息中间件的作用以及应用场景

    ActiveMQ消息中间件的作用以及应用场景 一.ActiveMQ简介 ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE1.4 ...

  9. 《电子计算机机房设计规范》GB50174-93

    <电子计算机机房设计规范>GB50174-2008 http://gf.1190119.com/article-17886.htm 中华人民共和国国家标准 电子计算机机房设计规范 GB 5 ...

  10. Ubuntu安装FreeSWITCH亲测

    本人在安装FreeSWITCH的时候遇到了相当多的坑,网上很多方法都模棱两可,经常装失败,最后终于装成功后做一下总结 最顺利的安装方式 1. 下载压缩文件 下载地址:http://files.free ...