❶ linux系统入门-Bash
Shell 是一种命令行解释器, 其读取用户输入的字符串命令, 解释并且执行命令;它是一种特殊的应用程序, 介于系统调用/库与应用程序之间, 其提供了运行其他程序的的接口;它可以是交互式的, 即读取用户输入的字符串;也可以是非交互式的, 即读取脚本文件并解释执行, 直至文件结束. 无论是在类 UNIX, Linux 系统, 还是 Windows, 有很多不同种类的 Shell: 如类 UNIX, Linux 系统上的 Bash, Zsh 等; Windows 系统上的 cmd, PowerShell 等.
Bash 是 Bourne Again SHell 的缩写, 是 GNU 计划中的 Shell, 也是一些类 UNIX 系统与多数 Linux 发行版的默认 Shell
使用Shell可以实现对Linux系统实现绝大部分的管理,例如:
#获取当前时间
[root@CentOS7 ~]# date
Mon Mar 15 22:59:47 CST 2021
#创建文件
[root@CentOS7 opt]# touch xcz
[root@CentOS7 opt]# ll
-rw-r--r--. 1 root root 0 Mar 15 23:01 xcz
#创建一百个文件,我们一般就会使用shell script进行创建
[root@CentOS7 opt]# cat touch.sh
#!/bin/bash
for n in `seq 100`;do
touch xcz$n &&
echo "文件xcz$n创建成功哦!"
done
[root@CentOS7 opt]# sh touch.sh
命令行输入方式:效率较低,适用于工作量不大的工作;
shell script 脚本方式:效率高,适用于工作量大且复杂的工作。
[root@CentOS7 opt]# bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
'#39; = 普通用户
'#' = root用户(超级管理员)
#查看当前用户
[root@CentOS7 ~]# whoami
root
#查看当前命令提示符
[root@CentOS7 ~]# echo $PS1
[u@h W]$
root:当前系统的用户
CentOS7:当前系统的主机名
~:当前所在的位置
#:超级管理员身份(root用户)
$:普通用户
提示符参数及含义
d :代表日期;
H :完整的主机名称
h :仅取主机名中的第一个名字
:显示时间为24小时格式,如:HH:MM:SS
T :显示时间为12小时格式
A :显示时间为24小时格式:HH:MM
u :当前用户的账号名称
v :BASH的版本信息
w :完整的工作目录名称
W :利用basename取得工作目录名称,只显示最后一个目录名
# :下达的第几个命令
$ :提示字符,如果是root用户,提示符为 "#" ,普通用户则为 "#34;
#颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
PS1='[e[32;40m] [[u@h w ]$ [e[0m]'
PS1="[e[37;40m][[e[32;40m]u[e[37;40m]@h [e[36;40m]w[e[0m]]$ "
PS1="[e[37;40m][[e[32;40m]u[e[37;40m]@[e[35;40m]h[e[0m] [e[36;40m]w[e[0m]]$ "
#提示符的应用
[root@CentOS7 ~]# vi .bashrc
#最后一行下面添加
PS1="[e[37;40m][[e[32;40m]u[e[37;40m]@[e[35;40m]h[e[0m] [e[36;40m]w[e[0m]]$ "
#使用source生效
[root@CentOS7 ~]# source .bashrc
#命令 选项 参数
command [-options] [arguments]
[root@CentOS7 ~]# ls -l /opt/
#命令:整条shell命令的主体
#选项:用于调节命令的具体功能
#以'-'引导段个事选项(单个字符),例如”-l“
#以'--'引导长格式选项(多个字符),例如”--list“
#多个短格式选项可以卸载一起,只用一个”-“引导,例如”-la“
#参数:命令操作与偶的对象,如文件、目录名等
#命令必须开头,选项和参数位置可以发生变化
我们在使用Linux系统进行查找一个多层级的文件时,我们可以使用键盘上的Tab键进行快速补全
补全的形式有:
#如果我们忘记网络配置文件具体路径,那么我们就可以使用补全的形式进行配置
[root@CentOS7 ~]# vi /etc/sysconfig/
anaconda cpupower grub irqbalance moles/ rdisc selinux
authconfig crond init kmp netconsole readonly-root sshd
cbq/ ebtables-config ip6tables-config kernel network rsyslog wpa_supplicant
console/ firewalld iptables-config man-db network-scripts/ run-parts
[root@CentOS7 ~]# vi /etc/sysconfig/network
network network-scripts/
[root@CentOS7 ~]# vi /etc/sysconfig/network-scripts/if
ifcfg-ens33 ifdown-eth ifdown-post ifdown-Team ifup-aliases ifup-ipv6 ifup-post ifup-Team
ifcfg-lo ifdown-ippp ifdown-ppp ifdown-TeamPort ifup-bnep ifup-isdn ifup-ppp ifup-TeamPort
ifdown ifdown-ipv6 ifdown-routes ifdown-tunnel ifup-eth ifup-plip ifup-routes ifup-tunnel
ifdown-bnep ifdown-isdn ifdown-sit ifup ifup-ippp ifup-plusb ifup-sit ifup-wireless
[root@CentOS7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-
ifcfg-ens33 ifcfg-lo
[root@CentOS7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
#如果你的Linux系统无法进行补全,那么咱们可以安装一个扩展包即可
[root@CentOS7 ~]# yum install -y bash-completion
clear #或者用快捷键 ctrl + l
ctrl+c #有些程序也可以用q键退出
ctrl+z # 进程会挂起到后台
bg jobid # 让进程在后台继续执行
fg jobid # 让进程回到前台
Ctrl键+a #将当前光标移动到命令行的行首
Ctrl键+e #将当前光标移动到命令行的行尾
Ctrl键+u #将当前光标之前的所有字符剪切
Ctrl键+k #将当前光标之后的所有字符剪切
Ctrl键+w #将当前光标之前的字符剪切,以空格为结尾
Ctrl键+d #退出当前会话窗口
Ctrl键+z #将当前前台运行的程序,放到后台运行
Ctrl键+r #搜索 历史 命令
Ctrl键+y #粘贴剪切板上的内容
Ctrl键+左右方向键 #向指定的方向键移动一组字符,以空格为分隔符
ESC键+. #使用上一条命令的最后的参数或者路径,以空格为分隔符,空格之后的内容,delete键 从前往后删除一个字符
!命令 #执行最近的一次以该命令为开头的命令
!! #执行上一条命令
#使用格式:
[命令] + [--help] 或者[man] + [命令] 即可
#例如touch命令帮助
[root@CentOS7 ~]# touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h
is supplied.
A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, --no-create do not create any files
-d, --date=STRING parse STRING and use it instead of current time
-f (ignored)
-h, --no-dereference affect each symbolic link instead of any referenced
file (useful only on systems that can change the
timestamps of a symlink)
-m change only the modification time
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
--help display this help and exit
--version output version information and exit
Note that the -d and -t options accept different time-date formats.
GNU coreutils online help:
For complete documentation, run: info coreutils 'touch invocation'
❷ linux命令历史
查看命令历史用history命令,历史命令只有在注销的时候,才会被更新到~/.bash_history这个系统历史命令记录文件中;当你下次以bash登录Linux的时候,系统会主动由当前用户的~/.bash_history文件读取历史命令的记录。
history命令用法:
history 数字
列出最近的n条命令;
history -w
将目前的历史记忆的内容强制立即写入~/.bash_history文件中;
history -c
将目前所有的历史命令记录全部清除。
你好,
1、修改/etc/profile将HISTSIZE=1000改成0或1
清除用户home路径下。bash_history
2、立即清空里的history当前历史命令的记录
history -c
3、bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。
不过,可以调用'history -w'命令要求bash立即更新history文件。
history -w
后续操作的删除命令只会删除当前用户的操作命令,并不会影响其他用户。
在提示符后输入命令history,就可以查看到当前用户的历史操作命令。图中所示的是目前系统保存到root用户输入的377条命令。
在提示符下输入命令history -c就可以删除历史操作命令。再用history命令查看,发现历史操作命令已删除。
如果希望系统不再保存历史操作命令,就必须更改配置文件目录下的配置文件profile。首先使用vi编辑器打开该文件。
找到HISTSIZE这个值,默认情况下历史命令将保存1000条,可以将该值改为0,然后保存并退出,最后重启系统使得配置文件生效。
6重启完成后,再次使用命令history查看,发现系统已不再记录命令。
linux的bash内部命令history就可以显示命令行的命令历史,默认环境执行 history
命令后,通常只会显示已执行命令的序号和命令本身。
如果想要查看命令历史的时间戳,那么可以执行:
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service work restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
这样显示的格式就变成,序号 - 时间 - 命令行。
history的其他的一些基本功能:
1、使用 HISTSIZE 控制历史命令记录的总行数
将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450
条:
# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450
2、使用 HISTFILE 更改历史文件名称
默认情况下,命令历史存储在 ~/.bash_history 文件中。添加下列内容到 .bash_profile 文件并重新登录
bash shell,将使用 mandline_warrior 来存储命令历史:
# vi ~/.bash_profile
HISTFILE=/root/mandline_warrior
3、使用 HISTCONTROL 从命令历史中剔除连续重复的条目
在下面的例子中,pwd 命令被连续执行了三次。执行 history 后会看到三条重复的条目。要剔除这些重复的条目,可以将
HISTCONTROL 设置为 ignoreps:
# export HISTCONTROL=ignoreps
4、使用 HISTCONTROL 清除整个命令历史中的重复条目
上例中的 ignoreps 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成
eraseps:
# export HISTCONTROL=eraseps
5、使用 -c 选项清除所有的命令历史
如果你想清除所有的命令历史,可以执行:
# history -c
6、使用 HISTIGNORE 忽略历史中的特定命令
下面的例子,将忽略 pwd、ls、ls -ltr 等命令:
# export HISTIGNORE=”pwd:ls:ls -ltr:”
history命令可以用来显示曾执行过的命令。
执行过的命令默认存储在HOME目录的.bash_history文件中,可以通过查看该文件来获取执行命令的历史记录。需要注意的是.bash_history不包含当前会话所执行的命令,执行过的命令在关机时才会写入文件,除非执行命令history -w。
了解linux基础命令,另外你是感兴趣的话可以看下刘遄老师写的《Linux就该这么学》作为入门的书籍,觉得不错的话采纳下哦~。
可以使用History命令,主要用于显示历史指令记录内容, 下达历史纪录中的指令 。
1、History命令语法:
[test@linux]# history [n]
[test@linux]# history [-c]
[test@linux]# history [-raw] histfiles
参数:
n:数字,要列出最近的 n 笔命令列表
-c:将目前的shell中的所有 history 内容全部消除
-a:将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles ,
则预设写入 ~/.bash_history
-r:将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w:将目前的 history 记忆内容写入 histfiles
Linux系统在shell(控制台)中输入并执行命令时,shell会自动把命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认保存1000条,也可以更改这个值。
如果键入history, history会显示所使用的前1000个历史命令,并且编了号,会看到一个用数字编号的列表快速从屏幕上卷过。可能不需要查看1000个命令中的所有项目, 当然也可以加入数字来列出最近的 n 笔命令列表。
linux中history命令不仅仅可以查询历史命令而已. 还可以利用相关的功能来帮执行命令。
2、运行特定的历史命令
history会列出bash保存的所有历史命令,并且编了号,可以使用“叹号接编号”的方式运行特定的历史命令.
语法说明:
[test@linux]# [!number] [!mand] [!!]
参数说明:
number :第几个指令的意思;
mand:指令的开头几个字母
! :上一个指令的意思!
3、History命令实战
列出所有的历史记录:
[test@linux] # history
只列出最近10条记录:
[test@linux] # history 10 (注,history和10中间有空格)
使用命令记录号码执行命令,执行历史清单中的第99条命令
[test@linux] #!99 (!和99中间没有空格)
重复执行上一个命令
[test@linux] #!!
执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)
[test@linux] #!rpm
逐屏列出所有的历史记录:
[test@linux]# history | more
立即清空history当前所有历史命令的记录
[test@linux] #history -c
除了使用history命令,在 shell 或 GUI 终端提示下,也可以使用上下方向键来翻阅命令历史(向下箭头会向前翻阅),直到找到所需命令为止。这可以很方便地编辑前面的某一条命令,而不用重复输入类似的命令。
❸ bash shell的特性有哪些
命令历史:shell进程会在会话中保存此前用户提交执行过的命令;
查看历史命令:
~]# history
定制history的功能,可通过环境变量来实现
HISISIZE:shell进程可保留的命令历史条数
HISIFILE:持久保存命令历史的文件 (.bash_history)
HISIFILESIZE:命令历史文件的大小
用法:
显示最近#条历史命令 (history #)
调用历史列表中的命令 ( ! number)
再次执行上一条命令 (!!)
再一次执行历史列表中最近一个以STRING开头的命令 (!STRING)
调用上一条命令的最后一个参数 (ESC+.、file !$、file alt+.
控制命令历史的方法
环境变量:HISICONTROL
参数:
ignorespace:忽略以空白字符开头的命令
ignoreps:忽略以空白字符开头的命令
ignoreboth:以上两者同时生效
echo $HISTCONTROL
修改变量值
HISICONTROL=Ignorespace
bash 基础特性之:命令补全
命令补全:
shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当作命令;
命令查找机制:
根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全
不能惟一标识某命令程序文件,再击打一次tab键,会给出列表;
路径补全:
在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件 (tab) 《Linux就该这么学》 一起学习linux
如果能惟一标识,则直接补全。否则,再一次tab给出列表;
bash 基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户家目录;
{}:可承载一个以逗号分割的路径列表;
例如:
[options] [directory] 列出树形目录中目录的内容; -l:level 指定显示的层级
tree命令:
mkdir /tmp/{a,b},相当于 mkdir /tmp/a,mkdir /tmp/b;
创建/tmp/sysroot目录下包含以下文件
|--bin
|--etc
|--sysconfig
|--network-scripts
|--sbin
|--usr
|--local
|--bin
|--sbin
|--var
|--cache
bash 基础特性之:命令的执行状态结果
命令执行的状态结果
bash通过状态返回值来输出此结果 (成功:0,失败:1-255);
命令执行完成后,其状态返回值保存于bash的特殊变量中 " $? ";
命令正常执行时,有的还会有命令返回值,其根据命令及其功能不同,结果各不相同;
两种引用命令的执行结果
$(COMMAND)
`COMMAND`
示例:mkdir $(date +%H-%M-%S)
bash 基础特性之:引用
强引用:' '
弱引用:" "
命令引用: ` `
bash 基础特性之:快捷键
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符
Ctrl+k:删除光标所在处至行尾的所有字符
Ctrl+l:清屏(等同clear)
bash 基础特性之:globbing
globbing:文件名通配
星号:匹配任意长度的任意字符 (pa,pa,pa,pa);
问号?:匹配任意单个字符(pa?,??pa,p?a,p?a?);
中括号[]:匹配指定范围内的任意单个字符 ([a-z] [A-Z] [0-9] [a-z0-9]);
[^]:匹配指定范围外的任意单个字符([^[:upper:]],[^0-9],[^[:alnum:]]);
bash 基础特性之:命令hash
hash命令:
-d COMMAND,删除
-r 情况hash缓存
执行命令的查找顺序: hash、alias、path;
解释:
把命令的查找结果,缓存在缓存中就叫hash;
什么时候需要清空hash表,hash缓存不正确时;
bash 基础特性之:变量
转载于:https://blog.51cto.com/51eat/2409637
❹ linux中Shell历史命令记录文件的路径是什么
路径/etc/bashrc。在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史。
代码如下:
HISTFILESIZE=4000
HISTSIZE=4000
HISTTIMEFORMAT='%F %T'
export HISTTIMEFORMAT
注意:
HISTFILESIZE 表示在 .bash_history 文件中保存命令的记录总数,默认值是 1000;
HISTSIZE 定义了 history 命令输出的记录总数;
HISTTIMEFORMAT 定义了时间显示格式,该格式与 date 命令后的 “+"%F %T"” 是一样的;
HISTTIMEFORMAT 作为 history 的时间变量将值传递给 history 命令。
(4)bash上一条命令扩展阅读:
显示历史命令
history 显示全部历史
history 数字 显示之前执行过的若干命令,例:history 2 显示执行过的上两条命令
使用上下箭头键也可以查看上一条根下一条命令,
3.运行历史命令
!! 运行上一条命令
!88 运行第88条命令
!88 /test 运行第88条命令并在命令后面加上/test
!?CF? 运行上一个包含CF字符串的命令
!ls 运行上一个ls命令
!ls:s/CF/l 运行上一个ls命令,其中把CF替换l
fc 编辑并运行上一个历史命令
fc 66 编辑并运行第66个历史命令
fc -e /usr/bin/vim 66 使用vim编辑第66个命令并运行
❺ Linux文件管理与bash特性有哪些
一.Linux 文件管理类命令
我把文件管理类命令分为四种,也就是我们常说的CRUD 增删改查
1.2.1 创建类命令
1、touch 命令
touch 命令虽然是修改文件元数据的时间戳,但是如果 touch 命令后面没有加选项 而且这个命令所指向的文件不存在,那么默认就是创建一个touch 后面跟参数的文件 例如:
touch /PATH/TO/SOMEFILE
touch 更新文件的timestarp
-a 更新atime为当前时间
二 、bash 工作特性
bash工作特性主要有以下几点,我们一一说明
1、 命令行展开
~ 和 {}
~ 我们之前已经使用过,就是管理员可以通过 cd ~ USERNAME到用户的家目录
2、命令别名
alias 和 unalias
我们可以使用alias 来创建命令别名
3、命令历史
history 之前讲过,主要就是通过history 查看命令历史,包括可以用
!STRING 的形式调用之前执行的命令
!! 执行上一条命令
4、文件名通配
文件名通配之前精讲过,这里只是总结,只要记住那些通配符即可
5、快捷键
bash 命令的快捷键 Ctrl + a Ctrl +e 等等
6、命令补全机制
7、路径补全机制
在用户所制定的起始位置进行查找 更多更详细的介绍可查看《Linux就该这么学》。