NanYin的博客

记录生活点滴


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Search

IDEA 中的快捷键

Posted on 2018-07-12 | In 工具
Words count in article: 448 | Reading time ≈ 1

IDEA 中的快捷键

以前经常用idea开发,但是竟然没有怎么使用到idea的快捷键。。没有真正的使用到idea中非常重要的特性。今天正好看到了有一篇微信公众号里文章总结了关于常用的idea快捷键。
遂而也想小小总结一下,希望在以后的开发中多用快捷键,提高开发效率。

代码

  1. ctrl+alt+o = 优化导入的包

  2. alt+insert = 加入代码

  3. ctrl+alt+T = 生成try–catch结构

  4. alt+回车 = 导入包

  5. ctrl+alt+l = 格式化代码

  6. ctrl+e = 最近更改的代码

  7. Shift+F6 = 重构-重命名 包、类、方法、变量、甚至注释等

搜索

  1. ctrl+Shift+backspace =回到上次编辑的地方

  2. ctrl+alt+left/right = 回到前后编辑的地方

  3. Shift+Shift 在目录中查找类

  4. ctrl+n 查找类

  5. ctrl+Shift+n 查找文件

  6. ctrl+e 打开最近文件

  7. ctrl+f 文件内容查找

  8. ctrl+shift+f 全局内容查找

  9. ctrl+w 快速选中

  10. ctrl+b/ctrl+alt+b 对应这回溯到父类和到子类的快捷键

对行的删除,复制,粘贴操作可以使用vim插件来实现

最后vim的十大快捷键(copy的)

Ø Top #10切来切去:Ctrl+Tab

Ø Top #9选你所想:Ctrl+W

Ø Top #8代码生成:Template/Postfix +Tab

Ø Top #7发号施令:Ctrl+Shift+A

Ø Top #6无处藏身:Shift+Shift

Ø Top #5自动完成:Ctrl+Shift+Enter

Ø Top #4创造万物:Alt+Insert

太难割舍,前三名并列吧!

Ø Top #1智能补全:Ctrl+Shift+Space

Ø Top #1自我修复:Alt+Enter

Ø Top #1重构一切:Ctrl+Shift+Alt+T

另外补充

  1. alt+1 project视图

  2. alt+7 类方法结构

  3. alt+home 显示导航栏

  4. shift+f6 重命名

  5. ctrl+shift+加号 折叠代码

关闭tab页其实是有必要的

bash学习记录(十六) bash学习终章

Posted on 2018-07-07 | In Bash
Words count in article: 936 | Reading time ≈ 3

bash学习终章

学习bash有很长时间了,很多时间花费在学习基础语法上,没有真正的上手实践编写一些使用的bash脚本,接下来我把剩余的比较常见的bash语法学习完,找一些github上的的大牛写过的bash脚本去先
分析,然后自己边理解边实践吧,我的目标就是能够基本熟练的使用bash脚本。

bash的list结构

这里所说到的list结构不是Java语言中的list结构,而是在做条件的时候的一种链式机构,可以使用 && 或者 || 来处理多个命令的方法。

其中分为两种简单的结构

  • 和结构 (and list)

这种结构会同时比较多个命令,如果前一个命令返回true,则下一个命令一次去执行。但是如果前一个命令返回false,那么后面都不去执行(命令链终止)。

1
2
# command-1 && command-2 && command-3 && ... command-n
if [ ! -z "$1" ] && echo "Argument #1 = $1" && [ ! -z "$2" ] &&
  • 与结构 (or list)

这个结构和 and list正好相反,如果前一个命令返回false,则下一个命令依次去执行。如果前一个命令时ture,那么终止命令链。

1
2
# command-1 || command-2 || command-3 || ... command-n
[ ! -f "$file" ] || (rm -f $file; echo "File \"$file\" deleted.")

bash中的数组

数组也是非常常见的一种数据结构,那么在bash中如何初始化和使用数组呢

1
2
3
4
5
6
7
8
# 第一种方式为数组赋值
area[11]=23
area[13]=37
area[51]=UFOs
# 第二种方式
area2=( zero one two three four )
# 第三种方式
area3=([17]=seventeen [24]=twenty-four)

可以看到可以方便的使用小括号进行数组的初始化,以后会接触到更多关于bash数组的实例,比如写一个使用bash的冒泡排序。

Linux中的 /dev和 /proc

  • /dev 是设备文件的目录,可以看出来dev时device设备的缩写。如果想查看某些特定设备的文件,可以直接去对应的 /dev/*的目录下面去找对应的目录就行了。

作为参考

/dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/null:无限数据接收设备 ,相当于回收站
/dev/zero:无限零资源
/dev/tty[0-63]:虚拟终端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
  • /proc 可以看作是一个文件系统,但是是伪文件系统,因为他之存储一些当前内核状态的一系列特殊文件。以下就不详细举例了,可以看看这个文件夹下的内容。使用 cat命令或者less之类的查看。

bash中的null和0

bash中的null和zero是通过设备资源文件 /dev/null , /dev/zero 来实现的

  • null 使用 dev/null 这个设备文件是一个”黑洞”,可以看作是一个只能够写文件。写进去的东西都会被清空,当然也可以使用从 /dev/null 写入到文件来实现清空文件内容的目的。
1
2
cat newfile1 > /dev/null #会什么也不输出
cat /dev/null > /var/log/wtmp # 清空该文件内容
  • zero 为指定目的的文件来清零(指定大小的文件)

以上就是我在bash学习中的所有内容,当然会在以后写一些实际的bash脚本。这个bash学习系列就写到这。

bash学习记录(十五)bash中的函数定义与使用

Posted on 2018-07-03 | In Bash
Words count in article: 409 | Reading time ≈ 1

bash中的函数

其实bash函数和bash脚本时一样的,函数的使用如同使用一段bash脚本块一样。但是定义为bash函数执行更快。

函数定义与调用

与很多脚本语言一样,使用 function 作为关键词来声明函数。下面来使用一段例子代码来说明函数的定义的格式。乍一看是不是和js有点像呢。。

1
2
3
4
5
function hello(){
echo "使用函数会输出这句话"
return 1
}
hello #使用函数

函数的参数传递

与编写bash相似,参数使用 $+位置的形式获取 如$1获取紧跟在调用函数后的第一个参数的值。

1
2
3
4
5
6
7
function hello(){
echo "使用函数会输出这句话"
echo "输出第一个参数 $1"
return 1
}
hello world
# 输出结果 ‘ 输出第一个参数 world ’

函数的返回值

使用return来返回特定值 如上面的函数中使用到了 return 1 ,在return后发生的语句都不能被执行。并且return的的值只能在1~256之间的数。使用$?来获取返回到值。

函数的嵌套

如同在Java js中使用函数类似,bash中的函数也允许使用嵌套结构。但是需要在外层函数调用内容函数。这是当然的了,因为在内部声明函数,却没有调用,这当然时不起作用的了。

1
2
3
4
5
6
7
8
9
10
11
function x1(){
echo "在函数x1中!"
function x2(){
echo "在函数x2中!"
}
x2 # 这里需要调用内层函数
}
x1
#结果:
#在函数x1中!
#在函数x2中!

bash学习记录(十四)linux中的IO

Posted on 2018-07-01 | In Bash
Words count in article: 320 | Reading time ≈ 1

linux中的IO

分类

linux中总有三种文件,一种时stdin(标准输入),stdout(标准输出),stderr(标准错误),可以重定向这些和其他任意文件,重定向的目的就是可以将文件中的任意内容作为输出或者输出源。

正文

系统为每一个打开的文件分配一个文件描述符(FD),为标准输入stdin,标准输出stdout,标准错误stderr分别分配给0,1,2

简单输入输出:

1
2
3
4
5
echo "helloworld"  > newfile1
echo "helloworld" 1 > newfile1 #等同于第一句
echo "helloworld" 1 >> newfile1 #追加内容

command < newfile1 #标准输入 同理等同于cat 0 < newfile1

使用标准输出和标准错误输出

1
2
3
ls 2> newfile #将错误信息输出到newfile中
ls > newfile 2>1& #将标准输入和标准输出一起输出到newfile中
# 其中&表示和的关系

绑定重定向

1
2
3
4
5
ls >& m #把标准输出到文件描述符m中
ls < &- #关闭标准输入
n < &- #关闭输入文件描述符n
n > &- #关闭输出文件描述符n
1>&-, >&- # 关闭标准输出

其实在linux 下一切都是文件。把所有都想成文件就好理解的多了。

bash学习记录(十一)命令篇(2)

Posted on 2018-06-24 | In Bash
Words count in article: 804 | Reading time ≈ 3

bash命令令篇(二)

基本命令

基本命令就是非常需要初学者掌握的重要的知识点,只有掌握这种基本的命令才能稍微熟练的操作linux。具体的基本命令也不一一列举了,对于这种基本命令用几遍就能够掌握了。而且网上的教程一大堆。

时间日期命令

  • date: 打印或者是设置本地时间。主要语法可以 man date 主要有date -u 打印 UTC时间。在后面可以使用 +参数的形式格式化为具体的时间格式。

  • zdump: 输出特殊时区的时间。如 zdump EMP

  • time: 输出详细的时间信息比如 time ls -l

  • at: at命令一般使用在特定时间执行的时候。

  • batch:batch命令和at命令相似。不同在于batch命令能够同时处理多条命令。

  • cal:cal命令可以整洁的打印出来日历

  • sleep:sleep可以使shell暂停固定时间长度

  • hwclock:访问硬件系统时间。需要管理员权限。

文本和文件处理命令

  • sort:文件排序的实用性工具,同时出现在管道当中,可以使用-m选项合并预分类的输入文件。

  • uniq:使用uniq命令能够去除重复的行,通常和sort使用在管道当中。

1
2
3
4
$ cat list_1.txt|uniq -c|sort -nr
5 this is the second line
3 this is the first line
1 this is the third line
  • expand:可以将tab转换成普通空格,unexpand可以将空格转换成tab,同样比较常见在管道命令当中。

cut:从文件中提取字段的工具

1
$ cut -d ' ' -f 1,2 list_1.txt
  • paste:合并两个文件的内容,是每行都对应合并。而不是一个文件合并到另一个文件的下面。

  • join:和paste命令相似,但是join命令只粘贴两文件有共同标记的行,一般这个标记是数字。

  • head:输出文件的前10行,也可以更改输出的行数。

  • tail:输出文件的末尾10行,同样的可以更改输出的行数。

  • grep:正则匹配出文件的内容,一般使用在管道中,用来匹配上一个输入或者文件的匹配到的内容

1
2
3
$ cat list_1.txt| grep "third"  
this is the third line
^ 这里的third是红色的表示匹配到的内容
  • wc:输出文件的行数字数等信息
1
2
3
$ wc /usr/share/doc/sed-4.1.2/README
13 70 447 README
[13 lines 70 words 447 characters]
  • tr 字符翻译的过滤器,将特定字符替换成其他字符
1
2
3
4
$ tr "is" "*" < list_1.txt  
th** ** the f*r*t l*ne
th** ** the *econd l*ne
th** ** the th*rd l*ne
  • nl nl和cat -b有着相似的意义,都能够连同行号打印出来,不同的是,nl可以将空行去除掉。

  • iconv 这个命令能够将文件转换编码,如utf-8转换成utf-16这类的转化。

这类命令真的很多,需要积累的东西也很多,我在这里就做个简单的说明,具体的使用可以 man 命令 查看具体的使用方法。也是学习的一种方式!!

bash学习记录(十二)命令篇(3)

Posted on 2018-06-24 | In Bash
Words count in article: 577 | Reading time ≈ 2

bash命令篇(三)

bash中的关于通信的命令

  1. host 通过ip或者域名搜索互联网的主机地址(使用DNS)
1
2
3
4
5
$ host www.baidu.com
www.baidu.com has address 61.135.169.125
www.baidu.com has address 61.135.169.121
www.baidu.com is an alias for www.a.shifen.com.
www.baidu.com is an alias for www.a.shifen.com.
  1. nslookup 向上寻找name server
1
2
3
4
5
6
7
8
9
10
11
12
$ nslookup  -sil 66.97.104.180 
Server: 127.0.1.1
Address: 127.0.1.1#53

Non-authoritative answer:
180.104.97.66.in-addr.arpa name = 66-97-104-180.dynamic.bugtusselwireless.com.

Authoritative answers can be found from:
104.97.66.in-addr.arpa nameserver = ns2.bugnet.net.
104.97.66.in-addr.arpa nameserver = ns1.bugnet.net.
ns1.bugnet.net internet address = 204.11.133.241
ns2.bugnet.net internet address = 204.11.133.244
  1. ping 熟知的ping命令,常用来探测与另一个主机是否有网络链接

  2. ftp 从远程主机下载或者上传给远程主机的协议。

  3. telnt 链接远程主机的协议

  4. wget 使用非交互式的从网站web或者ftp站点下载文件。

  5. rcp 远程拷贝,在两台不同的机器间拷贝。

  6. ssh secure shell 他代替了telnt rcp等命令。

  7. scp secure cp 他用来代替rcp命令,需要登录授权的远程拷贝文件的命令。

    这里只是简略的谈谈常见的关于机器交互的命令,这些都是熟能生巧的东西,最重要的是要上手练习。

数学运算符

  1. dc:dc是使用逆波兰表示法进行计算,如 11 + ,3 6 *

  2. bc:bc是现代linux下比较常见处理复杂运算的命令那个,可以计算浮点数。

1
2
3
4
5
6
7
8
9
10
11
$bc -l -q
4/3 /*未指定精度默认保留整数*/
scale=5 /*指定精度为5*/
4/3
1.33333
ibase=2 /*指定进制转换的输入机制为二进制,输出默认为是十进制*/
10
4^2 /*指数运算,注:指数不能为浮点数*/
4*a(1) /*计算π值,a()是个函数:arctan(),好吧,老师教的都被狗吃了,π值是等于四倍的arctan(1)么?*/
3.14159265358979323844
quit /*退出*/
  1. let: 表达式可以应用在let命令当中。

其实在我使用linux系统的几年里,感觉命令不能死记硬背,多用自然就会掌握了。但是有些比较冷门的命令还是背下来比较好 - -。

bash学习记录(十三)命令篇(4)

Posted on 2018-06-24 | In Bash
Words count in article: 711 | Reading time ≈ 2

系统命令

linux上提供非常多的有关于系统的命令,我只能挑出我比较常见的命令来记录下来。

用户与用户组

  • users 显示所有登录用户

  • groups 列出当前用户和他所在的用户组

1
2
$ groups
nanyin adm cdrom sudo dip plugdev input lpadmin sambashare
  • chown 命令可以改变文件所属的用户或者用户组。也可以简单的理解给用户某些文件的权限。

  • chgrp 命令可以改变用户所属组。

  • useradd 可以为系统添加一个用户,并且在创建该用户的home文件夹。删除用户可以使用userdel命令进行删除。

  • usermod 命令可以改变用户属性,可以是密码也可以是用户组之类的

  • id 命令可以打印出用户及所在用户组的用户名和组名以及对应的id值

  • whoami 打印出当前用户的用户名称

  • passwd 设置,更改和管理用户的密码

基本信息和状态

  • uname 可以输出系统的具体参数如内核版本等信息。

  • arch 可以输出系统基于多少位

  • nc (netcat)是用于连接和侦听TCP和UDP端口的完整工具包。

  • lsdev 输出设备,也就是硬件信息

  • df 格式化输出文件系统占用比 一般使用df -h

  • stat 输出文件的状态信息。

系统工作流

  • ps 查看进程信息 通常后面加 ax 或者 aux 使用。

  • pstree 以树形结构展示进程信息。

  • top 输出cpu的信息使用 -b参数以text的形式输出。能够以静态的方式查看。

  • nice用于指定进程调节优先级的命令。

  • pidof 可以输出具体进程的id 如:pidof xclock 会输出 xclock的进程id号。

网络

  • nmap 网络映射和端口扫描(现在只记得大学时网络攻防里用过windows里有个工具叫nmap什么的。。)参数有很多。。

  • ifconfig 最熟的查看网络接口设置。

  • netstat 输出网络状态和信息,如路由表和连接状态等。

  • ip 可以查询和设置ip和访问网卡设别信息

文件系统

  • mount 挂载文件系统

  • umount 卸载设备

  • sync 强制立即从缓冲区写入数据以来达到立即更新数据的目的。

  • mkswap swapon swapoff 分别对应格式化为交换分区,启动交换分区,关闭交换分区。

  • fdisk 创建或更改分区表,也就是用来分区的工具。非常常见。当时我还是选择cfdisk

  • lspci 输出总线信息,和连接总线的设备信息。

其实还有很多命令没有涉及到,如果想练习这些基本的系统命令的话,可以跟着arch wiki 装一遍arch,装完后这里的命令就都能记住了。

关于ElementryOS图形界面挂起之后唤醒后出现黑屏问题

Posted on 2018-06-23 | In Linux
Words count in article: 101 | Reading time ≈ 1

关于ElementryOS图形界面挂起之后唤醒后出现黑屏问题

这两天在ElementryOs上踩到了坑,为了以后少踩点这种坑,打算以后将这种小问题也写下来。

如何解决:安装 xserver-xorg

在ElementryOS的终端中使用 $ sudo apt-get install xserver-xorg 我使用这个方法可以解决问题

解决时间:2018-6-23 版本:ElementryOS Loki 0.4

bash学习记录(十)命令篇(1)

Posted on 2018-06-19 | In Bash
Words count in article: 1.1k | Reading time ≈ 5

Bash中的命令

内建命令

内建命令是bash工具集中自带的命令,好处是执行速度比外部命令要快,因为内建命令一般直接执行命令,而外部命令一般要分支出一个子进程。

I/O操作

  • echo 当然是最熟悉的echo命令进行输出了。但是需要注意的是在使用 echo `command ` 的时候echo会默认将取消输出的所有换行。

再当使用 echo “`command`“的时候可以避免换行符的缺失。

1
2
3
4
5
echo "`ll`"
total 12K
drwxr-xr-x 2 nanyin nanyin 4.0K Jun 19 21:18 bash
drwxr-xr-x 3 nanyin nanyin 4.0K Jun 18 21:16 git
-rw-r--r-- 1 nanyin nanyin 1.1K Jun 19 21:31 总结.txt
  • printf 在C中使用的printf 能够格式化输出内容。
1
2
3
4
5
# 基本使用
printf format-string... parameter...
# 例子
declare -r PI=3.1415926535
printf "pi to 2 decimal is %1.2f" $PI # pi to 2 decimal is 3.14%
  • read 读取参数的命令,可以通过这个命令读取输入参数。通常情况下,在输入read数据期间输入\会抑制换行符。 -r选项会导致输入的\被字面解释。同样read命令有很多参数可以使用
1
2
3
echo "please input a value:"
read var1
echo "input var1 is $var1"

当read 后面不跟任何值的话他默认给 $REPLY 赋值,之后可以取这个值作为read进来的值。

在当输入内容后面加上 / 的话会起到输入时候的换行的作用,而使用 -r 参数会将 /按照原样输出出来

1
2
3
4
5
6
echo "input var1 is $var1"
echo "Enter a string terminated by a \\, then press <ENTER>."
echo "Then, enter a second string (no \\ this time), and again press <ENTER>."
read
echo "the default value is $REPLY"
# 当read后面不写具体值的时候会把值付给 REPLY

read有很多有用的参数可以调用,实现复杂的输入功能。

1
2
3
4
5
read -s -n1 -p "Hit a key " keypress
# read 有很多非常有意思的参数,比如 -s的意思就是不要回显输入
# -n1 的意思是输入指定数量的字符
# -p 是先输出前面的提示。
echo; echo "Keypress was "\"$keypress\""."

read也可以使用文件作为输入的源

1
2
3
4
5
6
7
8
9
10
11
12
13
echo "文件temp_file中内容有两行 一行是hello world 第二行是 Hello World"
read var1 var2 < temp_file
echo "var1 is $var1 var2 is $var2"
echo "这里显然输出的第一行的内容"
echo "---------------------------"
echo "其实还能自定义IFS分割符然后根据规则自定义文件输入"
echo "all users in the list:"
OIFS=$IFS ; IFS=:
while read name passwd uid gid fullname ignore
do
echo "$name ($fullname)"
done < /etc/passwd
IFS=$OIFS

文件系统操作

操作文件系统的命令有很多但是都非常的常用也非常的简单。这里不做具体的说明其中举一两个非常常见的。

cd : 切换目录

pwd : 查看当前工作目录

变量操作

let 是能够进行简单变量运算的命令 比如

1
2
3
4
let a=1+2
echo $a
let b="2+3"
echo $b

eval 命令是能够将字符串转换成成命令。并且可以多次调用以去评估是否是命令去执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

command_string="ps ax"
process="ps ax"
eval "$command_string" | grep "$process"
# 26973 pts/3 R+ 0:00 grep --color ps ax
# 26974 pts/3 R+ 0:00 ps ax

a='$b'
b='$c'
c=d
echo $a # $b
# First level.
eval echo $a # $c
# Second level.
eval eval echo $a # d
# Third level.

set和unset命令,一看就知道是设置和取消变量的意思。

export 命令一般使用在设置环境变量上,如在/etc/profile文件中设置JAVA_HOME

declare和typeset命令指定和/或限制变量的属性。

getopts 是能够定义属性的 比如 在解压tar包的时候使用-xvf
之类的命令的时候就是使用getopts来达到不同的 -a -b 之类的实现。这个命令一般出现在case 或者while循环中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while getopts ":abcde:fg" Option
# Initial declaration.
# a, b, c, d, e, f, and g are the options (flags) expected.
# The : after option 'e' shows it will have an argument passed with it.
# e参数后面的的表示会有参数传递给他
do
case $Option in
a ) # Do something with variable 'a'.
b ) # Do something with variable 'b'.
...
e) # Do something with 'e', and also with $OPTARG,
# which is the associated argument passed with option 'e'.
...
g ) # Do something with variable 'g'.
esac
done
shift $(($OPTIND - 1))
# Move argument pointer to next.

bash学习记录(九)命令置换和算数扩展

Posted on 2018-06-11 | In Bash
Words count in article: 213 | Reading time ≈ 1

命令置换

命令置换可以输出一条或者多条命令的输出。可以让命令在不同语境下起作用,最常见的是使用 \`` 符号进行对命令的包裹,这样就能够输出使用命令得出的结果。可以成为另外一个命令的参数,也可以成为循环的参数。

1
2
3
echo `hostname`
echo $("hostname")
# 两种使用都可以,都能够达到命令置换的目的

算数运算

使用反引号,双括号,和let进行相对来说简单

使用反引号

使用反引号内用expr命令进行整型数的运算。

1
z=`expr $z+1`

使用双括号和let进行运算

1
2
3
4
z=$((z+3))

let z=z+3
let "z += 3" # Quotes permit the use of spaces in variable assignment.

今天的内容有点少。。。

<i class="fa fa-angle-left"></i>1…9101112<i class="fa fa-angle-right"></i>
NanYin

NanYin

Was mich nicht umbringt, macht mich starker.

111 posts
16 categories
21 tags
RSS
GitHub E-Mail
近期文章
  • ThreadLocal
  • Java的四种引用类型
  • Markdown语法入门
  • IDEA设置代码注释模板和JavaDoc文档生成
  • 基于Java的WebService实践
0%
© 2023 NanYin
|
本站访客数:
|
博客全站共140.1k字
|