15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

分类标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

分类归档 UBuntu

[Ubuntu]在ubuntu下如何搜索文件

1.whereis 文件名

特点:快速,但是是模糊查找

例如:
whereis php #会把php,php.ini,php.*所在的目录都找出来.

2.find / -name 文件名

特点:准确,但速度慢,消耗资源大

例如:
如果想找到php.ini的准确位置,需要用

#find / -name php.ini

3.locate 文件名

最快,最好的方法.
注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了.

[Linux]Linux 下Shell变量,环境变量的联系与区别

  1. 简介

linux下的变量可分成两种:Shell变量和环境变量。

Shell变量,又称本地变量,包括私有变量以及用户变量,不同类的shell有不同的私有变量,bash,ksh,csh等,每种shell的私有变量都不一样

环境变量,又称用户变量,与shell无关

常规定义变量的方法:变量名=变量值

注意:

1.变量名和=号之间不能有空格,否则shell会把变量名当成命令

2.变量名称一般使用大写字母

  • 常用的相关命令

env命令:显示当前用户的环境变量

set命令:不加参数,显示当前shell的所有本地设置的Shell变量,否则设置shell变量

unset命令:unset为shell内建指令,删除变量或函数。

exprot命令:显示(设置)当前导出成用户变量的shell变量(注意:export为bash或类bash私有的命令)

echo $变量名:查看变量值(其中,$变量:引用变量的意思)

  • 示例
  • 使用env命令显示当前用户的所有环境变量

[laiyu@localhost ~]$ env

HOSTNAME=localhost.localdomain

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

USER=laiyu

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;…

MAIL=/var/spool/mail/laiyu

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/laiyu/bin

PWD=/home/laiyu

LANG=en_US.UTF-8

HOME=/home/laiyu

LOGNAME=laiyu

_=/bin/env

  • 使用set命令显示当前shell所有本地Shell变量

[root@localhost ~]# set | more

BASH=/bin/bash

BASH_CMDS=()

  • 使用unset命令来清除变量(不管是shell变量还是环境变量)

[laiyu@localhost ~]$ export TEST=test #增加一个环境变量TEST

[laiyu@localhost ~]$ env | grep TEST  #查看增加的变量

TEST=test

[laiyu@localhost ~]$ unset $TEST #删除环境变量TEST(这里TEST前有无美元符都一样)

[laiyu@localhost ~]$ env | grep TEST #输出为空

注意:unset只能删除非只读变量

  • 使用echo命令显示环境变量(HOME变量为例)

[root@localhost ~]# echo $HOME

/root

  • 使用export命令将shell变量导出为用户变量,并显示

列出所有的Shell赋予程序的环境变量

[root@localhost ~]# export -p #等同export

declare -x HOME=”/root”

declare -x HOSTNAME=”localhost.localdomain”

declare -x LANG=”en_US.UTF-8″

declare -x LESSOPEN=”|/usr/bin/lesspipe.sh %s”

declare -x LOGNAME=”root”

declare -x PATH=”/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/:/usr/local/tsung/bin”

shell变量导出为用户变量

[root@localhost ~]# SHOUKE=ishouke  #定义shell变量

[root@localhost ~]# echo $SHOUKE 

ishouke

#查看当前用户的用户变量是否存在SHOUKE变量,结果是不存在

[root@localhost ~]# env | grep SHOUKE

#查看当前shell的本地变量是否存在SHOUKE变量,结果是不存在

[root@localhost ~]# set | grep SHOUKE

SHOUKE=ishouke

#查看Shell赋予程序的环境变量中是否存在SHOUKE变量,结果不存在

[root@localhost ~]# export | grep SHOUKE

#导出shell变量为用户变量

[root@localhost ~]# export SHOUKE

[root@localhost ~]# env | grep SHOUKE

SHOUKE=ishouke

[root@localhost ~]#

————————————–

也可以如下方式使用export

[root@localhost ~]# export SHOUKE=ishouke

[root@localhost ~]# env | grep SHOUKE

SHOUKE=ishouke

[root@localhost ~]#

注意:以上的设置仅在当前打开的shell窗口或或其子shell窗口中起作用,临时的,关闭当前shell窗口或重启机器,则刚才的设置失效,,或打开一个新窗口,设置在新窗口中不起作用。

[Linux]dd命令详解

d 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
名称: dd
使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file
使用方式:
dd [option]
如果你想要在线看 manual, 可以试试:

dd –help

或是

info dd

如果你想要看看这个版本如何:

dd –version

输入或输出

dd if=[STDIN] of=[STDOUT]

强迫输入或输出的Size为多少Bytes

bs: dd -ibs=[BYTE] -obs=[SIZE]

强迫一次只做多少个 Bytes

cbs=BYTES

跳过一段以后才输出

seek=BLOCKS

跳过一段以后才输入

skip=BLOCKS
  • 语法:dd [选项]
  • if =输入文件(或设备名称)。
  • of =输出文件(或设备名称)。
  • ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
  • skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
  • obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
  • bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
  • cbs = byte 一次转换bytes字节。
  • count=blocks 只拷贝输入的blocks块。
  • conv = ASCII 把EBCDIC码转换为ASCIl码。
  • conv = ebcdic 把ASCIl码转换为EBCDIC码。
  • conv = ibm 把ASCIl码转换为alternate EBCDIC码。
  • conv = block 把变动位转换成固定字符。
  • conv = ublock 把固定位转换成变动位。
  • conv = ucase 把字母由小写转换为大写。
  • conv = lcase 把字母由大写转换为小写。
  • conv = notrunc 不截短输出文件。
  • conv = swab 交换每一对输入字节。
  • conv = noerror 出错时不停止处理。
  • conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

例1:要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:

$ dd if =/dev/fd0 of = /tmp/tmpfile

拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:

$ dd if = /tmp/tmpfile of =/dev/fd0

软盘拷贝完成后,应该将临时文件删除:

$ rm /tmp/tmpfile

例2:把net.i这个文件写入软盘中,并设定读/写缓冲区的数目。
(注意:软盘中的内容会被完全覆盖掉)

$ dd if = net.i of = /dev/fd0 bs = 16384

例3:将文件sfile拷贝到文件 dfile中。

$ dd if=sfile of=dfile

例4:创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1
  • ============================================
  • /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
  • /dev/zero,是一个输入设备,你可你用它来初始化文件。
  • /dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
  • /dev/zero——该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
$ dd if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r–r– 1 oracle dba 1024 Jul 15 16:56 test.txt

eg:

$ find / -name access_log 2>/dev/null

创建特定大小文件最简单的方法是使用 dd 命令。

dd if=“inputFileName” of=”outFileName” bs=”块大小” count=“块个数”

块大小可以使用各种计量单位
字节(1B) – c 字(2B) – w
块(512B) – b 千字节(1024B) – k
兆字节(1024K) – M 吉字节(1024M) – G

例:

dd if=/dev/zero of=test.file bs=1M count=10

在当前文件夹下创建一个大小为10M的文件test.file 内容全为0
/dev/zero 是一个字符设备,它会不断返回0值字节(/0).
如果不指定输入参数(if),默认情况会从stdin读取输入。如果不指定输出参数(of),默认情况会将stdout作为输出。
也可用 dd 命令来传输大量数据来测试内存的操作速度。

$ dd if=/dev/zero of=./testmm.file bs=10M count=10

记录了10+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.577581 秒,182 MB/秒

$ ll -h |grep ‘testmm.file’
-rw-rw-r–. 1 itudu itudu 100M 7月 16 18:14 testmm.file

文件类型:
一般文件: –
目录文件: d
字符设备: c
块设备: b
链接文件: l
套接字文件: s
管道文件: p

目录的读、写、执行权限意义:
读权限:允许读取目录中文件和子目录的列表
写权限:允许在目录中新建和删除文件或子目录
执行权限:可以访问目录中的文件和子目录

在x64的Ubuntu系统下安装64bit的交叉编译工具aarch64-linux-gnu-gcc

 查看哪些版本可以安装:
sudo apt-cache search aarch64

 安装一个gcc开头的5版本的支持64bit ARM linux的交叉编译工具:
sudo apt-get install gcc-5-aarch64-linux-gnu

 然后再安装一个没有版本号的gcc-aarch64-linux-gnu:
sudo apt-get install gcc-aarch64-linux-gnu

以上步骤是安装支持ARM64位系统的交叉编译工具,安装之后,用aarch64-linux-gnu-gcc -v可以查看里边的版本信息,里边有host是什么,target是什么。

Ubuntu 18修改IP地址

注:配置/etc/network/interfaces已无用

 

root@ubuntu:~# vim /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        ens33:
            addresses: [192.168.1.108/24]
            dhcp4: true
            optional: true
    version: 2

 

执行命令 使配置生效

root@ubuntu:~# netplan apply

 

Ubuntu:apt-get update出错:由于没有公钥,无法验证下列签名

1、问题出现的原因

当我打开我的Ubuntu的准备写点内容的时候,窗口提示我系统升级,当时没有在意,大概浏览了下更新列表感觉不错,就更新了,有16更新到18版。使用sudo apt-get update的时候,提示没有公钥无法验证下列签名。

2、问题解决

通过提示很容易理解,

sudo aptkey adv keyserver keyserver.ubuntu.com recvkeys 40976EAF437D05B5

注意:

解决方法中的 40976EAF437D05B5要与你提示错误中的签名(如下)一致。

由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5

测试下效果,