linux shell基础-1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell基础-1相关的知识,希望对你有一定的参考价值。
shell
shell是一个命令解释器,提供用户和机器之间的交互;Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
history
作用:bash内建命令,管理命令历史
语法:
history [n] 不加数字默认列出内存中HISTSIZE参数设定条数的历史命令
history [参数]
参数:
c:清除目前内存中的命令记录
"!"的用法:
!n 执行命令历史中的第n条命令记录(ps:"!"与"n"之间没有空格)
!! 执行命令历史中的最后一条命令
!$ 代表上一条命令里最后一个参数
!命令keywords 执行以keywords开头最后一次执行的命令
配置文件:
~/.bash_history
history记录存档文件
每个用户家目录下拥有自己独立的记录文件
/etc/profile
HISTSIZE参数配置文件
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 记录命令执行的时间
chattr +a ~/.bash_history 永久保存
历史命令快捷键
# ctrl+r,可查询history中的关键字来查找命令
(reverse-i-search)‘cat‘: cat .bash_history |wc -l
## 操作步骤:
# 1. 按下ctrl+r进入搜索界面
# 2. 输入命令关键字,搜索出最近执行的命令
# 3. 按下enter键执行此命令
# 4. 按左右键可编辑此命令
# 5. 按上下键可查看此命令前后输入的命令历史
Tab键
作用:
命令及文档名称补全
使用方法:
输入命令或文档名称头几个字母
按一次或两次Tab键即可补全或列出所有符合条件的命令、路径或文件
实例:
# 命令补全
# 连续按两次Tab,显示所有匹配结果
if[Tab][Tab]
if ifcfg ifconfig ifdown ifenslave ifnames ifup
# 此处依然保留原输入内容,以便继续输入
if
# 路径及文件名称补全
# 路径用Tab补全,最后文件名列出匹配结果
ls /etc/syscon[Tab]fig/net[Tab]work-s[Tab]cripts/ifcfg-[Tab][Tab]
ifcfg-eth0 ifcfg-lo
# 最后依然保留原输入内容
ls /etc/sysconfig/network-scripts/ifcfg-
alias
作用:
为命令行设置别名
语法:
alias 查询别名
alias alias_cmd=‘command line‘ 添加别名
配置文件: ~/.bashrc
实例:
# 查询alias别名
alias
alias cp=‘cp -i‘
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
alias vi=‘vim‘
which vi
alias vi=‘vim‘
/usr/bin/vim
# 配置文件~/.bashrc,可永久配置alias
vi ~/.bashrc
******************************************************
# User specific aliases and functions
......
alias mv=‘mv -i‘
## 新增alias,并保存退出
alias vi=‘vim‘
......
******************************************************
注:
# "source"或"."重新加载配置文件
source ~/.bashrc
# /etc/profile.d/目录下可以放置需要开机启动的shell脚本文件
ls /etc/profile.d/
colorls.csh glib2.csh lang.csh less.csh vim.csh which2.sh
colorls.sh glib2.sh lang.sh less.sh vim.sh
通配符
通配符含义:
* 0个或多个任意字符
? 1个任意字符
# 命令中使用的话跟shell中一样,后面的东西不生效
实例:
# "*"匹配任意个任何字符
# 匹配1开头的所有文件
ls 1*
1 12 124.log 13.log
# "?"匹配1个任意字符
# 匹配"1"+"1任意字符"+".log"的文件
ls 1?.log
13.log
# "#"注释掉其之后的命令
# "#"注释掉了第二条命令的1*匹配
ls 1? 1*
1 12 12 124.log 13.log
ls 1? #1*
12
重定向功能
作用:
把标准输出、标准输入、错误输出重定向至文件或设备
符号及其意义:
> 输出重定向
>> 输出追加重定向
< 输入重定向
<< 输入追加重定向
1 正确信息标准输出
2 错误信息标准输出
语法:
1>right.destination 2>error.destination 正确及错误信息分别存放
1>right.destination 2>&1 正确及错误信息放在一起
2>/dev/null 把错误信息输出到系统黑洞
实例:
# 输出重定向">"、">>"
# 输出重定向,然后用追加重定向增加内容
cat /etc/passwd > ./passwd
echo "this is a new line" >> ./passwd
# 用tail命令查看最后三行内容,找到新增内容
tail -3 ./passwd
test:x:500:500::/home/test:/bin/bash
su-test:x:501:501::/home/su-test:/bin/bash
this is a new line
# 追加重定向会覆盖文件原内容
echo "this is only content will leave" > ./passwd
cat ./passwd
this is only content will leave
# 输入重定向"<"、"<<"
# cat可以以此形式创建文件并输入内容,最后ctrl+d退出
cat > stdin
yes , i can do the same thing like vim
now exit by pushing ctrl and d together
# 查看结果
cat stdin
yes , i can do the same thing like vim
now exit by pushing ctrl and d together
# 用文件做标准输入到stdin
cat > stdin < /etc/passwd
# 查看两个文件的不同,发现是一致的
diff ./stdin-redirect /etc/passwd
# 把正确和错误信息放在一个文件中记录
# 下面的语句有正确输出和错误输出
ll stdin-redirect i_am_not_exist
ls: cannot access i_am_not_exist: No such file or directory
-rw-r--r-- 1 root root 934 May 6 22:37 stdin-redirect
# 将其重定向到1个文件中
ll stdin-redirect i_am_not_exist 1>list.log 2>&1
cat list.log
ls: cannot access i_am_not_exist: No such file or directory
-rw-r--r-- 1 root root 934 May 6 22:37 stdin-redirect
# 把错误信息输出到系统黑洞
# 将错误信息或正确信息输入到黑洞
ls stdddd
ls: cannot access stdddd: No such file or directory
ls stdddd 2> /dev/null
以上是关于linux shell基础-1的主要内容,如果未能解决你的问题,请参考以下文章