第八章 shell基础
8.1 shell介绍
>Shell是一个命令解释器,提供用户和机器之间的交互,支持特定的语法,比如逻辑判断、循环。每个用户都可以有自己特定的shell,CentOS7的默认shell为bash(Bourne Agin Shell),常见的还有zsh(power-shell)、ksh(Korn shell)。
8.2 命令历史(history)
history命令
语法: history [-c]
-c:=clear 清除内存中的命令,不能删除配置文件中的历史命令
[root@adai003 ~]# history
1 ls
2 ls /tmp/
3 ls /boot/
4 ls /
5 dhclient
……
[root@adai003 ~]# ls /root/.bash_history
/root/.bash_history history的家目录
显示使用过的命令历史,默认保存1000条使用过的命令(注:此令需要是在正常关机操作情况下的处1000条命)!
history环境变量
[root@adai003 ~]# echo $HISTSIZE
1000
该变量决定命令历史保存的命令的数目。
编辑其配置文件
[root@adai003 ~]# vim /etc/profile
……
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
……
[root@adai003 ~]# echo $HISTSIZE
1000
[root@adai003 ~]# source /etc/profile
[root@adai003 ~]# echo $HISTSIZE
2000
搜索关键字"HIST"找到‘HISTSIZE=1000’,在此更改其数字,保存退出,然后执行命令‘source /etc/profile’刷新该配置文件才会生效。
[root@adai003 ~]# echo $HISTTIMEFORMAT
[root@adai003 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@adai003 ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@adai003 ~]# history
1 2017/06/28 18:50:11 history
2 2017/06/28 18:51:32 echo $HISTTIMEFORMAT
3 2017/06/28 18:51:43 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
4 2017/06/28 18:51:45 echo $HISTTIMEFORMAT
5 2017/06/28 18:52:32 history
直接为‘HISTTIMEFORMAT’赋值即可,不过此时该格式只适用于当前终端。如果要其使用于所有用户,则需要将其写入history配置文件并刷新后生效。
[root@adai003 ~]# vim /etc/profile
……
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
……
保存退出!
[root@adai003 ~]# source /etc/profile
- 命令历史永久保存
即,使命令历史记录只能写入不能被删除!
[root@adai003 ~]# chattr +a ~/.bash_history
使用文件特殊权限,为‘.bash_history’文件配置‘a’权限(只可追加,不可删除),限于正常关机操作。
‘!!’命令
[root@adai003 ~]# w
……
[root@adai003 ~]# !!
w
……
‘!’的用法:‘!n’(n代表数字),表示运行命令历史中的第n条命令;‘!word’,表示运行上一次以该word开头的命令。
eg:
[root@adai003 ~]# history
1 2017/06/28 18:50:11 history
2 2017/06/28 18:51:32 echo $HISTTIMEFORMAT
3 2017/06/28 18:51:43 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
4 2017/06/28 18:51:45 echo $HISTTIMEFORMAT
5 2017/06/28 18:52:32 history
[root@adai003 ~]# !4
echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@adai003 ~]# !HIST
HISTSIZE=1000
8.3 命令补全和别名
命令补全Tab
按一次tab可以补全一个命令或参数(需要安装包bash-completion,并重启系统);按两次tab可以显示以某字母开头的所有命令或文件名。
alias命令
语法: alias [命令别名]=[具体命令] 设置别名
取消别名:unalias [命令别名]
直接输入alias会显示系统所有的别名:
[root@adai003 ~]# 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'
[root@adai003 ~]#
系统别名存放在配置文件‘~/.bashrc’和‘ls /etc/profile.d/’下:
[root@adai003 ~]# cat !$
cat .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
[root@adai003 ~]# ls /etc/profile.d/
256term.csh colorgrep.sh lang.sh qt-graphicssystem.sh which2.sh
256term.sh colorls.csh less.csh vim.csh
bash_completion.sh colorls.sh less.sh vim.sh
colorgrep.csh lang.csh qt-graphicssystem.csh which2.csh
8.4 通配符
- 通配符‘*’代表零个或多个任意字符
- 通配符‘?’代表一个任意字符
- 中括号‘[]’,“ls [0-9].txt”表示0-9区间内的任意.txt文件
- 花括号‘{}’,“ls {1,2,3}.txt”表示括号内任意.txt文件
输入输出重定向
“>,>>,<,2>,2>>”
‘>’:输出重定向
‘>>’:追加重定向
‘2>’:错误重定向
‘<’:输入重定向
使用‘>’命令时会将文件内原有内容删除。
[root@adai003 tmp]# echo adaixuelinux > 1.txt
[root@adai003 tmp]# cat 1.txt
adaixuelinux
[root@adai003 tmp]# echo adaixu > 1.txt
[root@adai003 tmp]# cat 1.txt
adaixu
#####################################
[root@adai003 tmp]# echo adaixu >> 1.txt
[root@adai003 tmp]# cat 1.txt
adaixu
adaixu
#####################################
[root@adai003 tmp]# lsaaa
-bash: lsaaa: 未找到命令
[root@adai003 tmp]# lsaaa 2> 2.txt
[root@adai003 tmp]# cat 2.txt
-bash: lsaaa: 未找到命令
输入重定向:必须定向到(<左边)一个命令下
[root@adai003 tmp]# wc -l 1.txt
“ wc -l”该命令用于查看文件行数
2 1.txt
[root@adai003 tmp]# ls {1,2}.txt aaaa.txt > 1.txt 2> 3.txt
[root@adai003 tmp]# cat 1.txt
1.txt
2.txt
[root@adai003 tmp]# cat 3.txt
ls: 无法访问aaaa.txt: 没有那个文件或目录
说明: 使用ls命令查看 {1,2}.txt aaaa.txt,1.txt和2.txt文件存在,可以使用ls查看,aaaa.txt不存在,使用ls查看会报错,‘> 1.txt 2> 3.txt’意思是将正确信息保存到1.txt,将错误信息保存到3.txt。
相关推荐
当用户在 History 模式下刷新页面或直接访问某个子路由时,服务器需要能够正确地将所有请求重定向到 `index.html`,以便 Vue Router 能够接管并解析路由。对于 Nginx 服务器,可以添加以下配置来实现这一目标: ```...
如果最终都没有找到,将会内部重定向到最后一个参数指定的地址,这里是`/test/project1/index.html`,从而解决404的问题。 ### 总结 通过上述配置,我们可以在Vue-Router启用history模式下开发,并在非根目录部署...
四、查看使用过的命令(history)和定义命令的别名(alias) bash 中可以查看使用过的命令历史记录(history),并可以定义命令的别名(alias),以便快速地执行常用的命令。 五、重定向与管道命令 bash 中可以...
- 使用`history`和`alias`,并保存到文件,通过`vi`编辑删除序号。 - 添加命令别名至`.bashrc`,确保登录后可用。 - 分析脚本,理解其功能,如用户验证和消息发送。 - 编写脚本来统计目录中的文件类型数量。 - 实现`...
3. `alias`:列出当前已设置的命令别名,方便快速执行常用命令。 4. `history`:显示历史执行过的命令列表。 5. `cat ~/.bash_history`:查看指定用户的.bash_history文件,其中记录了登录期间执行的命令。 6. `cat ...
2. 掌握 Bash 常用命令: history 、 alias 、 fg 、 bg 、 jobs 、输入输出重定向 Bash 提供了许多实用的命令,例如 history 命令可以查看命令历史记录, alias 命令可以设置命令别名, fg 和 bg 命令可以控制作业...
alias /usr/local/test/; index index.htm index.html; # 用于处理所有非文件请求,将其重定向到 index.html try_files $uri $uri/ /index.html; } } ``` 这里需要注意的是,如果项目不在服务器的根目录下,...
通过执行命令“history”,可以查看历史命令列表,而“history –c”则用于清除历史记录。调用历史命令可以通过“!n”来执行历史记录中的第n条命令,或者使用“!str”来执行以“str”开头的历史命令。 命令别名是一...
`history`则可以查看和重复执行之前输入过的命令,`HISTSIZE`则可设置历史命令的数量。 7. **Bash shell 的操作环境** Shell的环境配置涉及到路径、指令搜索顺序、登录和非登录shell的配置文件(如`.bash_profile`...
- 错误输出重定向:`错误命令 2> 文件名` (覆盖) 或 `错误命令 2>> 文件名` (追加) - 综合重定向:`命令 &> 文件名` (覆盖) 或 `命令 &>> 文件名` (追加) - **输入重定向**:从文件而非键盘接收输入数据。 - ...
用户可以通过`history`命令查看之前执行过的命令历史,这对于日常运维非常有用。Tab键可以自动完成文件名和命令,极大地提高了效率。默认情况下,系统会保存一定数量的历史命令,这个数字可以在`/etc/profile`中修改...
- 设置别名:`alias <别名>=<命令>` - 取消别名:`unalias <别名>` - **标准输入输出**:用于处理数据流的方向。 - **标准输入**:从设备(通常是键盘)接收输入。 - **标准输出**:向设备(通常是屏幕)输出...
- 通过 `redirect` 和 `alias` 属性可以实现 URL 的重定向和别名设置。 11. **路由的当前状态** - `this.$route` 可在任何组件中访问当前激活的路由信息,如路径、参数、查询等。 12. **编程式导航** - 使用 `...
* Ctrl+r 在 history 表中查询用户和组 课程外知识 * find -amin n 查找系统中最后 N 分钟访问的文件 * find -atime n 查找系统中最后 n*24 小时访问的文件 * find -cmin n 查找系统中最后 N 分钟被改变文件状态的...
- 别名可简化常用命令,如`alias ll='ls -l'`。 - Shell函数类似于别名,但可以包含更复杂的逻辑。 10. **环境变量与配置文件** - 环境变量影响Shell的行为,如`PATH`定义搜索可执行文件的路径。 - `.bashrc`和...
标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)可以通过重定向和管道(pipeline)的方式进行控制。例如,使用命令格式"command > file"可以将命令的输出重定向到文件中。 12. 用户管理 Linux系统...
Bash提供了许多扩展功能,如brace expansion(花括号扩展)、globbing(通配符匹配)、history substitution(历史替换)等,极大地增强了命令的使用灵活性。 总结,Linux程序设计中的Shell程序设计是学习和理解...
15. **pipe** (管道) 和 `>` (重定向):`command1 | command2`将`command1`的输出作为`command2`的输入,`command > file`则将`command`的输出重定向到`file`中。 16. **alias**:创建别名。`alias aliasname='...
有时需要在用户访问某个路径时自动重定向到另一个路径,或者设置别名。这可以通过 `redirect` 和 `alias` 属性实现: ```javascript // 重定向 { path: '/old', redirect: '/new' } // 别名 { path: '/old', alias...
此外,Bash shell还支持重定向、管道等操作,比如`用于输入重定向,`>`用于输出重定向,`2>`用于错误重定向,`>>`用于追加,`&>`用于同时重定向输出和错误,以及`|`用于管道连接命令。 理解并熟练掌握这些基础命令...