shell常用命令

1. 目的

环境: Ubuntu16.04
梳理

2. 系统相关

2.1 设置root用户密码

1. 开机进入桌面,ctrl+alt+T打开终端
2. 在此处输入:sudo passwd root
3. 设置root密码
4. 进入root账号: 终端上输入:su  回车键 , 然后输入设置的新密码,即可

2.2 重新添加系统睡眠选项

1. 先检查是否有交换分区(swap),如果有确认交换分区至少和实际可用内存一样大。
2. 按Ctrl+Alt+T开启终端或者Dash搜索开启终端
3. 运行sudo pm-hibernate,输入密码后回车。
4. 如果休眠测试无法正常工作,就说明你的计算机无法进行休眠。
5. 如果休眠测试可以正常工作,进入root权限,新建文件/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla添加以下内容后保存
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes

6、关闭所有程序,重启计算机。
7、重启后,菜单中就有休眠选项了。

3. 编码

3.1 base64

场景1: 把字符按照base64编码
echo -n 哈哈 | base64 
# 结果如下:
5ZOI5ZOI

场景2: 把字符按照base64解码
echo -n 5ZOI5ZOI | base64 -d
# 结果如下:
哈哈

4. alias与export

尽量使用export
alias , 使用which 命令找不到, 但是export可以

5. 空间大小

  • df -h //查看磁盘各分区大小、已用空间等信息
  • du -sh filename //查看文件夹大小
  • du -sh 查看当前目录以下搜索文件和子目录大小

6. 后台运行

  • 场景: 比如启动ipython notebook等,不希望打印log, 希望启动完后退出log输出;
# 命令后面加& 
ipython notebook &

7. watch

  • 场景: 可以检查, watch是一个非常实用的命令,可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了
  • watch命令

8. rsync | scp

  • 两个 命令都是传送文件, 但前者可以只传增量变化的文件, 跳过两次不变的文件, 更强大
  • rsync -av yourname@IP:sourcePath DesPath

9. diff

  • 场景: 比较两个文件不同地方
diff file1 file2
# 如果想看的更清楚, 共同和不同的都打印
vimdiff file1 file2

9.1 meld

  • 场景: 找出两个文件不同的地方, 可视化的界面, 非常类型git compare.
    meld file1 file2

10.vim: 大小写替换

vim中大小写转化的命令是
gu或者gU
形象一点的解释就是小u意味着转为小写;大U意味着转为大写.
# 1、整篇文章大写转化为小写
  打开文件后,无须进入命令行模式。键入:ggguG 

解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束
# 2、整篇文章小写转化为大写
  打开文件后,无须进入命令行模式。键入:gggUG 

解释一下:gggUG分作三段gg gU G
gg=光标到文件第一个字符
gU=把选定范围全部大写
G=到文件结束
# 3、只转化某个单词
guw 、gue
gUw、gUe
这样,光标后面的单词便会进行大小写转换
想转换5个单词的命令如下:
gu5w、gu5e
gU5w、gU5e
# 4、转换几行的大小写
将光标定位到想转换的行上,键入:1gU 从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0        :从光标所在位置到行首,都变为大写
gU$        :从光标所在位置到行尾,都变为大写
gUG        :从光标所在位置到文章最后一个字符,都变为大写
gU1G      :从光标所在位置到文章第一个字符,都变为大写

11. linux权限管理

12. date

# 给定日期字符串, 转换显示格式, 包括可转为时间戳
date -d "dateString"  +"formatString"   
$ date -d "19700101 08:00:00" +%s 
0

# 给定时间戳, 转换对应日期字符串
date -d @timestamp  +"formatString" 
$ date -d @0 +"%Y%m%d %H:%M:%S"
19700101 08:00:00

# 给定日期进行加减
date -d -ndays +"formatString"
$ date -d -4days +"%Y-%m-%d"
2018-02-01

13. dirname

使用dirname在shell脚本中获取当前脚本文件所在的绝对路径.

# 比如: 找出python对应的文件绝对路径
dirname $(which python) 
# 找出本地安装sbt的路径
 echo $(dirname $(dirname $(readlink -f $(which sbt))))

14. xargs

  • https://www.tecmint.com/xargs-command-examples/
# 针对id_file, 每行在file1中做grep操作
cat id_file
123
233
245

cat id_file | xargs -n1 -I {} grep {} file1 
# 批量转化时间戳为日期
# 比如, 文件file每行存放时间戳, 如下:
1539912736
1538992708
1538992479
# 使用如下命令, 批量转化:
cat file | xargs -n1 -I {} date -d @{} 

你可能感兴趣的:(shell常用命令)