# Linux工程场景
<font style="background:yellow">
# 目录
[TOC]
# ✔️公司Ubuntu的环境配置
# 1.默认使用sh
而不是bash
导致的问题
$ echo $SHELL
/bin/sh
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
2
3
- 这样,你下次远程登录也能默认用bash了
# ✔️代码获取
# 1.解压缩-tar双后缀
- 解压缩,解压缩到当前目录
tar -xzvf temp.tar.gz -C ./
记忆法
第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
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、
*.tar
用tar -xvf
解压2、
*.gz
用gzip -d
或者gunzip
解压3、
*.tar.gz
和*.tgz
用tar -xzf
解压4、
*.bz2
用bzip2 -d
或者用bunzip2
解压5、
*.tar.bz2
用tar -xjf
解压6、
*.Z
用uncompress
解压7、
*.tar.Z
用tar -xZf
解压8、
*.rar
用unrar e
解压9、
*.zip
用unzip
解压
参考资料: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
并且它还会返回上一次目录的物理路径。
2
3
4
5
# 4.shell中5种括号的作用()
、(())
、[]
、[[]]
、{}
记忆方法:
- 2组,
()
和(())
- 2组,
[]
和[[]]
- 1组,
{}
# 4.1.单小括号 ()
- ①命令组
括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。
括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
- ②命令替换
等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
- ③用于初始化数组
如: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
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
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`文件夹
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会起到直接激活的作用。
# 参考资料
- 键盘