嵌入式开发完整体系课程(含项目) 扫二维码继续学习 二维码时效为半小时

(170评价)
价格: 598.00元

将文件通过一个过滤器后(sort uniq sed awk)输出或显示出来

sort people.txt  按默认的ASCII码排序,然后输出

uniq people.txt 只能将相邻的重复行去除,然后输出

如何将不相邻的重复行去除?

sort people.txt | uniq即可实现要求。

sort和uniq仅提取文件内容处理后打到终端上,但不改变原文本people.txt里的实际内容

若想将改变后的内容写到people.txt里,可以用重定向sort people.txt | uniq >a,a里为删掉之后的,people.txt为删之前的,可以用cp a people.txt这样就修改了。

-------------------------------------------------------------------

awk实现按列排列输出到终端

awk '{print $1}' grade.txt 列出第一列,以他依此类推

也可以给输出带条件

awk 'NR >1 {print $1}' grade.txt  NR表示行号大于1的才打印,$1代表第1列

awk '$5=11 && $6>=90 {prit $0}' grade.txt

0代表所有的列,即符合要求的整一行打印

awk -F:‘{print $1}’ /etc/passwd指定:为分隔符,列出passwd下所有的用户名

awk -F ‘ [\t:;] ’ ‘{print $1}’ /etc/passwd指定:; 等为分隔符

举例:列出所有包含brown的行:

awk  ' $4~/borwn/.*   {print $0}' grade.txt

awk  '  {print $0>$5}' grade.txt 分别提取对应小孩年龄分别保存到每个以年龄命名的文件中

awk适用于以列排布信息的文件

sed 

 

 

[展开全文]
617076572 · 2018-03-08 · 0

ifconfig显示eth0和lo信息

eth0代表网络接口

lo本地回环 local rollback

ifconfig eth0只显示eth0网卡信息

sudo ifconfig eth0 192.168.1.100

如果不想用ifconfig来修改IP,可以查看/etc/network/interfaces下的eth0的网络地址信息。

静态信息

auto eth0

iface eth0 inet static

address 192.168.1.5

gateway 192.168.1.1

netmask 255.255.255.0

动态时:

auto eth0

iface eth0 inet dhcp

保存并重启后生效

-------------------------------------------------------------

netstat:查看各种网络连接信息,

主要分为以下两部分:

Active Internet connections

Active UNIX domain sockets

netstat -lu | grep "50002" -A 10 -B 10

netstat -an | grep “50002”

netstat -an  | more 用数字方式查看当前系统中有哪些端口已被使用。

route查看网关地址

用ifup和ifdown来重启网卡,解决连接不上的问题

dns服务器如何正确设置:

sudo vi /etc/resolvconf/resolv.conf.d/base里写入如下信息

nameserver 202.96.134.133即可

写完保存后,通过如下命令重启DNS服务

sudo /etc/init.d/resolvconf restart

ln命令:

ln file file1 硬连接,取别名,代表是同一个人,不是复制。只能针对文件操作,无法给目录进行设置别名。取别名作用主要是缩短名称。

 

ln -s file file2软连接,(符号连接)作用是快捷方式,代表两个不同的人,可以跨分区,可以指向目录。大量使用方便

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
617076572 · 2018-03-08 · 0

drwxrwx -x 2 vincent vincent 4096 May 8 12:42 Destkop 

第一个用户vincent建了这个Desktop,第二个vincent表示该用户所属的组,d表示为文件夹

r读 w写 x执行

用u表示usr  g表示group  o表示others

 

 
chmod 755 a.txt
将文件a.txt的权限修改为 rwx r-x r-x
 

 

[展开全文]
617076572 · 2018-03-08 · 0

ps -ef显示某一时刻运行的进程列表

PID指进程ID号,(进程身份证),

PPID父进程,/sbin/init为最开始的父进程名称,然后衍生处其他子进程

?表示该进程脱离终端,表示即使中断关闭,该进程依然在后台执行,除非系统关闭后,才停止。

ps aux 也会打印一大推进程信息,更常用

ps ajx列出很多ID号

瞬间进程期间,大部分进程都是睡眠,

S<表示高优先级进程,SN表示低优先级进程

R表示瞬间运行,

实在不懂,可以man stat查找帮助命令即可。

pstree树状方式查看运行的进程。

pstree -h高亮显示正在运行的进程和进程间关系。

pstree -p列出进程ID

man pstree查看帮助pstree文档

top 好比xp系统里的任务管理器,每隔几秒刷新进程信息,按q退出

假如只关心某个进程ID4979,则可以执行top -p 4979,就只会看到该进程动态运行情况

通过>向后翻页,<向前翻页

-----------------------------------------------------

kill -l 显示所有的信号名称

举例:./while死循环放在前台执行某个进程,按下ctr+c可以杀死该进程

而./while & 就把该进程放在后台执行,此时用ctr+c就不可杀死了,假设while进程的PID为4989,此时可用kill 随便发一个信号,大部分发的信号都会让while死掉,而SIGCONT SIGSTIP SIGTSTP都不会杀死while,但注意9号进程SIGKILL都是无条件杀死对方,无法避免不被杀死。

kill -9 4989 向4989进程发9号信号,

kill -s SIGKILL 4989也能杀死

有时有好多一样的while运行时候,有好多进程号,可以用killall while将所有的while杀死

进程的优先级可以用NI值来调整,默认时NI为0,PR为20,当设置nice -n 15 ./while 时,

该进程PR为35,NI为15

NI最多可为19,nice值越大,进程优先级越低,

也可以设置nice -n -5./while这时PR为30,NI为-5,NI最多是-20

renice动态修改一个进程NICE优先级

renice -n 13 5067 如果要降低优先级失败,则要用sudo前缀才可以

 

 

 

 

 

[展开全文]
617076572 · 2018-03-08 · 0

cat /etc/passward文件,记录了系统中所有的用户以及服务。

gec:x:1000:1000:gec,,,:/home/gec:/bin/bash用户家目录以~代替,代表gec有所有权限来执行家目录里的内容。

x表示密码  第一个1000表示用户ID,第二个1000表示用户组ID,密码x放在/etc/shadow里

用sudo catch /etc/shadow来查看已加密后的密码

/etc/group记录系统中的所有用户组的信息

id gec查看某个用户的ID情况,和所添加的组的情况,可以允许分布在多个组

useradd jack添加jack用户,通过cat /etc/passwd查看是否添加用户和cat /etc/group用户组

id jack  查看用户id

注意:用useradd建立的新用户是没有密码的,要sudo passwd jack分配一个新密码,这样其他用户才可切换到jack用户,通过su  jack切换到jack用户,但是jack没有自己的家目录,可以退到/home下新建一个jack目录,

查看/etc/skel下有家目录的各个文件夹,可以复制到jack目录sudo cp ./* /home/jack/

可以简便地通过以下命令为jack指定家目录 

sudo usermod jack -d /home/jack

为jack用户添加用户组

sudo usermod jack -a -G sudo

这时jack才可以用sudo命令

也可用sudo usermod jack -G jack取消sudo用户组,

而addusr rose却可以自动添加用户rose 和用户组和家目录和密码,更方便使用。

删除用户和用户组以及家目录

sudo deluser jack --remove-home

whoami显示当前是哪个用户,

通过id jack查看所属组后,可以通过chmod 查看用户操作文件的权限,看是否允许操作这个文件。比如不属于GEC组,可以通过之下那个

sudo usermod jack -a -G gec进行添加到gec组,jack就属于jack 和gec两个组了,然后就可以执行了

 

 

 

 

[展开全文]
617076572 · 2018-03-08 · 0

diff a.txt b.tx -u比较两个文件内的内容不同处并在终端处显示出来

---代表改之前的,+++代表改之后的,-代表删除了哪行,+代表增加了哪个

diff a.txt b.tx -u ->b.patch 将修改后的文件差异信息放到补丁b.patch里面,也同样用vi b.patch里打开查看。

diff  proj_v1.0/  proj_v2.0/ -ruNB->1.0.patch比较目录下的文件不同内容放入补丁1.0.patch里

patch -p1 <../1.0.patch

<../1.0.patch是指定补丁文件的位置,该位置与参数-p1没关系

撤销补丁: patch -p1 -R <../1.0.patch

p1代表补丁与要被打补丁的相对位置,表明再上一级,即文件夹1.0与补丁文件在同一目录下。

若上两级,就打p2,

sudo fdisk -l 只能以管理员权限查看已识别的文件系统

sda为虚拟机本身的硬盘 sdb是插入的U盘

df 查看挂载信息  

发现主分区/dev/sda1  ,挂载到根目录下/

/dev/sdb1  挂载到/media/gec/TOSHIBA,通过对应的目录访问到U盘内容

U盘设备名称,比喻孤岛,要通过挂载提供一个链路才允许用户访问得到U盘内容,这样就容易理解了

du -sh .单看当前目录大小

挂载虚拟光驱iso文件到abc空目录下:

sudo mount netware.iso abc/ -t iso9660 -o loop

再用df查看

[展开全文]
617076572 · 2018-03-08 · 0

mkdir a 创建空目录a后用ls -a查看,会出现

.  和.. 表示当前目录和上一级目录

递归创建层级目录:mdkir a/b/c/d -p

用tree a查看结果为a里建b,b里建c,c里建d

rmdir  只能删除空目录 rmdir a/b/c/d

也可以用rm  xxx -r 实现递归删除一个文件夹

pwd显示当前路径

 

cd直接回车,不带参数时,直接回用户所在的家目录
cd - 回到刚刚去过的地方,也即是上一次的地址
whereis ls查看ls本身放哪里以及帮助文档放哪里
which ls查看ls本身放哪个路径
alias c='clear' 命令缩写的作用,要将这句话写到shell的配置文件里才可以生效,配置文件路径在~目录下的.bashrc文件里,打开后将代码加到最后位置即可
man ls查找命令帮助,当查找的字符可能是系统调用也可能是函数,也可能是shell命令时候,要先用man -f read查看第几册条目信息,共有9册,其中前三册用得最多,分别为第1册为shell命令 第二册为系统调用 第三册为库函数,
举例:要查看第三册里的read如何使用,可以用man 3posix read 来查看相关用法
注意:默认只安装了第一册帮助文档,执行sudo apt-get install manpages下载所有的帮助手册,只安装以下几个帮助文档,执行安装命令
sudo apt-get install manpages manpages-dev manpages-posix manpages-posix-dev等即可达到9册的帮助文档
 
[展开全文]
617076572 · 2018-03-07 · 0

在linux系统中,文件分为inode组 和data域

在linux下有.和..两个特殊文件,.是本身,..是上一级目录

ls

ls -l 详细信息展示 

ls -a 列出所有的包括了隐藏文件

ls-li列出文件的ID号

还可以借 man ls进行帮助查看

diff比较两个文件间有啥差异,若完全一样,则没有任何输出。

cp shared/ shared2 -r 复制目录,这里的/可以省略,复制目录时候一定要加-r,而复制文件时不用加-r

rm main.c删除文件

rm main.c -i 防止错误删除,会跳出是否删除的提示框

rm shared2 -r删除目录,彻底消失

rm shared2 -rf强力删除,彻底消失

rm shared2 -ri提示是否删除目录

mv main.c shared/剪切文件到目录下

可以用alias取别名的方法来简化shell命令

alias l='ls -l' 一旦取完,今后只输入l即可等效于输入ls -l

rm第二项功能是重命名 如何区别?

rm main MAIN 看最后的参数如果是目录,则执行移动功能,如果是文件,则是重命名,同一分区里,移动文件操作非常快可以完成,无论被移动的文件是多大

 

 

[展开全文]
617076572 · 2018-03-07 · 0

1.sort对文件进行排序

默认情况以字母大小排序

sort  xxx  -r反过来排序

2.uniq对文件去除相邻的重复行后输出

uniq 默认情况下只去除相邻行

如果去除不相邻的行:sort xxx |uniq

一般这样的命令只是暂时起作用如果长期起作用的话,就需要将输出内容重定向如sort xxxx|uniq >xxx(这样是不行的因为首先会清空然后再重定向)

sort xxxx | uniq >xxx1

sed:流编辑器

awk:对按行读后输出(按列操作)如:awk ' {printf $3}' grade.txt显示第三列的内容

awk‘NR>1{printf $3}’grade.txt

红色引号是过滤器的规则(表示第一行不打印)

awk 'cond1{action1} cond2{action2} ..........'

如awk‘$5==11 && $6>=90 {printf $0}’grade.txt

awk -F : '{print  $1}' /etc/passwd

指定冒号为分隔符打印内容

 

awk默认是制表符和空格为分隔符

awk -F‘[\t:; ]’ '{print  $1}' /etc/passwd

指定多个分隔符放在中括号里面

又例如 awk ‘$4 ~/Brown.*/ {print $0}’grade.txt

表示在第四列字符有匹配含有Brown开头的把它全部答应出来

awk ‘$4 ~/Brown.*/ {print $0}’grade.txt

在前面加了感叹号就是表示取反

过滤器:对文件信息/命令结果进行筛选

  1. awk‘{print $0>$5}’grade.txtjoian以第五列的信息对文件进行分门别类!!

sed和awk支持正则表达式

sed 按行读历程:sed "s/old/new"people.txt将old替换成new

"sed 2,3s/old/new"people.txt将old替换成new只修改2,3行

"sed 2,3s/old/new"people.txt -i 将old替换成new只修改2,3行且作用于文件本身

sed "s/s/S/g”......将小写的s全部改写成大写的s

sed“s/s/S/g;3.6s/.$//”将小写的s改成大写的s将3到6行的点去掉$代表最后一行的末尾

sed“s/s/S/g;3.6s/\.//或者使用转移字符\

sed“s/s/S/g;3.\$s/\.//或者使用转移字符\

sed“s/\(.*)is.*from\(.*\)/\1\2/”

在is前面在from后面(1.2)表示括号内容括号前要加反斜杠

 

 

 

 

 

 

[展开全文]
frankliu · 2017-03-19 · 0

ifconfig 查看当前活跃的网络接口

eth0以太网卡

修改ifconfig etho  192.1680.1.100

etc/network/interfaces修改信息后要重启网络服务services network restart

ping给主机发送icmp的数据包已检测网络

netstat查看系统网络连接的相关信息; 分成两部分1.Active Internet conections 和 Active   UNIX domain sockets (W/o services)

 

netstat -a查看所有网络连接

netstat -l查看监听的

netstat- t查看已经连接tcpip

route查看路由表

route add default gw 192.168.1.1添加路由器;

路由器的地址永远是.1

ifdown 禁用网络

ifup启用网络

host查看域名所对应的的ip地址

可以检查DNS服务器是不是正确的

route;查看。设置路由和网管相关信息

设置dns服务器vi/etc/resolvconf/resolv.conf.d/base

里面可以设置域名服务器。

然后重启dns服务器 

sudo /etc/init.d/resolvconfrestart

ln创建一个连接文件(不能对目录起作用而且只能放在同一个分区里面)

ln xxx yyy建立了一个硬链接

ls -li查看id号是一样的

ln -s是一个软连接可以跨文件系统分区;相当于快捷方式

 

 

 

[展开全文]
frankliu · 2017-03-19 · 0

ps;查看当前 瞬时系统的进程信息

pstree以树状图查看

top动态进程情况

kill给进程发送信号

nice 以某一个nice值启动进程

renice动态修改nice值

ps -ef    pid进程id   ppID  fatherid

sbin/init祖先进程

TTY 如果是?表示没有控制终端的

或者ps aux

STAT状态S表示睡觉s表示会话<symbol high priority

top +id可以只对某个进程进行跟踪

查看进程时候<向前看>向后反

 

kill -l 查看信号

ctrl +c表示发送kill -l显示的二号信号

可以杀死进程

如果运行进程时候加了&表示后台运行跟前台终端无关

killall   while 杀死所有的killall +名字

用top打开进程:pr表示优先级 可以用nice去去调整优先级越高数组越小

renice   - n 13 5067 动态调整优先级

 

 

[展开全文]
frankliu · 2017-03-18 · 0

chmod修改文件权限

chown 修改文件的所有者

chgrp修改文件的所属组 

who 显示已登录用户

whoami 显示当前文件名

write 给某用户发送信息 mesg  n(不接受消息)

wall 给所有人发信息

chmod 6755 a.txt中的6代表110分别表示setuid, setgid ,sitcky bit

其中前两个规定将来执行这个文件时的身份

sticky bit保护文件夹的 大家可以写东西景某一个文件夹但是不能删除别人的 

 

[展开全文]
frankliu · 2017-03-18 · 0

adduser跟useradd的区别useradd 不会设置家目录和密码

addgroup同理

delgroup 删除一个用户组

deluser 删除一个用户

passwd更改用户密码

usermod 修改用户相关属性!

在系统etc/passwd记录所有用户信息

密码存放在shadow中

useradd 

没有家目录创建一个家目录jake

在、etc/skel

包含用户创建时候的目录和文件

复制过来(sudo cp ./*/home/jake)然后输入 sudo jake -d /home/jake 

指定家目录

usermod jake -a -G sudo 

a表示追加G表示指定如果只需要jake能访问则usermod -G sudo 

deluser jake  --remove home

userdel

 

 

[展开全文]
frankliu · 2017-03-18 · 0

diff 与patch

diff XXX  yyy -u

 

diff xxx yyy   -ruNB(r表示递归u表示详细显示N把不存在的文件当做空文件,B表示空行产生的差异)

 

 

diff xxx yyy   -ruNB  > 1.0.patch

接下来进入需要打补丁的文件然后打补丁:

如:cd xxx 

  打补丁 :xxx -p1 <../1.0.patch(p1表示上一级目录p2表示上上级目录)

撤销补丁:patch -p1 -R  <../1.0.patch

umount  卸载 

 

du  -sh project 查看文件大小

挂载ISO文件一定要注意例如

 

sudo mount netware,iso, abc /-t iso9660 -o loop

[展开全文]
frankliu · 2017-03-17 · 0

mkdir a/b/c/d -p递归创建目录

rmdir 删除空目录(脚本里面用的比较多)

cd 回到首目录

cd -回到删一个目录

whereis 

which 

对于alias而言 如alias c="clear"

如果想配置文件永久生效则需要写进 .bashrc里面

man 看命令的使用方法,参数

man -f 命令查看命令的不同使用环境

sudo  apt-get install manpages

 

[展开全文]
frankliu · 2017-03-17 · 0

cat显示文件内容:cat  xxx -n显示行号

cat example.c -A 可以查看不可见的内容

比如换行符(解决在linux系统和windows系统某些字符的不同)

head ;显示文件头几行head -n 7显示一个文件的前7行

tail同理

more/less 例如 ps-ef | more

find在目录查找文件 find +目录-name“名字”

可以查找名字类型大小也可以使用通配符;

grep 文件中查找字符串  

grep "XXXX" . -rHnw(r表示递归查找,h找到显示出来,n行号,w全部匹配)  "."表示说当前目录“”里面是正则表达式!

tar  在linux系统中通常压缩格式有。bz2(压缩率最高),gz,.xz(先用unxz然后用tar 使用unxz后以xz后缀的文件不再存在例如:unzx xxx.xz

然后 tar xf xxx tar )

例如:tar -xjvf  xxx.tar.bz2  -C .....   (x表示解压,j表示解压的格式(bz2),v显示解压过程,f表示解压文件)  -C表示解压 到别的目录

压缩:tar -cjvf  xxx.tar.bz2   xxx

[展开全文]
frankliu · 2017-03-16 · 0

1.在linux里面移动不跨分区移动是很快的!因为只移动了目录项而没有移动真实文件!

[展开全文]
frankliu · 2017-03-16 · 0