# Linux工程场景

<font style="background:yellow">
1

# 目录

[TOC]

# ✔️公司Ubuntu的环境配置

# 1.默认使用sh而不是bash导致的问题

$ echo $SHELL
/bin/sh
1
2

(1)键盘的方向键,不能上下翻页了

(2)不能够Ctrl+L快捷键

(3)ll也定义了别名,并不存在

(4)TAB不能自动补全

解决方案,改为bash

非管理员修改shell

  • 如果你没有管理员权限, 那么你只能修改自己的 Shell, 输入 chsh 命令.
chsh
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]:/bin/bash
1
2
3
  • 这样,你下次远程登录也能默认用bash了

# ✔️代码获取

# 1.解压缩-tar双后缀

  • 解压缩,解压缩到当前目录
tar -xzvf temp.tar.gz -C ./
1
  • 记忆法

  • 第1部分「解决用途」

    • -c: 「create」建立压缩档案

    • -x:解压「联想记忆:rwx的x是执行,就当“执行”是解压吧

    • -t:查看内容

    • -r:向压缩归档文件末尾追加文件

    • -u:「update」更新原压缩包中的文件

    • 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

  • 第2部分「解决后缀」

    • -z:「对应test.tar.gz,记忆就是尾巴是z」有gzip属性的
    • -j:「对应test.tar.bz,这个强行记忆」有bz2属性的
    • -Z:有compress属性的
    • -v:「常用」显示所有过程
    • -O:将文件解开到标准输出
  • 第3部分「必选,只能放最后!」

    • -f: 使用档案名字,切记,这个参数是最后一个参数后面只能接档案名
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 

tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux



解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

//解压文件重命名⭐️为temp
whoway@XXXXX:~/.vim$ unzip taglist_46.zip -d temp		⭐️
Archive:  taglist_46.zip
  inflating: teee/plugin/taglist.vim  
  inflating: teee/doc/taglist.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# 2.解压缩-单后缀

  • 1、*.tartar -xvf 解压

  • 2、*.gzgzip -d或者gunzip 解压

  • 3、*.tar.gz*.tgztar -xzf 解压

  • 4、*.bz2bzip2 -d或者用bunzip2 解压

  • 5、*.tar.bz2tar -xjf 解压

  • 6、*.Zuncompress 解压

  • 7、*.tar.Ztar -xZf 解压

  • 8、*.rarunrar e解压

  • 9、*.zipunzip 解压

参考资料:https://mp.weixin.qq.com/s/iKwmdOxBkaEKItHyZZke9w (opens new window)

# 3.linux命令:返回上一次目录

有时候千辛万苦进入了一个很深层的目录,一不小心输入了cd并回车,有什么办法快速回到刚才所在的目录呢?对于bash来说,只需要很管理的一个命令:

  • cd -
该命令等同于cd $OLDPWD,关于这一点在bash的手册页(可使用命令man bash访问其手册页)中有介绍:

An argument of - is equivalent to $OLDPWD. 
1
并且它还会返回上一次目录的物理路径。
1
2
3
4
5

# 4.shell中5种括号的作用()(())[][[]]{}

记忆方法:

  • 2组,()(())
  • 2组,[][[]]
  • 1组,{}

# 4.1.单小括号 ()

  • ①命令组

括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。

括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。

  • ②命令替换
等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
1
  • ③用于初始化数组

如:array=(a b c d)

# 4.2.双小括号(( ))

  • ①整数扩展。

这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。

  • ②只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。

作不同进位(如二进制、八进制、十六进制)运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制)

  • ③单纯用 (( )) 也可重定义变量值

比如 a=5; ((a++)) 可将 $a 重定义为6

  • ④常用于算术运算比较,双括号中的变量可以不使用$符号前缀。

括号内支持多个表达式用逗号分开。 只要括号中的表达式符合C语言运算规则,比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in seq 0 4或者for i in {0..4}。再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]。

# 5.rm的记忆法⭐️

# 5.1.Linux rm删除(指定文件外⭐️)的其他文件方法汇总 (opens new window)

XXX@XXXX:~$ ls
ABOUT-NLS        solve.cpp cfo-branch.zip     Makefile.def        mkdep         README.SCO      zlib
XXX@XXXX:~$ rm -rf !(cfo-branch.zip|solve.cpp)	
XXX@XXXX:~$ ls
cfo-branch.zip  solve.cpp
1
2
3
4
5
  • 我的记忆法:这是数学上集合的概念:!表示逻辑的补集
  • 显然,我们做法是删掉补集就是告诉我们留下里面的

# ✔️代码提交

# 1.linux 下文件夹的复制、覆盖以及确认问题解决

  • 问覆盖
  • https://blog.csdn.net/QH_JAVA/article/details/51597604
[root@CentosLinux gcc]# ls
solve.cpp
[root@CentosLinux gcc]# cd ..
[root@CentosLinux ~]# ls
gcc  myfrp  solve.cpp  webserver
[root@CentosLinux ~]# cp solve.cpp gcc/
cp: overwrite ‘gcc/solve.cpp’? y
1
2
3
4
5
6
7

# 2.Linux你的用户下各种小玩意

# .bash_history

  • 应用场景:有公司用户为你复现了某代码,可以用这个查看历史
  • 清除linux的history 命令历史记录history -c
  • .bash_history是bash shell的历史记录文件,里面记录了你在bash shell中输入的所有命令。可通过HISSIZE环境变量设置在历史记录文件里保存记录的条数

# .bash_logout

  • bash_logout在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中

# .bashrc

# .gitconfig

# .profile

  • 在 ==/etc目录==的bashrc和profile是系统级(全局)的配置文件,当在==用户主目录==下找不到.bash_profile 和.bashrc时,就会读取这两个文件。

# .viminfo

# .vimrc

  • resource,资源
# `.ssh`文件夹

# `.cache`文件夹
1
2
3

# E6.纯键盘操作电脑

# 1.电脑+纯命令行

  • Mac或Windows

# 2.chrome+插件vimium

  • d向下翻半页
  • u向上翻半页
  • B启用浏览器
  • gs查看源码
  • r刷新
  • ==o 从URL、书签、历史记录中搜索地址,回车打开==
  • ==x关闭当前页面==
  • shift+/:打开Vimium帮助,设置。

j和k和vim一致

参考资料:vimium 成神之路,https://zhuanlan.zhihu.com/p/64533566

# 3.hunt and peck(hap)

如果喜欢使用键盘控制一切,hunt and peck(hap)

  • 激活hap的快捷键是 ==alt + ;== ,我们无法直接更改,作者的建议是使用AutoHotKey等类似的程序设置一个自定义热键启动带/hint参数的hap,hint会起到直接激活的作用。

# 参考资料

  • 键盘

# 参考资料