分类 Linux运维 下的文章

习惯了consolas字体,deepin终端默认不带,只能自己手动添加。

首先下载字体,consola字体下载地址

wget http://jsdx.sc.chinaz.com/Files/DownLoad/font2/904.rar
unrar e 904.rar

deepin系统字体存放地址为:/usr/share/fonts/,在该目录下添加文件夹consolas并把解压出来的consolas.ttf字体放进去,输入以下命令更新字体缓存:

sudo mkfontscale
sudo mkfontdir
sudo sudo fc-cache -f -v

经过一段时间更新后,查看是否安装成功:

> fc-list |grep consolas
/usr/share/fonts/truetype/consolas/cosolas.ttf: Consolas:style=Regular

出现以上信息表明已经安装成功,此时再打开终端,在右上角的设置中即可修改。

1
2
3


可见,使用引号空格法构造的数组在使用标准for循环时把数组当成了一个元素,而`for..in`形式则正确输出。

## 三、其他用法

### 3.1 获取数组长度

获取数据长度有两种形式:`${{ ''{#'' }}arr[@]}`和`${{ ''{#'' }}arr[*]}`,通过`引号空格法`创建的数组长度为`1`。

! /bin/bash

arr1=(1 2 3)
arr2="1 2 3"

echo ${#arr1[@]} # 3
echo ${#arr1[*]} # 3

echo ${#arr2[@]} # 1
echo ${#arr2[*]} # 1


### 3.2 删除数组和数组元素

**删除数组元素**

arr=(1 2 3)
unset arr[1]
echo "len(arr1): "${#arr[@]}
for i in ${arr[@]}
do

echo $i

done


输出:

len(arr1): 2
1
3


**删除数组**

unset arr


### 3.3 切片

shell数组有类似python和golang中的数组切片功能:

arr3=(0 1 2 3 4 5 6 7 8 9)
echo ${arr3[@]:3:5}


输出:

3 4 5 6 7

astyle是一个代码格式化工具,为C,C++,JAVA等语言提供代码格式化功能。

官方描述为:Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C++/CLI, Objective‑C, C# and Java programming languages.

相关页面:官方地址文档地址下载页面(当前最新版本位3.1)。

一、编译安装

安装可参考官方安装文档,提供了多种方式编译安装,这里使用cmake

# 解压
tar -zxvf astyle_3.1_linux.tar.gz
cd astyle
# 创建编译文件夹
mkdir  as-gcc-exe
cd  as-gcc-exe
cmake  ..
# 编译和安装
make
make install

默认情况下,可执行文件被安装在/usr/bin,文档放在/usr/share/doc/astyle,安装完成后直接就可使用astyle命令。

官方并没有提供make uninstall卸载的功能,如需卸载需要在编译目录下执行xargs rm < install_manifest.txt

- 阅读剩余部分 -

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。

xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

一、基本用法

xargs用作替换工具,读取输入数据重新格式化后输出。-n选项指定换行,-d选项指定分隔符。

ma@ubuntu:/tmp$ cat tmp # 测试文本内容
a b c d e f
gh i jkl
ma@ubuntu:/tmp$ cat tmp | xargs # 重新格式化输出
a b c d e f gh i jkl
ma@ubuntu:/tmp$ cat tmp | xargs -n 3 # 每三个换行
a b c
d e f
gh i jkl    
ma@ubuntu:/tmp$ echo "abcXdefXghiXjkl" | xargs -n3 -dX # 以字符X分隔,每三个换行
abc def ghi
jkl

- 阅读剩余部分 -

在linux环境下,一共具有以下几种文件类型;

  1. 普通文件(regular file):最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。
  2. 目录文件(directory file):包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以写目录文件。
  3. 字符特殊文件(character special file):系统中某些类型的设备。
  4. 块特殊文件(block special file):典型地用于磁盘设备。系统中的所有设备或者是字符特殊文件,或者是块特殊文件。
  5. FIFO:用于进程间的通信,有时也将其称为命名管道。
  6. 套接口(socket):用于进程间的网络通信,套接口也可用于在一台宿主机上的进程之间的非网络通信。
  7. 符号连接(symbolic link):指向另一个文件

关于块设备和字符设备的区别:

  • 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
  • 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。

这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。

find命令用来在指定目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

查找的基本语法为:find dir [options] expression,在dir目录查找符合expression的文件,默认会递归查找。

一、基础用法

1.1 根据名字和类型查找

  • -name filename:直接查找该文件名的文件。
  • -type filetype:通过文件类型查找文件。

    文件类型包括:f:普通文件 b:块设备文件 c:字符设备文件 d:目录 l:链接文档 s:套接字文件

# 查找当前目录下以.tar.gz结尾的名字
ma@ubuntu:/data/software$ find . -name "*.tar.gz"
./pip-9.0.1.tar.gz
./php-5.6.33.tar.gz
./node-v9.4.0-linux-x64.tar.gz
./LuaJIT-2.0.5.tar.gz
./mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
./go1.10.1.linux-amd64.tar.gz
./gcc-centos6.tar.gz
./cmake-3.11.0-rc3.tar.gz

# 查找当前目录下的所有文件夹,不递归查询
[ma@ma software]$ find . -maxdepth 1 -type d
./gcc-7.2.0
./go1.4
./setuptools-36.5.0
./lua-5.3.4
./openssl-1.0.2l
./build
./zlib-1.2.11
./vim
./gdb-8.1

- 阅读剩余部分 -

准备玩一下docker,但是发现对内核要求比极高,习惯了CentOS6系不想换成7,所以最后只能把内核升级了。

CentOS 6.5默认内核版本:

步骤其实很简单,照着网上的教程升级,两步就搞定了。

1. 安装ELRepo

Repo是什么没有研究过,只是根据网上的教程一顿操作。

目测应该是内核的仓库地址,这个可在http://elrepo.org/tiki/tiki-index.php找到。

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

- 阅读剩余部分 -

netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

- 阅读剩余部分 -