env 输出环境变量
export 输出环境变量,如有参数则将参数导入到环境变量
set 输出环境变量和自定义变量
echo 显示某个变量
unset 取消变量
bash 新建子进程
exit 退出进程
locale 输出语系
read [-pt] 变量名 等待用户输入变量名
declare/typeset [-aixr] 变量名="xxxx" 定义变量 (如果没有参数和set一样)
ulimit 限制文件系统参数
${path#/*:} 从前面往后删除掉最短的符合#后格式的内容
${path##/*:} 从前面往后删除掉最长的符合##后格式的内容
${path%:*bin} 从后面往前删除掉最短的符合%后格式的内容
${path%%:*bin} 从后面往前删除掉最长的符合%%后格式的内容
${path/oldStr/newStr} 如果变量中包含oldStr的话,替换第一个oldStr为newStr
${path//oldStr/newStr} 如果变量中包含oldStr的话,替换所有oldStr为newStr
new_var=${old_var-content} 如果old_var未设置,就将content赋予new_var
new_var=${old_var:-content} 如果old_var为空字符串或未设置,都将content赋予new_var
alias 别名='命令 参数' 设置命令别名
unalias 别名 取消命令别名
clear 清除屏幕内容
history 历史命令
-n 列出最近的n条执行过的命令
-c 清除所有history中的命令
-a histfiles 将目前新增的history命令新增入histfiles中,若没有加histfiles,则默认写入 ~/.bash_history
-r histfiles 将histfiles的内容独到目前这个shell的history记忆中
-w histfiles 将目前的history记忆内容写入histfiles中,若没有加histfiles,则默认写入 ~/.bash_history
!number 执行历史命令中第 number 条命令
!command 由后向前搜寻并执行历史命令中以 command 开头的命令
!! 执行上一个命令(相当于 ↑ [Enter])
type -a command 查找所有command的类型
命令别名、自定义的变量在注销bash后就会失效,所以如果想要保留设置,就得要将这些设置写入配置文件才行。
stty [-a] 查阅、设置终端机的输入按键代表意义
set [-uvCHhmBx] 设置命令输入输出环境
1> 或者 > 标准输出覆盖
1>> 或者 >> 标准输出追加
2> 或者 > 错误输出覆盖
2>> 或者 >> 错误输出追加
find /home -name .bashrc > list_right 2> list_error
find /home -name .bashrc 2> /dev/null 垃圾黑洞设备
find /home -name .bashrc > list 2> list
find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list 将正确和错误数据通通写入同一个文件去
< 利用cat创建文件:
cat > catfile
testing
cat file test
# ^d 离开
cat > catfile < ~/.bashrc
ll catfile ~/.bashrc
<< 代表以右边字符串结束输入
cat > catfile << "eof"
> This is a test.
> OK now stop
> eof
cat catfile
cmd1; cmd2 连续执行命令
cmd1 && cmd2 cmd1执行成功的话继续执行cmd2,cmd1执行不成功的话不继续执行cmd2
cmd1 || cmd2 cmd1执行成功的话不继续执行cmd2,cmd1执行不成功的话继续执行cmd2
ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
cmd1 && cmd2 || cmd3 假设判断式
| 管道命令:只能处理上个命令 standard outinput 的信息,对于standard error并没有处理能力,管道命令必须要能够接收 standard input 的数据才行
ls -al /etc | less
last 查询最近一个月登录系统的日志信息
[tab]按键可以被 cat -A 显示成为 ^I
id 将账号的标识符显示出来
finger 将账号的特殊参数显示出来
source filename 无需注销的情况下,载入配置文件
----------------------------------------------------管道命令-----------------------------------------------------------------
选取命令:
cut:将一段信息的某一段“切”出来
-d '分隔字符' -f index(从1开始)
-c 行号-行号
echo $PATH | cut -d ':' -f 3,5
grep:将包含查找字符串的信息拿出来
-i 忽略大小写
-n 输出行号
-v 反向选择
--color=auto 将找到的关键字部分加上颜色显示
last | grep 'root'
last | grep -v 'root'
last | grep 'root' | cut -d ' ' -f 1
grep --color=auto 'MANPATH' /etc/manpath.config
排序命令:
sort:可以根据不同的数据类型来排序(在排序之前用LANG=C来让语系统一)
-f 忽略大小写
-b 忽略最前面的空格符
-M 一月份的名字来排序,列如 JAN, DEC 等的排序方法
-n 使用“纯数字”进行排序(默认是以文字类型来排序的)
-r 反向排序
-u 就是 uniq ,相同的数据中,仅出现一行代表
-t 分隔符,默认使用 [Tab] 键来分隔
-k 以区间 (field) 来进行排序
cat /etc/passwd | sort
cat /etc/passwd | sort -t ':' -k 3 -n
last | cut -d ' ' -f 1 | sort
uniq:可以将重复的数据仅列出一个显示
-i 忽略大小写
-c 进行计数
last | cut -d ' ' -f 1 | sort | uniq
last | cut -d ' ' -f 1 | sort | uniq -c
wc:计算输出信息的整体数据
-l 仅列出行
-w 仅列出多少字
-m 多少字符
cat /etc/manpath.config | wc
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
双向重定向:
tee:会同时将数据流送与文件与屏幕;而输出到屏幕的,其实就是stdout,可以让下个命令继续处理
-a tee后接的文件会被覆盖,诺加上 -a 这个参数则能将信息累加
last | tee last.list | cut -d ' ' -f 1
ls -l /home | tee ~/homdfile | more
ls -l / | tee -a ~/homefile | more
字符转换命令:
tr:用来删除一段信息当中的文字,或者是进行文字信息的替换
-d 删除信息当中的 SET1 这个字符串
-s 替换掉重复的字符
last | tr '[a-z]' '[A-Z]'
cat /etc/passwd | tr -d ':'
cp /etc/passwd /root/passwd && UNIX2dos /root/passwd
file /etc/passwd /root/passwd
cat /root/passwd | tr -d '\r' > /root/passwd.linux
ll /etc/passwd /root/passwd*
col:经常用来将 man page 转存为纯文本文件以方便查查阅
-x 将tab键转换为对等的空格键
-b 在文字内有 / 时,仅保留反斜杠最后接的那个字符
cat -A /etc/manpath.config
cat /etc/manpath.config | col -x | cat -A | more
man col > /root/col.man
vim /root/col.man
man col | col -b > /root/col.man
join:将两个文件当中有相同数据的那一行加在一起(注意,操作之前先将文件排序,否则会丢失数据)
-t join 默认以空格符分隔数据,并且对比“第一个字段”的数据,
如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个
-i 忽略大小写的差异
-1 这个是数字的 1 ,代表第一个文件要用哪个字段来分析的意思
-2 代表第二个文件要用哪个字段来分析的意思
head -n 3 /etc/passwd /etc/shadow
join -t ':' /etc/passwd /etc/shadow
head -n 3 /etc/passwd /etc/group
join -t ':' -1 4 /etc/passwd -2 3 /etc/group
paste:将两行贴在一起,且中间以[tab]键隔开
-d 后面可以接分隔字符,默认是以 [tab] 来分隔的
- 如果 file 部分写成 - ,表示来自 standard input 的数据的意思
paste /etc/passwd /etc/shadow
cat /etc/group | paste /etc/passwd /etc/shadow - | head -n 3
expand:将[tab]按键转成空格键
-t 后面可以接数字。一般来说,一个[tab]按键可以用 8 个空格键替换。
我们也可以自行定义一个[tab]按键代表多少个字符。
grep '^MANPATH' /etc/manpath.config | head -n 3
grep '^MANPATH' /etc/manpath.config | head -n 3 | cat -A
grep '^MANPATH' /etc/manpath.config | head -n 3 | expand -t 6 - | cat -A
(unexpand将空格键转成[tab])
切割命令:
split:将一个大文件依据文件大小或行数来切割成小文件
-b 后面接欲切割成的文件大小,可加单位,例如 b, k, m 等
-l 以行数来进行切割
PERFIX 代表前导符,可作为切割文件的前导文字
cd /tmp; split -b 300k /etc/termcap termcap(前导符)
ll -k termcap*
xxxx termcapaa
xxxx termcapab
xxxx termcapac
cat termcap* >> termcapback (合并)
ls -al / | split -l 10 - lsroot(前导符)
wc -l lsroot*
参数代换:
xargs:产生某个命令,可以读入stdin的数据,并且以空格符或断行字符进行分辨,将stdin的数据分割成为arguments
-O 如果输入的 stdin 含有特殊字符,例如 `, \, 空格键等字符时,这个参数可以将它还原成一般字符。这个参数可以用于特殊状态。
-e 这个是 EOF (end of file) 的意思。后面可以接一个字符串,当 xargs 分析到这个字符串时,就会停止继续工作
-p 在执行每个命令的参数时,都会询问用户
-n 后面接次数,每次 command 命令执行时,要使用几个参数的意思
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs finger
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -p finger
cut -d ':" -f 1 /etc/passwd | xargs -p -n 5 finger
cut -d ':' -f 1 /etc/passwd | xargs -p -e'lp' finger
find /sbin -perm +7000 | ls -l (结果列出了所有 root 下的文件)
find /sbin -perm +7000 | xargs ls -l (很多命令其实并不支持管道命令,因此我们可以通过xargs来提供该命令引用 standard input 之用。)
关于减号的用途:
tar -cvf - /home | tar -xvf -
export 输出环境变量,如有参数则将参数导入到环境变量
set 输出环境变量和自定义变量
echo 显示某个变量
unset 取消变量
bash 新建子进程
exit 退出进程
locale 输出语系
read [-pt] 变量名 等待用户输入变量名
declare/typeset [-aixr] 变量名="xxxx" 定义变量 (如果没有参数和set一样)
ulimit 限制文件系统参数
${path#/*:} 从前面往后删除掉最短的符合#后格式的内容
${path##/*:} 从前面往后删除掉最长的符合##后格式的内容
${path%:*bin} 从后面往前删除掉最短的符合%后格式的内容
${path%%:*bin} 从后面往前删除掉最长的符合%%后格式的内容
${path/oldStr/newStr} 如果变量中包含oldStr的话,替换第一个oldStr为newStr
${path//oldStr/newStr} 如果变量中包含oldStr的话,替换所有oldStr为newStr
new_var=${old_var-content} 如果old_var未设置,就将content赋予new_var
new_var=${old_var:-content} 如果old_var为空字符串或未设置,都将content赋予new_var
alias 别名='命令 参数' 设置命令别名
unalias 别名 取消命令别名
clear 清除屏幕内容
history 历史命令
-n 列出最近的n条执行过的命令
-c 清除所有history中的命令
-a histfiles 将目前新增的history命令新增入histfiles中,若没有加histfiles,则默认写入 ~/.bash_history
-r histfiles 将histfiles的内容独到目前这个shell的history记忆中
-w histfiles 将目前的history记忆内容写入histfiles中,若没有加histfiles,则默认写入 ~/.bash_history
!number 执行历史命令中第 number 条命令
!command 由后向前搜寻并执行历史命令中以 command 开头的命令
!! 执行上一个命令(相当于 ↑ [Enter])
type -a command 查找所有command的类型
命令别名、自定义的变量在注销bash后就会失效,所以如果想要保留设置,就得要将这些设置写入配置文件才行。
stty [-a] 查阅、设置终端机的输入按键代表意义
set [-uvCHhmBx] 设置命令输入输出环境
1> 或者 > 标准输出覆盖
1>> 或者 >> 标准输出追加
2> 或者 > 错误输出覆盖
2>> 或者 >> 错误输出追加
find /home -name .bashrc > list_right 2> list_error
find /home -name .bashrc 2> /dev/null 垃圾黑洞设备
find /home -name .bashrc > list 2> list
find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list 将正确和错误数据通通写入同一个文件去
< 利用cat创建文件:
cat > catfile
testing
cat file test
# ^d 离开
cat > catfile < ~/.bashrc
ll catfile ~/.bashrc
<< 代表以右边字符串结束输入
cat > catfile << "eof"
> This is a test.
> OK now stop
> eof
cat catfile
cmd1; cmd2 连续执行命令
cmd1 && cmd2 cmd1执行成功的话继续执行cmd2,cmd1执行不成功的话不继续执行cmd2
cmd1 || cmd2 cmd1执行成功的话不继续执行cmd2,cmd1执行不成功的话继续执行cmd2
ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
cmd1 && cmd2 || cmd3 假设判断式
| 管道命令:只能处理上个命令 standard outinput 的信息,对于standard error并没有处理能力,管道命令必须要能够接收 standard input 的数据才行
ls -al /etc | less
last 查询最近一个月登录系统的日志信息
[tab]按键可以被 cat -A 显示成为 ^I
id 将账号的标识符显示出来
finger 将账号的特殊参数显示出来
source filename 无需注销的情况下,载入配置文件
----------------------------------------------------管道命令-----------------------------------------------------------------
选取命令:
cut:将一段信息的某一段“切”出来
-d '分隔字符' -f index(从1开始)
-c 行号-行号
echo $PATH | cut -d ':' -f 3,5
grep:将包含查找字符串的信息拿出来
-i 忽略大小写
-n 输出行号
-v 反向选择
--color=auto 将找到的关键字部分加上颜色显示
last | grep 'root'
last | grep -v 'root'
last | grep 'root' | cut -d ' ' -f 1
grep --color=auto 'MANPATH' /etc/manpath.config
排序命令:
sort:可以根据不同的数据类型来排序(在排序之前用LANG=C来让语系统一)
-f 忽略大小写
-b 忽略最前面的空格符
-M 一月份的名字来排序,列如 JAN, DEC 等的排序方法
-n 使用“纯数字”进行排序(默认是以文字类型来排序的)
-r 反向排序
-u 就是 uniq ,相同的数据中,仅出现一行代表
-t 分隔符,默认使用 [Tab] 键来分隔
-k 以区间 (field) 来进行排序
cat /etc/passwd | sort
cat /etc/passwd | sort -t ':' -k 3 -n
last | cut -d ' ' -f 1 | sort
uniq:可以将重复的数据仅列出一个显示
-i 忽略大小写
-c 进行计数
last | cut -d ' ' -f 1 | sort | uniq
last | cut -d ' ' -f 1 | sort | uniq -c
wc:计算输出信息的整体数据
-l 仅列出行
-w 仅列出多少字
-m 多少字符
cat /etc/manpath.config | wc
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
双向重定向:
tee:会同时将数据流送与文件与屏幕;而输出到屏幕的,其实就是stdout,可以让下个命令继续处理
-a tee后接的文件会被覆盖,诺加上 -a 这个参数则能将信息累加
last | tee last.list | cut -d ' ' -f 1
ls -l /home | tee ~/homdfile | more
ls -l / | tee -a ~/homefile | more
字符转换命令:
tr:用来删除一段信息当中的文字,或者是进行文字信息的替换
-d 删除信息当中的 SET1 这个字符串
-s 替换掉重复的字符
last | tr '[a-z]' '[A-Z]'
cat /etc/passwd | tr -d ':'
cp /etc/passwd /root/passwd && UNIX2dos /root/passwd
file /etc/passwd /root/passwd
cat /root/passwd | tr -d '\r' > /root/passwd.linux
ll /etc/passwd /root/passwd*
col:经常用来将 man page 转存为纯文本文件以方便查查阅
-x 将tab键转换为对等的空格键
-b 在文字内有 / 时,仅保留反斜杠最后接的那个字符
cat -A /etc/manpath.config
cat /etc/manpath.config | col -x | cat -A | more
man col > /root/col.man
vim /root/col.man
man col | col -b > /root/col.man
join:将两个文件当中有相同数据的那一行加在一起(注意,操作之前先将文件排序,否则会丢失数据)
-t join 默认以空格符分隔数据,并且对比“第一个字段”的数据,
如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个
-i 忽略大小写的差异
-1 这个是数字的 1 ,代表第一个文件要用哪个字段来分析的意思
-2 代表第二个文件要用哪个字段来分析的意思
head -n 3 /etc/passwd /etc/shadow
join -t ':' /etc/passwd /etc/shadow
head -n 3 /etc/passwd /etc/group
join -t ':' -1 4 /etc/passwd -2 3 /etc/group
paste:将两行贴在一起,且中间以[tab]键隔开
-d 后面可以接分隔字符,默认是以 [tab] 来分隔的
- 如果 file 部分写成 - ,表示来自 standard input 的数据的意思
paste /etc/passwd /etc/shadow
cat /etc/group | paste /etc/passwd /etc/shadow - | head -n 3
expand:将[tab]按键转成空格键
-t 后面可以接数字。一般来说,一个[tab]按键可以用 8 个空格键替换。
我们也可以自行定义一个[tab]按键代表多少个字符。
grep '^MANPATH' /etc/manpath.config | head -n 3
grep '^MANPATH' /etc/manpath.config | head -n 3 | cat -A
grep '^MANPATH' /etc/manpath.config | head -n 3 | expand -t 6 - | cat -A
(unexpand将空格键转成[tab])
切割命令:
split:将一个大文件依据文件大小或行数来切割成小文件
-b 后面接欲切割成的文件大小,可加单位,例如 b, k, m 等
-l 以行数来进行切割
PERFIX 代表前导符,可作为切割文件的前导文字
cd /tmp; split -b 300k /etc/termcap termcap(前导符)
ll -k termcap*
xxxx termcapaa
xxxx termcapab
xxxx termcapac
cat termcap* >> termcapback (合并)
ls -al / | split -l 10 - lsroot(前导符)
wc -l lsroot*
参数代换:
xargs:产生某个命令,可以读入stdin的数据,并且以空格符或断行字符进行分辨,将stdin的数据分割成为arguments
-O 如果输入的 stdin 含有特殊字符,例如 `, \, 空格键等字符时,这个参数可以将它还原成一般字符。这个参数可以用于特殊状态。
-e 这个是 EOF (end of file) 的意思。后面可以接一个字符串,当 xargs 分析到这个字符串时,就会停止继续工作
-p 在执行每个命令的参数时,都会询问用户
-n 后面接次数,每次 command 命令执行时,要使用几个参数的意思
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs finger
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -p finger
cut -d ':" -f 1 /etc/passwd | xargs -p -n 5 finger
cut -d ':' -f 1 /etc/passwd | xargs -p -e'lp' finger
find /sbin -perm +7000 | ls -l (结果列出了所有 root 下的文件)
find /sbin -perm +7000 | xargs ls -l (很多命令其实并不支持管道命令,因此我们可以通过xargs来提供该命令引用 standard input 之用。)
关于减号的用途:
tar -cvf - /home | tar -xvf -