##############################################################################␍
##############################################################################␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ CTRL+A # 移动到行首,同 ␍ CTRL+B # 向后移动,同 ␍ CTRL+C # 结束当前命令␍ CTRL+D # 删除光标前的字符,同 ,或者没有内容时,退出会话␍ CTRL+E # 移动到行末,同 ␍ CTRL+F # 向前移动,同 ␍ CTRL+G # 退出当前编辑(比如正在 CTRL+R 搜索历史时)␍ CTRL+H # 删除光标左边的字符,同 ␍ CTRL+K # 删除光标位置到行末的内容␍ CTRL+L # 清屏并重新显示␍ CTRL+N # 移动到命令历史的下一行,同 ␍ CTRL+O # 类似回车,但是会显示下一行历史␍ CTRL+P # 移动到命令历史的上一行,同 ␍ CTRL+R # 历史命令反向搜索,使用 CTRL+G 退出搜索␍ CTRL+S # 历史命令正向搜索,使用 CTRL+G 退出搜索␍ CTRL+T # 交换前后两个字符␍ CTRL+U # 删除字符到行首␍ CTRL+V # 输入字符字面量,先按 CTRL+V 再按任意键␍ CTRL+W # 删除光标左边的一个单词␍ CTRL+X # 列出可能的补全␍ CTRL+Y # 粘贴前面 CTRL+u/k/w 删除过的内容␍ CTRL+Z # 暂停前台进程返回 bash,需要时可用 fg 将其切换回前台␍ CTRL+_ # 撤销(undo),有的终端将 CTRL+_ 映射为 CTRL+/ 或 CTRL+7␍ ␍ ALT+b # 向后(左边)移动一个单词␍ ALT+d # 删除光标后(右边)一个单词␍ ALT+f # 向前(右边)移动一个单词␍ ALT+t # 交换字符␍ ALT+BACKSPACE # 删除光标前面一个单词,类似 CTRL+W,但不影响剪贴板␍ ␍ CTRL+X CTRL+X # 连续按两次 CTRL+X,光标在当前位置和行首来回跳转 ␍ CTRL+X CTRL+E # 用你指定的编辑器,编辑当前命令␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ exit # 退出当前登录␍ env # 显示环境变量␍ echo $SHELL # 显示你在使用什么 SHELL␍ ␍ bash # 使用 bash,用 exit 返回␍ which bash # 搜索 $PATH,查找哪个程序对应命令 bash␍ whereis bash # 搜索可执行,头文件和帮助信息的位置,使用系统内建数据库␍ whatis bash # 查看某个命令的解释,一句话告诉你这是干什么的␍ ␍ clear # 清初屏幕内容␍ reset # 重置终端(当你不小心 cat 了一个二进制,终端状态乱掉时使用)␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ cd # 返回自己 $HOME 目录␍ cd {dirname} # 进入目录␍ pwd # 显示当前所在目录␍ mkdir {dirname} # 创建目录␍ mkdir -p {dirname} # 递归创建目录␍ pushd {dirname} # 目录压栈并进入新目录␍ popd # 弹出并进入栈顶的目录␍ dirs -v # 列出当前目录栈␍ cd - # 回到之前的目录␍ cd -{N} # 切换到目录栈中的第 N个目录,比如 cd -2 将切换到第二个␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ ls # 显示当前目录内容,后面可接目录名:ls {dir} 显示指定目录␍ ls -l # 列表方式显示目录内容,包括文件日期,大小,权限等信息␍ ls -1 # 列表方式显示目录内容,只显示文件名称,减号后面是数字 1␍ ls -a # 显示所有文件和目录,包括隐藏文件(.开头的文件/目录名)␍ ln -s {fn} {link} # 给指定文件创建一个软链接␍ cp {src} {dest} # 拷贝文件,cp -r dir1 dir2 可以递归拷贝(目录)␍ rm {fn} # 删除文件,rm -r 递归删除目录,rm -f 强制删除␍ mv {src} {dest} # 移动文件,如果 dest 是目录,则移动,是文件名则覆盖␍ touch {fn} # 创建或者更新一下制定文件␍ cat {fn} # 输出文件原始内容␍ any_cmd > {fn} # 执行任意命令并将标准输出重定向到指定文件␍ more {fn} # 逐屏显示某文件内容,空格翻页,q 退出␍ less {fn} # 更高级点的 more,更多操作,q 退出␍ head {fn} # 显示文件头部数行,可用 head -3 abc.txt 显示头三行␍ tail {fn} # 显示文件尾部数行,可用 tail -3 abc.txt 显示尾部三行␍ tail -f {fn} # 持续显示文件尾部数据,可用于监控日志␍ nano {fn} # 使用 nano 编辑器编辑文件␍ vim {fn} # 使用 vim 编辑文件␍ diff {f1} {f2} # 比较两个文件的内容␍ wc {fn} # 统计文件有多少行,多少个单词␍ chmod 644 {fn} # 修改文件权限为 644,可以接 -R 对目录循环改权限␍ chgrp group {fn} # 修改文件所属的用户组␍ chown user1 {fn} # 修改文件所有人为 user1, chown user1:group1 fn 可以修改组␍ file {fn} # 检测文件的类型和编码␍ basename {fn} # 查看文件的名字(不包括路径)␍ dirname {fn} # 查看文件的路径(不包括名字)␍ grep {pat} {fn} # 在文件中查找出现过 pat 的内容␍ grep -r {pat} . # 在当前目录下递归查找所有出现过 pat 的文件内容␍ stat {fn} # 显示文件的详细信息␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ whoami # 显示我的用户名␍ who # 显示已登录用户信息,w / who / users 内容略有不同␍ w # 显示已登录用户信息,w / who / users 内容略有不同␍ users # 显示已登录用户信息,w / who / users 内容略有不同␍ passwd # 修改密码,passwd {user} 可以用于 root 修改别人密码␍ finger {user} # 显示某用户信息,包括 id, 名字, 登录状态等␍ adduser {user} # 添加用户␍ deluser {user} # 删除用户␍ w # 查看谁在线␍ su # 切换到 root 用户␍ su - # 切换到 root 用户并登录(执行登录脚本)␍ su {user} # 切换到某用户␍ su -{user} # 切换到某用户并登录(执行登录脚本)␍ id {user} # 查看用户的 uid,gid 以及所属其他用户组␍ id -u {user} # 打印用户 uid␍ id -g {user} # 打印用户 gid␍ write {user} # 向某用户发送一句消息␍ last # 显示最近用户登录列表␍ last {user} # 显示登录记录␍ lastb # 显示失败登录记录␍ lastlog # 显示所有用户的最近登录记录␍ sudo {command} # 以 root 权限执行某命令␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ ps # 查看当前会话进程␍ ps ax # 查看所有进程,类似 ps -e␍ ps aux # 查看所有进程详细信息,类似 ps -ef␍ ps auxww # 查看所有进程,并且显示进程的完整启动命令␍ ps -u {user} # 查看某用户进程␍ ps axjf # 列出进程树␍ ps xjf -u {user} # 列出某用户的进程树␍ ps -eo pid,user,command # 按用户指定的格式查看进程␍ ps aux | grep httpd # 查看名为 httpd 的所有进程␍ ps --ppid {pid} # 查看父进程为 pid 的所有进程␍ pstree # 树形列出所有进程,pstree 默认一般不带,需安装␍ pstree {user} # 进程树列出某用户的进程␍ pstree -u # 树形列出所有进程以及所属用户␍ pgrep {procname} # 搜索名字匹配的进程的 pid,比如 pgrep apache2␍ ␍ kill {pid} # 结束进程␍ kill -9 {pid} # 强制结束进程,9/SIGKILL 是强制不可捕获结束信号␍ kill -KILL {pid} # 强制执行进程,kill -9 的另外一种写法␍ kill -l # 查看所有信号␍ kill -l TERM # 查看 TERM 信号的编号␍ killall {procname} # 按名称结束所有进程␍ pkill {procname} # 按名称结束进程,除名称外还可以有其他参数␍ ␍ top # 查看最活跃的进程␍ top -u {user} # 查看某用户最活跃的进程␍ ␍ any_command & # 在后台运行某命令,也可用 CTRL+Z 将当前进程挂到后台␍ jobs # 查看所有后台进程(jobs)␍ bg # 查看后台进程,并切换过去␍ fg # 切换后台进程到前台␍ fg {job} # 切换特定后台进程到前台␍ ␍ trap cmd sig1 sig2 # 在脚本中设置信号处理命令␍ trap "" sig1 sig2 # 在脚本中屏蔽某信号␍ trap - sig1 sig2 # 恢复默认信号处理行为␍ ␍ nohup {command} # 长期运行某程序,在你退出登录都保持它运行␍ nohup {command} & # 在后台长期运行某程序␍ disown {PID|JID} # 将进程从后台任务列表(jobs)移除␍ ␍ wait # 等待所有后台进程任务结束␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ ssh user@host # 以用户 user 登录到远程主机 host␍ ssh -p {port} user@host # 指定端口登录主机␍ ssh-copy-id user@host # 拷贝你的 ssh key 到远程主机,避免重复输入密码␍ scp {fn} user@host:path # 拷贝文件到远程主机␍ scp user@host:path dest # 从远程主机拷贝文件回来␍ scp -P {port} ... # 指定端口远程拷贝文件␍ ␍ uname -a # 查看内核版本等信息␍ man {help} # 查看帮助␍ man -k {keyword} # 查看哪些帮助文档里包含了该关键字␍ info {help} # 查看 info pages,比 man 更强的帮助系统␍ uptime # 查看系统启动时间␍ date # 显示日期␍ cal # 显示日历␍ vmstat # 显示内存和 CPU 使用情况␍ vmstat 10 # 每 10 秒打印一行内存和 CPU情况,CTRL+C 退出␍ free # 显示内存和交换区使用情况␍ df # 显示磁盘使用情况␍ du # 显示当前目录占用,du . --max-depth=2 可以指定深度␍ du -h # 显示当前目录占用,-h 以方便阅读的格式输出 (K/M/G)␍ uname # 显示系统版本号␍ hostname # 显示主机名称␍ showkey -a # 查看终端发送的按键编码␍ ␍ ping {host} # ping 远程主机并显示结果,CTRL+C 退出␍ ping -c N {host} # ping 远程主机 N 次␍ traceroute {host} # 侦测路由连通情况␍ mtr {host} # 高级版本 traceroute␍ host {domain} # DNS 查询,{domain} 前面可加 -a 查看详细信息␍ whois {domain} # 取得域名 whois 信息␍ dig {domain} # 取得域名 dns 信息␍ route -n # 查看路由表␍ netstat -a # 列出所有端口␍ netstat -an # 查看所有连接信息,不解析域名␍ netstat -anp # 查看所有连接信息,包含进程信息(需要 sudo)␍ netstat -l # 查看所有监听的端口␍ netstat -t # 查看所有 TCP 链接␍ netstat -lntu # 显示所有正在监听的 TCP 和 UDP 信息␍ netstat -lntup # 显示所有正在监听的 socket 及进程信息␍ netstat -i # 显示网卡信息␍ netstat -rn # 显示当前系统路由表,同 route -n␍ ss -an # 比 netstat -an 更快速更详细␍ ss -s # 统计 TCP 的 established, wait 等␍ ␍ wget {url} # 下载文件,可加 --no-check-certificate 忽略 ssl 验证␍ wget -qO- {url} # 下载文件并输出到标准输出(不保存)␍ curl -sL {url} # 同 wget -qO- {url} 没有 wget 的时候使用␍ ␍ sz {file} # 发送文件到终端,zmodem 协议␍ rz # 接收终端发送过来的文件␍ ␍ ␍ ##############################################################################␍
##############################################################################␍
␍
varname=value # 定义变量␍
varname=value command # 定义子进程变量并执行子进程␍
echo "$varname" # 查看变量内容␍
echo $$ # 查看当前 shell 的进程号␍
echo
##############################################################################␍ ␍ !! # 上一条命令␍ !^ # 上一条命令的第一个单词␍ !:n # 上一条命令的第n个单词␍ !:n-$ # 上一条命令的第n个单词到最后一个单词␍ !$ # 上一条命令的最后一个单词␍ !-n:$ # 上n条命令的最后一个单词␍ !string # 最近一条包含string的命令␍ !^string1^string2 # 最近一条包含string1的命令, 快速替换string1为string2␍ !# # 本条命令之前所有的输入内容␍ !#:n # 本条命令之前的第n个单词, 快速备份cp /etc/passwd !#:1.bak␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍
function myfunc() {␍
# $1 代表第一个参数,$N 代表第 N 个参数␍
# $# 代表参数个数␍
#
##############################################################################␍ ␍ statement1 && statement2 # and 操作符␍ statement1 || statement2 # or 操作符␍ ␍ exp1 -a exp2 # exp1 和 exp2 同时为真时返回真(POSIX XSI扩展)␍ exp1 -o exp2 # exp1 和 exp2 有一个为真就返回真(POSIX XSI扩展)␍ ( expression ) # 如果 expression 为真时返回真,输入注意括号前反斜杆␍ ! expression # 如果 expression 为假那返回真␍ ␍ str1 = str2 # 判断字符串相等,如 [ "$x" = "$y" ] && echo yes␍ str1 != str2 # 判断字符串不等,如 [ "$x" != "$y" ] && echo yes␍ str1 < str2 # 字符串小于,如 [ "$x" < "$y" ] && echo yes␍ str2 > str2 # 字符串大于,注意 < 或 > 是字面量,输入时要加反斜杆␍ -n str1 # 判断字符串不为空(长度大于零)␍ -z str1 # 判断字符串为空(长度等于零)␍ ␍ -a file # 判断文件存在,如 [ -a /tmp/abc ] && echo "exists"␍ -d file # 判断文件存在,且该文件是一个目录␍ -e file # 判断文件存在,和 -a 等价␍ -f file # 判断文件存在,且该文件是一个普通文件(非目录等)␍ -r file # 判断文件存在,且可读␍ -s file # 判断文件存在,且尺寸大于0␍ -w file # 判断文件存在,且可写␍ -x file # 判断文件存在,且执行␍ -N file # 文件上次修改过后还没有读取过␍ -O file # 文件存在且属于当前用户␍ -G file # 文件存在且匹配你的用户组␍ file1 -nt file2 # 文件1 比 文件2 新␍ file1 -ot file2 # 文件1 比 文件2 旧␍ ␍ num1 -eq num2 # 数字判断:num1 == num2␍ num1 -ne num2 # 数字判断:num1 != num2␍ num1 -lt num2 # 数字判断:num1 < num2␍ num1 -le num2 # 数字判断:num1 <= num2␍ num1 -gt num2 # 数字判断:num1 > num2␍ num1 -ge num2 # 数字判断:num1 >= num2␍ ␍ ␍ ##############################################################################␍
##############################################################################␍
␍
test {expression} # 判断条件为真的话 test 程序返回0 否则非零␍
[ expression ] # 判断条件为真的话返回0 否则非零␍
␍
test "abc" = "def" # 查看返回值 echo
if test -e /etc/passwd; then␍ echo "alright it exists ... "␍ else␍ echo "it doesn't exist ... "␍ fi␍ ␍
if [ -e /etc/passwd ]; then ␍ echo "alright it exists ... "␍ else␍ echo "it doesn't exist ... "␍ fi␍ ␍
[ -e /etc/passwd ] && echo "alright it exists" || echo "it doesn't exist"␍ ␍
if [ "$varname" = "foo" ]; then␍ echo "this is foo"␍ elif [ "$varname" = "bar" ]; then␍ echo "this is bar"␍ else␍ echo "neither"␍ fi␍ ␍
if [ $x -gt 10 ] && [ $x -lt 20 ]; then␍ echo "yes, between 10 and 20"␍ fi␍ ␍
[ $x -gt 10 ] && [ $x -lt 20 ] && echo "yes, between 10 and 20"␍ ␍
if [ ( $x -gt 10 ) -a ( $x -lt 20 ) ]; then␍ echo "yes, between 10 and 20"␍ fi␍ ␍
[ ( $x -gt 10 ) -a ( $x -lt 20 ) ] && echo "yes, between 10 and 20"␍ ␍ ␍
[ -x /bin/ls ] && /bin/ls -l␍ ␍
https://www.ibm.com/developerworks/library/l-bash-test/index.html␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍
while condition; do␍
statements␍
done␍
␍
i=1␍
while [ $i -le 10 ]; do␍
echo
for i in {1..10}; do␍ echo $i␍ done␍ ␍ for name [in list]; do␍ statements␍ done␍ ␍
for f in /home/*; do ␍ echo $f␍ done␍ ␍
for (( initialisation ; ending condition ; update )); do␍ statements␍ done␍ ␍
for ((i = 0; i < 10; i++)); do echo $i; done␍ ␍
case expression in ␍ pattern1a | pattern1b | ... )␍ statements ;;␍ pattern2 )␍ statements ;;␍ * )␍ otherwise ;;␍ esac␍ ␍
until condition; do␍ statements␍ done␍ ␍
select name [in list]; do␍ statements that can use $name␍ done␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ command ls # 忽略 alias 直接执行程序或者内建命令 ls␍ builtin cd # 忽略 alias 直接运行内建的 cd 命令␍ enable # 列出所有 bash 内置命令,或禁止某命令␍ help {builtin_command} # 查看内置命令的帮助(仅限 bash 内置命令)␍ ␍ eval $script # 对 script 变量中的字符串求值(执行)␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ cmd1 | cmd2 # 管道,cmd1 的标准输出接到 cmd2 的标准输入␍ < file # 将文件内容重定向为命令的标准输入␍
file # 将命令的标准输出重定向到文件,会覆盖文件␍
file # 将命令的标准输出重定向到文件,追加不覆盖␍ | file # 强制输出到文件,即便设置过:set -o noclobber␍ n>| file # 强制将文件描述符 n的输出重定向到文件␍ <> file # 同时使用该文件作为标准输入和标准输出␍ n<> file # 同时使用文件作为文件描述符 n 的输出和输入␍ n> file # 重定向文件描述符 n 的输出到文件␍ n< file # 重定向文件描述符 n 的输入为文件内容␍ n>& # 将标准输出 dup/合并 到文件描述符 n␍ n<& # 将标准输入 dump/合并 定向为描述符 n␍ n>&m # 文件描述符 n 被作为描述符 m 的副本,输出用␍ n<&m # 文件描述符 n 被作为描述符 m 的副本,输入用␍ &>file # 将标准输出和标准错误重定向到文件␍ <&- # 关闭标准输入␍ &- # 关闭标准输出␍ n>&- # 关闭作为输出的文件描述符 n␍ n<&- # 关闭作为输入的文件描述符 n␍ diff <(cmd1) <(cmd2) # 比较两个命令的输出␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ cut -c 1-16 # 截取每行头16个字符␍ cut -c 1-16 file # 截取指定文件中每行头 16个字符␍ cut -c3- # 截取每行从第三个字符开始到行末的内容␍ cut -d':' -f5 # 截取用冒号分隔的第五列内容␍ cut -d';' -f2,10 # 截取用分号分隔的第二和第十列内容␍ cut -d' ' -f3-7 # 截取空格分隔的三到七列␍ echo "hello" | cut -c1-3 # 显示 hel␍ echo "hello sir" | cut -d' ' -f2 # 显示 sir␍ ps | tr -s " " | cut -d " " -f 2,3,4 # cut 搭配 tr 压缩字符␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ awk '{print $5}' file # 打印文件中以空格分隔的第五列␍ awk -F ',' '{print $5}' file # 打印文件中以逗号分隔的第五列␍ awk '/str/ {print $2}' file # 打印文件中包含 str 的所有行的第二列␍ awk -F ',' '{print $NF}' file # 打印逗号分隔的文件中的每行最后一列 ␍ awk '{s+=$1} END {print s}' file # 计算所有第一列的合␍ awk 'NR%3==1' file # 从第一行开始,每隔三行打印一行␍ ␍ sed 's/find/replace/' file # 替换文件中首次出现的字符串并输出结果 ␍ sed '10s/find/replace/' file # 替换文件第 10 行内容␍ sed '10,20s/find/replace/' file # 替换文件中 10-20 行内容␍ sed -r 's/regex/replace/g' file # 替换文件中所有出现的字符串␍ sed -i 's/find/replace/g' file # 替换文件中所有出现的字符并且覆盖文件␍ sed -i '/find/i\newline' file # 在文件的匹配文本前插入行␍ sed -i '/find/a\newline' file # 在文件的匹配文本后插入行␍ sed '/line/s/find/replace/' file # 先搜索行特征再执行替换␍ sed -e 's/f/r/' -e 's/f/r' file # 执行多次替换␍ sed 's#find#replace#' file # 使用 # 替换 / 来避免 pattern 中有斜杆␍ sed -i -r 's/^\s+//g' file # 删除文件每行头部空格␍ sed '/^$/d' file # 删除文件空行并打印␍ sed -i 's/\s+$//' file # 删除文件每行末尾多余空格␍ sed -n '2p' file # 打印文件第二行␍ sed -n '2,5p' file # 打印文件第二到第五行␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ sort file # 排序文件␍ sort -r file # 反向排序(降序)␍ sort -n file # 使用数字而不是字符串进行比较␍ sort -t: -k 3n /etc/passwd # 按 passwd 文件的第三列进行排序␍ sort -u file # 去重排序␍ sort -h file # 支持 K/M/G 等量级符号,可与 du 结合使用␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ source /path/to/z.sh # .bashrc 中初始化 z.sh␍ z # 列出所有历史路径以及他们的权重␍ z foo # 跳到历史路径中匹配 foo 的权重最大的目录␍ z foo bar # 跳到历史路径中匹配 foo 和 bar 权重最大的目录␍ z -l foo # 列出所有历史路径中匹配 foo 的目录及权重␍ z -r foo # 按照最高访问次数优先进行匹配跳转␍ z -t foo # 按照最近访问优先进行匹配跳转␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ bind '"\eh":"\C-b"' # 绑定 ALT+h 为光标左移,同 CTRL+b / ␍ bind '"\el":"\C-f"' # 绑定 ALT+l 为光标右移,同 CTRL+f / ␍ bind '"\ej":"\C-n"' # 绑定 ALT+j 为下条历史,同 CTRL+n / ␍ bind '"\ek":"\C-p"' # 绑定 ALT+k 为上条历史,同 CTRL+p / ␍ bind '"\eH":"\eb"' # 绑定 ALT+H 为光标左移一个单词,同 ALT-b ␍ bind '"\eL":"\ef"' # 绑定 ALT+L 为光标右移一个单词,同 ALT-f ␍ bind '"\eJ":"\C-a"' # 绑定 ALT+J 为移动到行首,同 CTRL+a / ␍ bind '"\eK":"\C-e"' # 绑定 ALT+K 为移动到行末,同 CTRL+e / ␍ bind '"\e;":"ls -l\n"' # 绑定 ALT+; 为执行 ls -l 命令␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ ip a # 显示所有网络地址,同 ip address␍ ip a show eth1 # 显示网卡 IP 地址␍ ip a add 172.16.1.23/24 dev eth1 # 添加网卡 IP 地址␍ ip a del 172.16.1.23/24 dev eth1 # 删除网卡 IP 地址␍ ip link show dev eth0 # 显示网卡设备属性␍ ip link set eth1 up # 激活网卡␍ ip link set eth1 down # 关闭网卡␍ ip link set eth1 address {mac} # 修改 MAC 地址␍ ip neighbour # 查看 ARP 缓存␍ ip route # 查看路由表␍ ip route add 10.1.0.0/24 via 10.0.0.253 dev eth0 # 添加静态路由␍ ip route del 10.1.0.0/24 # 删除静态路由␍ ␍ ifconfig # 显示所有网卡和接口信息␍ ifconfig -a # 显示所有网卡(包括开机没启动的)信息␍ ifconfig eth0 # 指定设备显示信息␍ ifconfig eth0 up # 激活网卡␍ ifconfig eth0 down # 关闭网卡␍ ifconfig eth0 192.168.120.56 # 给网卡配置 IP 地址␍ ifconfig eth0 10.0.0.8 netmask 255.255.255.0 up # 配置 IP 并启动␍ ifconfig eth0 hw ether 00:aa:bb:cc:dd:ee # 修改 MAC 地址␍ ␍ nmap 10.0.0.12 # 扫描主机 1-1000 端口␍ nmap -p 1024-65535 10.0.0.12 # 扫描给定端口␍ nmap 10.0.0.0/24 # 给定网段扫描局域网内所有主机␍ nmap -O -sV 10.0.0.12 # 探测主机服务和操作系统版本␍ ␍ ␍ ##############################################################################␍
##############################################################################␍
␍
man hier # 查看文件系统的结构和含义␍
man test # 查看 posix sh 的条件判断帮助␍
man ascii # 显示 ascii 表␍
getconf LONG_BIT # 查看系统是 32 位还是 64 位␍
bind -P # 列出所有 bash 的快捷键␍
mount | column -t # 漂亮的列出当前加载的文件系统␍
curl ip.cn # 取得外网 ip 地址和服务商信息␍
disown -a && exit # 关闭所有后台任务并退出␍
cat /etc/issue # 查看 Linux 发行版信息␍
lsof -i port:80 # 哪个程序在使用 80 端口?␍
showkey -a # 取得按键的 ASCII 码␍
svn diff | view - # 使用 Vim 来显示带色彩的 diff 输出␍
mv filename.{old,new} # 快速文件改名␍
time read # 使用 CTRL-D 停止,最简单的计时功能␍
cp file.txt{,.bak} # 快速备份文件␍
sudo touch /forcefsck # 强制在下次重启时扫描磁盘␍
find ~ -mmin 60 -type f # 查找
##############################################################################␍ ␍
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head␍ ␍
netstat -n | awk '/^tcp/ {++tt[$NF]} END {for (a in tt) print a, tt[a]}'␍ ␍
sshfs name@server:/path/to/folder /path/to/mount/point␍ ␍
ps aux | sort -nk +4 | tail␍ ␍
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done&␍ ␍
wget -qO - "http://www.tarball.com/tarball.gz" | tar zxvf -␍ ␍
python -c "import test.pystone;print(test.pystone.pystones())"␍ ␍
dd if=/dev/zero of=/dev/null bs=1M count=32768␍ ␍
mount /path/to/file.iso /mnt/cdrom -oloop␍ ␍
ssh -t hostA ssh hostB␍ ␍
wget -r -l1 --no-parent -nH -nd -P/tmp -A".gif,.jpg" http://example.com/images␍ ␍
mkdir -p work/{project1,project2}/{src,bin,bak}␍ ␍
find . -type f -newermt "2010-01-01" ! -newermt "2010-06-01"␍ ␍
lsof -P -i -n | cut -f 1 -d " "| uniq | tail -n +2␍ ␍
:w !sudo tee > /dev/null %␍ ␍
source ~/github/profiles/my_bash_init.sh␍ ␍
ssh -CqTnN -R 0.0.0.0:8443:192.168.1.2:443 user@202.115.8.1␍ ␍
ssh -CqTnN -L 0.0.0.0:8443:192.168.1.2:443 user@192.168.1.3␍ ␍
ssh -CqTnN -D localhost:1080 user@202.115.8.1␍ ␍
http://www.skywind.me/blog/archives/2021␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍
function q-extract() {␍ if [ -f $1 ] ; then␍ case $1 in␍ *.tar.bz2) tar -xvjf $1 ;;␍ *.tar.gz) tar -xvzf $1 ;;␍ *.tar.xz) tar -xvJf $1 ;;␍ *.bz2) bunzip2 $1 ;;␍ *.rar) rar x $1 ;;␍ *.gz) gunzip $1 ;;␍ *.tar) tar -xvf $1 ;;␍ *.tbz2) tar -xvjf $1 ;;␍ *.tgz) tar -xvzf $1 ;;␍ *.zip) unzip $1 ;;␍ *.Z) uncompress $1 ;;␍ *.7z) 7z x $1 ;;␍ *) echo "don't know how to extract '$1'..." ;;␍ esac␍ else␍ echo "'$1' is not a valid file!"␍ fi␍ }␍ ␍
function q-compress() {␍ if [ -n "$1" ] ; then␍ FILE=$1␍ case $FILE in␍ .tar) shift && tar -cf $FILE $ ;;␍ .tar.bz2) shift && tar -cjf $FILE $ ;;␍ .tar.xz) shift && tar -cJf $FILE $ ;;␍ .tar.gz) shift && tar -czf $FILE $ ;;␍ .tgz) shift && tar -czf $FILE $ ;;␍ .zip) shift && zip $FILE $ ;;␍ .rar) shift && rar $FILE $ ;;␍ esac␍ else␍ echo "usage: q-compress <foo.tar.gz> ./foo ./bar"␍ fi␍ }␍ ␍
function ccat() {␍ local style="monokai"␍ if [ $# -eq 0 ]; then␍ pygmentize -P style=$style -P tabsize=4 -f terminal256 -g␍ else␍ for NAME in $@; do␍ pygmentize -P style=$style -P tabsize=4 -f terminal256 -g "$NAME"␍ done␍ fi␍ }␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍
export LESS_TERMCAP_mb=$'\E[1m\E[32m'␍ export LESS_TERMCAP_mh=$'\E[2m'␍ export LESS_TERMCAP_mr=$'\E[7m'␍ export LESS_TERMCAP_md=$'\E[1m\E[36m'␍ export LESS_TERMCAP_ZW=""␍ export LESS_TERMCAP_us=$'\E[4m\E[1m\E[37m'␍ export LESS_TERMCAP_me=$'\E(B\E[m'␍ export LESS_TERMCAP_ue=$'\E[24m\E(B\E[m'␍ export LESS_TERMCAP_ZO=""␍ export LESS_TERMCAP_ZN=""␍ export LESS_TERMCAP_se=$'\E[27m\E(B\E[m'␍ export LESS_TERMCAP_ZV=""␍ export LESS_TERMCAP_so=$'\E[1m\E[33m\E[44m'␍ ␍
"\eh": backward-char␍ "\el": forward-char␍ "\ej": next-history␍ "\ek": previous-history␍ "\eH": backward-word␍ "\eL": forward-word␍ "\eJ": beginning-of-line␍ "\eK": end-of-line␍ ␍ ␍ ##############################################################################␍
##############################################################################␍ ␍ https://github.com/Idnan/bash-guide␍ http://www.linuxstall.com/linux-command-line-tips-that-every-linux-user-should-know/␍ https://ss64.com/bash/syntax-keyboard.html␍ http://wiki.bash-hackers.org/commands/classictest␍ https://www.ibm.com/developerworks/library/l-bash-test/index.html␍ https://www.cyberciti.biz/faq/bash-loop-over-file/␍ https://linuxconfig.org/bash-scripting-tutorial␍ https://github.com/LeCoupa/awesome-cheatsheets/blob/master/languages/bash.sh␍ https://devhints.io/bash␍ https://github.com/jlevy/the-art-of-command-line␍ https://yq.aliyun.com/articles/68541␍ https://tiswww.case.edu/php/chet/bash/article.pdf␍ ␍