Linux Shell 小知识汇总。
basename 获取文件名
描述:从带路径的字符串中获取文件名称,或者截取字符串。
1 | var1=/usr/lib/abcdefg.so.bak |
screen 的使用
作用:后台开启终端,执行各种命令。即使当前终端已经退出,不会影响 screen 的后台终端命令的执行。
新建和连接
1 | screen -dmS back_xmt // 新建 |
断开连接
断开连接只是回到当前终端,后台 screen 命令会继续执行。
- 断开
连接后,同时按下ctrl+a进入,再接着按d,断开连接。 - 关闭
连接后,同时按下ctrl+a进入,再接着按k,关闭连接。
& 挂后台
示例:vi 1.txt & 。
查看:jobs 查看挂后台有几个进程。
前置切换:fg 1 ,其中 1 表示 jobs 查看到的第一个程序。
管理普通用户
创建和删除用户
1 | adduser fcopyuser |
查看用户所在组 groups
1 | root@ubuntu1404:~# groups xmt |
管理用户组 gpasswd
- 将用户加入管理员组:
1 | gpasswd -a xmt sudo |
再次查看,账号已经具有管理员权限:
1 | root@ubuntu1404:~# groups xmt |
- 将用户移出某个组
gpasswd -d xmt rootgroup
expect 功能
linux shell 命令行自动交互,比如自动登录,或者自动输入密码,可以使用 expect 功能。
安装
sudo apt-get install expect
示例
自动输入 scp 需要的密码:
1 | !/bin/bash |
crontab 定时任务
格式
格式:M H D m d cmd 。其中:
M: 分钟(0-59)H:小时(0-23)D:天(1-31)m: 月(1-12)d: 一星期内的天(0~6,0为星期天)cmd要运行的程序,程序被送入sh执行。
该命令中只有
USER, HOME, SHELL这三个环境变量,如果需要使用其他环境变量,需要在cmd中export这些变量。
使用方法
crontab –l:查看当前的任务crontab –e:编辑(新建)任务crontab –r:删除任务表sudo service cron restart:重启crontab服务
示例
定时执行脚本:
1 | 定时每天 10 点 21 分执行脚本 |
TAR 常用命令
- 压缩:
tar zcf dest.tgz source
注意:source不要带路径,否则会将路径目录也压缩进去。如/home/source,会把home这个目录也压缩到包中。
压缩命令z表示用gzip压缩;如果不带z表示仅打包。 - 解压:
tar zxf dest.tgz - 不解压,直接查看压缩包有哪些文件:
tar tvf dest.tgz - 分卷压缩
tar zcf - test.pdf | split -b 5M - dir/test.tar.gz,注意两个短横不能漏掉;-b后面表示每卷最大值。
字符串操作
获取字符串中的数字
如:echo "ere1j32kk4" | tr -cd '[0-9\n]' #1324 。
当前时间 date
命令:date +%Y%m%d%H%M%S # 20141126104053 。格式:Y 年,m 月,d 日,H 小时,M 分,S 秒。
查看服务器上用户登录日志
cat /var/log/auth.log
把自己的命令添加到环境变量中
新建
bin目录:mkdir –p $HOME/bin新建可执行命令:
touch my.sh ;chmod +x my.shbin目录加入到环境变量中1
2
3root@ubuntu1404:~# vi ~/.bashrc
add my exec bin
PATH=$PATH:$HOME/bin重新加载环境变量:
source ~/.bashrc至此
bin目录下所有可执行文件都加入到环境变量了
7z 格式文件操作
解压缩
示例 1 :当前目录解压:7za x po9041_20141202.7z
示例 2 :解压到指定目录:7za x po9041_20141202.7z -opo9041_20141202
其中 -o 后面不能有空格。
压缩
使用 du 查看大小并按照大小排序
1 | du -sh `du -s * | sort -rn| awk '{print $2}'` |
开机自启动脚本
新建脚本
创建脚本后,并将脚本拷贝到 /etc/init.d/ 目录下。
1 | sudo -s |
update-rc.d 命令
update-rc.d 命令用来设置开机启动的优先级。
1 | update-rc.d <basename> start|stop <order> <runlevels> |
其中:update-rc.d sample_init_script defaults 命令等效于(中间是一个英文句点符号):update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6 .,表示在 2, 3, 4, 5 这五个运行级别中,由小到大第 20 个开始运行 sample_init_script;在 0 1 6 这 3 个运行级别中,第 20 个关闭 sample_init_script 。这是合并起来的写法,注意它有 2 个点号。
比如,我们将 gerrit_start 脚本放在第 99 顺位命令后执行:
1 | root@gm-20180529:/etc/init.d# update-rc.d gerrit_start defaults 99 |
sysv-rc-conf 命令
sysv-rc-conf 命令可以直观的查看,并勾选运行级别。
- 安装:
apt-get install sysv-rc-conf - 查看
1 | root@gm-20180529:~# sysv-rc-conf |
grep 常见操作
在指定文件类型中搜索
比如在 cpp, java, h 文件中搜索字符串 adjustment ,命令如下:
1 | grep --include=*.{cpp,java,h} -irsn "adjustment" frameworks/ |
设置代理
在当前用户 shell 环境下设置代理,打开 ~/.bashrc 文件,添加如下代码:
1 | # http_proxy |
其中 ip:port 是代理服务器的地址以及开放的端口;重新连接或者执行 source ~/.bashrc 生效!验证结果:
1 | xmt@server138:~$ wget https://www.google.com |