Linux

目录

基础

文件目录

Linux 命令  

匹配符

 归档 (打包)

文件权限

 硬链接软链接

Linux集成开发环境 

vim常用命令

 GCC

GDB调试

 Make管理器


 

基础

文件目录

  • $     普通用户(多个)
  • #     超级用户(一个)
  • 家目录 :  超级用户的家目录:  /root  .   普通用户的家目录: /home /用户名  (除非切换用户,家目录才会变换。同用户的家目录不会变换)  
  • /      根目录 { root 家  home }
  • 当前目录

echo $HOME   //查看家目录

echo $PWD    //查看当前目录

pwd                  //查看当前目录

目录

应放置档案内容

/bin

 

系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。

 

/boot

主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz ,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。

 

/dev

在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等

 

/etc

系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop

/etc/xinetd.d/ :这就是所谓的super daemon管理的各项服务的设定档目录。

 

/etc/X11/ :与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。

 

/home

这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号:


~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。

 

/lib

系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 什么是函式库呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。

 

/media

media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。

 

/mnt

如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。 只是有了/media之后,这个目录就用来暂时挂载用了。

 

/opt

这个是给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。

 

/root

系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。

 

/sbin

Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。

 

/srv

srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。

 

/tmp

这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。 重启后数据会删除。

  •  Linux 里文件分类: 普通文件、目录文件、设备文件、链接文件(软连接【快捷方式】,硬链接)、管道、套接字
  • 绝对路径:从根目录开始。相对路径:以当前目录开始。 

 cd /home/shangqian     

cd ../     

Linux 命令  

  • su 用户名 与 su  -  用户名的区别:后者切换环境变量,而前者不切换环境变量 

  

  • sudo  可以是普通用户暂时的使用超级管理员权限 
  • ps -aux 显示系统进程
  • kill -9 pid   结束某个进程
  • ps -eLf | grep 'solitary'   只查看solitary 用户的进程

 

  • shutdwn -r  now 重启  
  • shutdown -h now 关机 

 

命令

功能

cp

复制文件或目录

rm

删除文件或目录

mv

移动文件或目录,文件或目录重命名

file

显示指定文件的类型

find

在指定目录查找符合条件的文件

touch

建立指定名称的文件或更新文件时间

 

  • touch:创建file1—file10共10个文件

touch file{1..10}

  • 1.创建名称为A到Z的文件

touch {A..Z}​

  • 2.创建从1到100的文件

touch {1..100}​

  • 3.创建带有扩展名的批量文件

touch {2..200}.txt​

  • 4.创建具有扩展名的10000个文件

touch {1..10}{1..1000}.txt​

  • cat  查看文件   cat > file.c   可编辑文件 (从头写,>> 追加)   "ctral + c"结束
  • head -2 文件名    从头查看指定文件的2行
  • tail -3 文件名      从文件尾部产看3行 (行号符也算一行)
  •  只打印第三行

1

sed -n '3p' /var/log/yum.log

  •  只查看文件的第3行到第9行

    1

    sed -n '3,9p' /var/log/yum.log

  •  过滤特定字符串,显示正行内容  

1

sed -n  '/root/p' yum.log

  •  显示包含"hhh"的行到包含"omc"的行之间的行

1

sed -n '/hhh/,/omc/p' yum.log

  •  cp -r 目录文件  新文件(若存在(复制移动),若不存在(复制重命名))
  •  mv 目录文件 新文件(不存在(重命名),存在(移动))

匹配符

  • *   匹配0或多个字符                        ls file*
  • ? 匹配1个字符                           
  • [a~c]  匹配1个'a'~'c'的字符
  • [!d]     匹配1个非'd'的字符               ls file[!d]
  • find -name file\[!d]        (find需要加' / ')
  • find /home/shangqian -name file/*

命令

功能

ifconfig

网络信息查看

ping

测试和远程计算机的联网状态 

telnet/ssh

远程登录主机

ftp

创建指定名称的目录

  •  ifconfig   查看ip 地址
  • ifconfig ens33 192.168.14.114   修改ip 地址

 归档 (打包)

  • 多个文件合并为一个文件
  • tar     -c (归档)  -x (解档)  -z(调用gzip  压缩/解压缩   xxxx.gz)   -j(调用bzip2压缩/解压缩     xxx.bz2)   -v (显示操作的文件)           -f(普通文件)        -C(解压到指定目录)

tar   -czvf  dir *  file*  xxx.gz                              //归档 dir* 和 file* 到xxx.gz中

tar   -xzvf   xxx.gz     -C   /home                       //解压 xxx.gz到  /home中

文件权限

权限项

执行

执行

执行

字符表示

(r)

(w)

(x)

(r)

(w)

(x)

(r)

(w)

(x)

数字表示

4

2

1

4

2

1

4

2

1

权限分配

文件所有者

文件所属组用户

其他用户

 ls -l

  •  -   普通文件
  •  d  目录文件
  •  c / b  设备文件
  •  l 链接文件
  •  p 管道文件
  •  s 套接字

 chmod命令用于更改文件对于某类用户的操作权

  • u  文件拥有者
  • g  文件拥有者所在组
  • o  其他用户
  • a  所有用户  
  • +  添加权限
  • -  减少权限
  • =  设置权限

chmod g+wx file3*                       //为file3*的所有文件所在组成员添加写和执行权限 

chmod a=rw file3*                        //为file3*的所有文件 的所有用户设置权限为写和读

chmod 666 file3*                          //为file3*的所有文件 的所有用户设置权限为写和读

chmod 777 file3*                          //为file3*的所有文件 的所有用户设置权限为写和读以及执行权限(全权限开放)

chown :root file3.c                       //更改file3.c所在组为root

chown  root:root file3.c                //更改file3.c的属主用户和所在组为root

 硬链接软链接

ln file.3 lnfile            //建立file.3 的一个硬链接 lnfile

ln -s lnfile file3         //建立lnfile的软连接file3

 PATH:外置命令的工具箱集合

Linux的所有内置命令都相同,外置命令可能不同。

export PATH=xxxx:$PATH                 本进程及其子进程PATH重新赋值

Linux集成开发环境 

  • 编辑器   gedit
  • 编译器   gcc
  • 调试器   gdb
  • 管理器   make

vim常用命令

命令模式:

  • dd: 删除光标所在的一整行
  • 5dd: 删除光标所在行开始的5行,其他数字亦同
  • yy: 复制光标所在行
  • 5yy: 复制5行
  • p: 在光标的下一行粘贴已复制内容
  • u: 撤销前一次的操作
  • Ctrl r: 重复上一操作
  • w: 移动到下一单词第一字符
  • e: 移动到下一单词最后字符
  • b: 移动到前一单词第一字符
  • gg: 到第一行
  • G: 最后一行
  • XG: 到第X行
  • $: 移动到当前行行尾
  • ^:移动到当前行的第一个非空字符上

末行模式主要用于保存或退出文档:

  • 常用命令:
  • 保存 :

:w

  • 退出:

:qq

  • 强制退出(不保存):

:q!

  • 强制保存退出:

:wq!

  • 显示行号:

:set nu

  • 不显示行号:

:set nonu

  • 跳转某行:

:数字

  • 从下往上搜索字符串:

:?字符串

  • 从上往下搜索字符串:

:/字符串

  • 将光标所在行的第一个字符串替换:

:s/old/new

  • 将光标所在行的所有字符串替换:

:s/old/new/g

  • 全文替换:

:%s/old/new/g

  • 替换3~5行的'this'为'the'

:3,5s/this/the/g 

编辑模式:

  • i:光标在原位置
  • I:光标在行首位置
  • a:当前字符后开始编辑
  • A:从光标所在行的行尾开始编辑
  • o:从光标所在行的下一行开始编辑
  • O:从光标所在行的上一行开始编辑

块操作:

8,12co20      //把第8行和第12行复制到20行下面

8,12mo20    //把第8行和第12行移动到20行下面

 

 分屏:

vsp main.c               //在打开一个文件后输入  水平分屏mian.c文件

sp hello.c                //垂直分屏

vim -O2   main.c  hello.c    //水平打开main.c和hello.c这2个文件

vim -o2   main.c  hello.c    //垂直打开main.c和hello.c这2个文件

 GCC

  • -O (0,1,2,3) 优化代码等级
  • -I   添加标准的头文件目录
  • -L   添加标准的库文件目录

gcc  -Wall  warning.c –o warning

例如有程序: hello.c  

  • (1)预处理        

 gcc  -E  hello.c  -o  hello.i      

 使用命令查看ls -l     得到:hello.i  (查看hello.i)

  • (2)编译          

gcc  -S hello.i  -o  hello.s

  • (3)汇编        

 gcc  -c  hello.s  -o  hello.o

  • (4)连接        

gcc  hello.o   -o   xxxx

  • (5)执行          

./xxxx 

GDB调试

在gcc编译选项中一定要加入选项“   -g   ”

  • gdb  helloworld   //调试可执行程序
  • l                           //查看10行源代码
  • b 6                      //第6行设置断点
  • info b                  //查看已经设置的断点
  • d   2                     //删除第二个断点 
  • d                         //删除所有断点
  • s                          //进入断点进入函数单步运行
  • n                         //不进入函数单步运行 
  • c                         //程序运行完停止
  • p  变量名             //打印变量的 值
  • r                          //运行程序
  •  set   var 变量  =   设定值 

 Make管理器

make 是一个命令工具,它解释 Makefile 中的指令(应该说是规则)。在 Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。当在shell 提示符下输入“make”命令以后。make 读取当前目录下的 Makefile 文件,并将 Makefile 文件中的第一个目标作为其执行的“终极目标”,开始处理第一个规则(终极目标所在的规则)。

  • 输入

vim Makefile 

main:main.o fun1.o fun2.o
        Tab       gcc main.o fun1.o fun2.o -o main 
       main.o:main.c
      Tab         gcc -o main.o -c main.c
       fun1.o:fun1.c
      Tab         gcc -o fun1.o -c fun1.c
       fun2.o:fun2.c
      Tab         gcc -o fun2.o -c fun2.c

clean:

Tab       rm  *.o main        

  •  开头不能使用空格!!!

make main               // 执行main规则

make clean              //执行clean 规则 

 变量 :

  • 自定义变量

OBJ = main.o fun1.o fun2.o
cc = gcc
main:$(OBJ)
    $(CC) main.o fun1.o fun2.o -o main 
main.o:main.c
    $(CC) -o main.o -c main.c
fun1.o:fun1.c
    $(CC) -o fun1.o -c fun1.c
fun2.o:fun2.c
    $(CC) -o fun2.o -c fun2.c
 

  • 预定义变量
  • 自动变量:
  • $@   目标文件
  • $<     第一个依赖文件
  • $^    所有的依赖文件

OBJ = main.o fun1.o fun2.o
CC = gcc
main:$(OBJ)
    $(CC)   $^   -o    $@ 
main.o:main.c
    $(CC)   -o   $@   -c   $<
fun1.o:fun1.c
    $(CC)   -o   $@   -c   $<
fun2.o:fun2.c
    $(CC)   -o   $@   -c   $<
clean:
    rm *.o main

 规则:

  • 显示规则:
  • 模式规则 : 

OBJ = main.o fun1.o fun2.o
CC = gcc
main:$(OBJ)
      $(CC)     $^   -o    $@ 
%.o:%.c
      $(CC)    -o    $@   -c    $<
clean:
    rm   *.o    main

  • 隐式规则

OBJ = main.o fun1.o fun2.o
CC = gcc
main:$(OBJ)
     $(CC)    $^    -o   $@ 
clean:
    rm   *.o   main

.bashrc

Linux 系统中很多 shell,包括bash,sh,zsh,dash 和 korn 等,不管哪种 shell 都会有一个 .bashrc 的隐藏文件,它就相当于 shell 的配置文件。

默认的.bashrc 在 /ect/skel/.bahsrc   目录下

gedit /etc/skel/.bashrc

不同目录下的 .bashrc 文件其作用不尽相同,比如:

  • /etc/skel/.bashrc :文件将复制到系统上创建的任何新用户的主文件夹中 (也就是初始的.bashrc文件)
  • /home/hj/.bashrc :是 bash 的配置文件,保存个人的一些个性化设置,如命令别名、路径等

个性化.bahsrc引用娜姐的.bashrc配置:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# my aliases
alias Makefile="cp ~/Templates/Makefile ./"
#alias Makefile="cp ~/Templates/opencv ./Makefile"
cdAndList() {
    cd "${1}";
    ls;
    echo -e "\e[1;34m`pwd`\e[0m";
}
alias cd=cdAndList


# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值