一天精通Linux基本操作篇

/******************************************************************************/
基本操作篇:


安装完整的帮助文档:
sudo apt-get install manpages manpages-dev manpages-posix manpages-posix-dev


查看关于xxx的所有帮助信息:
man -f xxx
man man 
三大类要通

man: manual帮助文档。
结构:
NAME:
SYNOPSIS:
DESCRIPTION:
OPTIONS:
SEE ALSO
BUGS:
EXAMPLE:
AUTHORS:


关于ls命令
=================================================================================
ls -l : 列出当前文件详细信息  ------------------------------------options


文件类型:(7种)
d: directory
-: regular
l: link
s: socket
p: fifo
b: block
c: character


对于目录而言的各种权限:
可读:读取其目录项
可写:可以增删文件
可执行:可以进入该目录
file [filename]:该命令输出显示文件时二进制文件、文本文件、目录文件、设备文件、还是Linux其他类型文件
时间戳:
最近修改时间mtime
最近访问时间atime
最近状态改变时间ctime

cd:change diretory
=============================================================
/*************************************************************************************/
shell篇:
~.bashrc
alias c = 'clear'
source .bashrc :生效


cd /etc/vim
touch file:有就改变时间戳
pwd 
which ls:出处

adduser newuser
deluser --remove-home user1
delgroup groupname


小技巧:
cd: 直接回家
cd -: 回到刚刚去过的地方


外星语:  硬链接
IT语:    引用
民间说法:别名


cp: copy ----------[option] -r -p -i -f -d -a 
=============================================================
cp file1 file2
cp dir1 dir2 -r: 递归地复制整个目录


mv: move  -f -i -v
=============================================================
1,移动文件(当第二个参数是有效路径的时候)
mv file dir


2,重命名(当第二个参数不是有效路径的时候)
mv apple cherry


rm: remove -f -i -r -v
=============================================================
删除文件:rm file
删除目录:rm dir -r


mkdir: 创建一个空目录   -p 通常创建需具有写入权
rmdir: 删除一个空目录   -p


tail: 查看一个文件的最末尾的若干行:tail xxx -n N
一般可以用来查看日志文件


ln:link
=============================================================
1,创建硬链接文件:硬链接是利用Linux中为每个文件分配的物理编号--inode 建立连接,硬链接不能跨越文件系统
ln a b (给a这个文件取个别名b)
2,创建软链接(符号链接)文件:是利用文件的路径名,是绝对路径。ln a b -s (创建一个软链接文件b,让其指向a)
ln [-s] target link_name: 缺省为硬链接,-s 为软连接


tar: 归档、压缩
=============================================================
1,归档:   tar -cf  example.tar      file dir/ ...
2,压缩gz: tar -czf example.tar.gz   file dir/ ...      (gzip)
3,压缩bz2:tar -cjf example.tar.bz2  file dir/ ...      (bzip2)


4,解压缩gz: tar -xzf example.tar.gz   (解压到当前目录)
5,解压缩bz2:tar -xjf example.tar.bz2 -C dir (解压到dir里面)


6,查看压缩文件:
tar -tf example.tar
tar -tf example.tar.gz
tar -tf example.tar.bz2


/******************************************************************************/


sudo passwd root


emacs
gedit
vi编辑器篇:
关于vi的使用(编辑器的鼻祖)
=============================================================
vi:默认的低版本
vim:升级版


切换到命令模式:esc
切换到编辑模式:i o a O A I


:w  写入(保存)
:w file (另存为file)
:q  退出
:q! 强制退出


yy: 复制一行
Nyy: 复制N行
yw: 复制一个单词
Nyw: 复制N个单词
y$: 复制到行末
y^: 复制到行首


dd: 剪切一行
Ndd: 剪切N行
dw: 剪切一个单词
Ndw: 剪切N个单词
d$: 剪切到行末
d^: 剪切到行首


x: 剪切一个字符
r: 进入单字符替换模式


p: paste 粘贴


xp:交换两个字符的顺序


u:undo  撤销
ctrl+r: 恢复


/string 开始往下找string, 按n找下一个,按N找上一个
?string 开始往上找string, 按n找上一个,按N找下一个


:%s/old_string/new_string    --> 找到每一行的第一个old_string, 并将之替换成new_string
:%s/old_string/new_string/g  --> 找到所有的old_string, 并将之替换成new_string
:5,10s/old_string/new_string/g  --> 找到第5行到第10行的所有的old_string, 并将之替换成new_string


:[range] s/fron/to/[flags]
-g:直接不用问
-c:每次都进行询问


定位到第N行
:N


ctrl+u : 向上翻页
ctrl+d : 向下翻页


gg: 快速定位到文件头
G : 快速定位到文件尾


:sp file --> 在同一个窗口打开另一个文件file


/******************************************************************************/
进程篇:
ps的一般用法:
=============================================================
ps -ef
ps aux:显示所有包含其他使用者的行程
ps ajx
ps -A:列出所有 -w:加宽


动态查看进程的状态:top
pstree: 看有没有指定id,没有看是不是以init这个基本进程为根,树状图


nice [-n <优先等级>] [-help] [-version] [执行指令]:改变程序执行的优先权等级
eg: nice -n ls 将ls的优先序加1并执行
程序执行优先级有连个指标: NI(好人)、PR(优先级), 反比关系
 
renice [-n] <priority> -p/g/u <pid>/<pgrp>/<user> [pid]/[pgrp]/[user]


kill: 给进程们发送一个指定的信号。
用法:
kill -l
kill -s SIGKILL 2919   /  kill -9 2919
kill -s SIGXXX PID  -->  给进程号为PID的进程发送一个信号:SIGXXX 
/******************************************************************************/
查找篇:
命令行快速定位:
ctrl+a(ahead): 开头
ctrl+e(end): 结尾


关于find和grep
=============================================================
cat -v -T -E -u
more -p -d -s -num | Space\ Enter
less --> <---
head:  [-num]
tail:  [+-num] eg:tail -8 /proc/cpuinfo
/string n N ?string ---在Makefile中
:
find: 查找文件
find . -name types.h -->  在.递归地查找所有名字符合*.c的文件
find . -type d --> 在.递归地查找所有类型是目录的文件


grep: 查找字符串
grep "xxx" ./*.c -rnw  --> 在当前目录的所有*.c文件中,查找xxx字符串


find . -name "*.c" | xargs grep "hello" -nw
--> 在当前目录查找所有的*.c文件,并在这些文件中查找所有的hello


通配符
=============================================================
1,*  ==>  通配任意长度的任意字符
2,?  ==>  通配一个任何字符
3,[] ==>  通配一个指定字符


diff: different ==>  比较两个文件或者目录的异同
/******************************************************************************/
功能查找篇:
man man 


/******************************************************************************/
权限篇:
chmod u/g/o +-=  r/w/x(八进制) filename 
chown username file: 更改文件file的所有者 eg: chown foo file :改为foo的。
chgrp groupname file:   更改文件的所有组



/******************************************************************************/


重定向篇:
=============================================================
commd 1> file   ==> 将程序commd的标准输出信息重定向到file中
commd 2> file   ==> 将程序commd的标准出错信息重定向到file中 
commd 0< file   ==> 将程序commd的标准输入重定向为file


shell脚本当中的引号:
=============================================================
'' : 单引号 -->  会将里面的任何字符都看作是字符串
"" : 双引号 -->  里面可以包含命令
`` : 抑音符 -->  用来说明一个命令


/******************************************************************************/
打补丁篇:


/******************************************************************************/
编译器版本:http://gcc.gnu.org
编译库篇:
X86:
预处理:cpp/ gcc -E hello.c -o hello.i
编译:cc1/ gcc -S hello.i -o hello.S
汇编:as   gcc -c hello.S -o hello.o
链接:ld gcc hello.o -o hello


工具:/usr/local/arm/xxx/arm-angs...-linux/bin:
--------gcc
--------as
ARM:
库文件:/usr/local/arm/xxx/arm-angs...-linux/lib/
头文件:/usr/local/arm/xxx/arm-angs...-linux/include


汇编/C ->.o
链接脚本--->生成可执行文件elf--->bin(利用objcopy)
GNU编译器缺省生成的文件由若干段组成:
.text 包含程序的指令代码
.data 包含固定的数据、如常量、字符串
.bss 包含未初始化的变量、数组等
链接器就是将上述多个目标文件的.text、.data、.bss根据连接脚本从什么地址放置这些段
GNU Makefile:


arm-linuc-gcc -wall -O2 -c -o -S $@ $<
 $@:目标
 $<:依赖
 -Ttext=0x40000000 
arm-linux-gcc -nostdlib -c xxx.o -o xxx.o
xxx.lds为连接脚本(有两种,缺省、自定义)


-O bfdname :输出格式
-F bfdname :同时指明源文件
-R sectionname:从输出文件中删除掉所有名为sectionname的段
-S:不从源文件中复制定位信息和符号信息到目标文件中
-g:不从源文件中复制调试符号到目标文件中


arm-linux-objdump -D -m led_elf>led.dis
-D:显示文件中所有汇编信息
-m machine
.....


GNU 链接脚本文件的格式:P48
命令:描述输出文件的内存分布
SECTIONS
{
.=链接地址
.段名(.text/.data.bss) :{段内容/*(.text)}
}
ENTRY(symbol):设置入口点,参数是一个符号名
OUTPUT_FORMAT(bfdname):输出文件的BFD格式
OUTPUT_ARCH(bfdarch):指定平台架构
对于ARM:bfdname=elf32-littlearm. bfdarch=arm
=============================================================


a.c、b.c->a.o、b.o->libx.a/libx.so


区别:程序编译时被连接到目标代码中


libx.a --->静态库
创建静态库:ar crs libmyhello.a hello.o
   gcc -o hello main.c -L. -lmyhello


libx.so--->动态库
创建共享库:gcc -fPIC -Wall -c hello.c--->hello.o
   gcc -shared -fPIC -o libmyhello.so hello.o
编译选项:
-shared:指定生成动态链接库
-static:指定生成静态链接库
-fPIC :编译为位置独立的代码,用于编译共享库
-L. :指定要连接的库在当前目录中
-l:指定链接时需要的动态库
-Wall:生成所有的警告信息
-ggdb:尽可能生成gdb的可以使用得调试信息
-g:在编译时产生调试信息
-c:只激活预处理、编译和汇编-->.o
-Wl,options:把参数(options)传递给链接器ld,在options中间有逗号,将分多个选项传给链接程序
.....
.....
.....


project 结构:
include、lib、src、makefile


command:


/******************************************************************************/
磁盘篇:
fdisk -l : 查看磁盘分区
df: 查看挂载的东西
cat /proc/partitions :查看SD卡分区
sudo mount /dev/sdb1/    /mnt :挂载U盘,....
sudo  mount UnbuntoIP:/opt/target /mnt/ -t nfs -o nolock   :开发板与Ubunto挂载(3种可以实现这种功能)
umount:  卸载


/******************************************************************************/
错误篇:
#include<errno.h>
printf("errno is:%d\n",errno);
在linux2.4.20-18内核代码的/usr-->/usr/include/asm-generic/errno.h 、errno-base.h 



/******************************************************************************/
网络篇:
 sudo ifconfig eth0 192.168.7.x
相关网络配置文件:jing
1、配置IP,网关,子网掩码: sudo vi /etc/network/interfaces
2、配置DNS服务器:    sudo  vim  /etc/resolv.conf
3、重启                    sudo /etc/init.d/networking restart
设置开发板IP,参考uboot启动参数设置
4、查看DNS服务器: nslookup server 



关于网络配置
=============================================================
1,配置IP地址、子网掩码、网关
sudo vi /etc/network/interfaces


2,手工启用/禁用网卡:
sudo ifconfig eth0 down --> 禁用
sudo ifconfig eth0 up   --> 启用


3,ping命令
ping 192.168.100.1
ping www.baidu.com
检测网络是否通畅


4,如果不能连外网:
   5.1 你的网段没有配对:192.168.100.xxx
   5.2 DNS服务器没有搞对:
       sudo vi /etc/resolv.conf 
       添加一行:
       nameserver 202.96.134.133
       (sudo apt-get remove --purge netmanager)
   5.3 给ubuntu一个默认网关
       sudo route add default gw 192.168.100.1


5,重启网络服务:
sudo /etc/init.d/networking force-reload
sudo /etc/init.d/networking restart



关于NFS:开发板与Ubunto之间的文件共享
=============================================================
1,查看NFS服务允许系统中有哪些目录可以被其他系统挂接:  
   showmount -e


2,修改了NFS服务的配置文件:
   sudo vi /etc/exports
   如果你,添加了这一行:
   /home/gec/dir *(...)


3,重启NFS服务:
   sudo /etc/init.d/nfs-kernel-server reload
   sudo /etc/init.d/nfs-kernel-server restart




在主机端(ubuntu):
=====================
1,下载安装nfs服务:
   sudo apt-get install nfs-kernel-server


2,配置
   sudo vi /etc/exports
添加一句:
   /opt/target *(rw,sync,no_subtree_check)



在开发板一端
====================
挂接这个目录:
sudo mount 192.168.100.ubuntuIP:/opt/target /mnt -t nfs -o nolock



关于SSH,putty 工具访问ubunto.
=============================================================
putty的使用:
ubunto的优化:www.gooldle.com



关于samba:window与Ubunto之间的文件共享
=============================================================
1,下载安装:
    sudo apt-get update
    sudo apt-get install samba


2,配置其配置文件:
[share]
path=/home/gec/Download
browseable=yes
public=yes
writable=yes
available=yes


3,重启samba服务:
   sudo service smbd reload
   sudo service smbd restart


/******************************************************************************/
软件安装篇:
1修改源列表网址 /etc/apt/sources.list
2更新本地源列表 sudo apt-get update
3下载并安装软件 sudo apt-get install XXX
4卸载软件 sudo apt-get remove xxx   sudo dpkg -r XXX*
5彻底卸载软件 sudo apt-get remove xxx --purge
6手工安装软件 sudo dpkg -i xxx.deb
7修复损坏的软件 sudo apt-get install/remove xxx --fix-broken
sudo apt-get install/remove xxx --fix-missing
sudo apt-get install -f


aptitude search  fcitx-bin*
apt-cache show XXXX  :获取包的相关信息
常用命令:
apt-cache :查询软件包信息
apt-proxy:  搭建APT代理服务器
apt-show-versions:
apt-config:
apt-cdrom:


关于APT软件管理器
=============================================================
1,选择ubuntu的源列表
2,连接远端服务器并扫描其软件列表,下载到本地:
   sudo apt-get udpate


3,下载并安装你的东西:
   sudo apt-get install vim
即可。这样即自动下载vim的相关安装包(/var/cache/apt/archives),并自动安装。


4,ubuntu-12.04


安装软件的时候,如果拿到的是一堆源码,那么安装三部曲:
1 ./configure
2 make
3 make install


/******************************************************************************/
others:
给一个命令取一个别名:
=============================================================
/home/gec/->.bashrc
alias c='clear'


让bash重新读取其配置文件
source .bashrc


脚本:一堆命令的集合,完成更加强大的功能



根目录:系统所有文件的起点。
家目录:某个用户的专属目录:在你家里你可以做任何事情,即你有任意权限。


/home: 不是家目录,小区。
gec的家目录:/home/gec,这个目录是gec的家目录,gec的一般性文件都会放在这个地方,因此会比较大,所以一般会给他挂接一个独立的分区。
zhangsan的家目录:/home/zhangsan
....
/bin: binary,可执行的二进制文件所在的地方。
/sbin: super binary, 需要管理员权限来执行的二进制文件。
/dev: device,外设对应的设备节点文件。
/etc: 配置文件所在的地方。
/var: variable,存放很多易变的文件,会更容易产生磁盘碎片,因此一般在装系统的时候会给这个目录挂接一个独立的分区。


===============================================================================================
cat /proc/cpuinfo :读取有关cpu的信息
cat /proc/partitions


这些都是我个人学习Linux基础的积累,希望对各位学习Linux的朋友有所帮助,有什么问题请留言,大家一起交流。谢谢~!

 :读取挂载的分区













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值