Linux 基础命令

1. 将用户添加到sudo中

root 登陆, vim /etc/sudoers添加如下:

UserA   ALL=(ALL)       ALL
UserB   ALL=(ALL)       ALL
UserC   ALL=(ALL)       ALL

 

要想使user在 sudo的时候不输入密码。

1. #%wheels 那一行注释揭开

2. 执行 gpasswd -a UserA wheel

2.gzip: 将文件压缩到一个压缩包中

#gzip -v a.txt

-v:现实压缩的比例,压缩之后原文件消失。

#gzip -d a.txt.gz

-d 解压缩。

zcat a.txt.gz

查看压缩文件的内容

#gzip folder/* 压缩子文件夹中所有文件使用 gzip folder/*/* 二级菜单在内的所有文件压缩

 

变量的定义 

a=1

b=2

变量值在当前的bash中有效,要想子进程中有效许将变量倒入到一个缓冲区中也就是环境变量。export

如: a=1; export a; bash; echo $a

 

变量类型的定义

declar -iaxr

i: int

a: array

x: export

r: readonly

declare -i num

declare -a array

array[1]=1

echo ${array[1]}

 

关于 $(), $(()), $ 和 ${}

$用于变量的引用, 如 a=123 echo $a

${}用于输出数组元素 如: declare -a array ;  array[1]='a'; array[2]='b'; echo ${array[1]}则输出a

$()用于执行括号内的命令 如: echo $(pwd)  和 echo pwd的区别

$(())容易和上面的混合,他的作用是把括号内的内容作为运算副

变量内容的删除和替换

PATH='/usr/lib/gradle/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/Software/IDEA/idea-IU-141.1532.4/bin:/usr/lib/java/bin:/home/ygshen/.local/bin:/home/ygshen/bin'

删除.local/bin:之前的 配置

echo ${abc#/*local/bin:}这里#代表从最左侧的某个字符即/开始向右数0-N 个字符直到local/bin:结束,将查找到的最短匹配删除调

结果: '/usr/lib/gradle/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/Software/IDEA/idea-IU-141.1532.4/bin:/usr/lib/java/bin:/home/ygshen/.local/bin:/home/ygshen/bin'

如果改成 echo ${abc##/*local/bin:}结果将变成也即最长匹配

'/usr/lib/gradle/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/Software/IDEA/idea-IU-141.1532.4/bin:/usr/lib/java/bin:/home/ygshen/.local/bin:/home/ygshen/bin'

 

只保留最后一个设置: echo ${abc%:*bin}从最后一个:开始查找最短匹配

只保留第一个配置 echo ${abc%%:*bin}从最后一个:开始查找最长匹配

变量的替换

abc='john shen is a big shen'

echo ${abc/shen/SHEN} 之替换第一个匹配的字符

echo ${ab//shen/SHEN}替换所有匹配的字符

 

输入和输出

1.sudo usera

ll -al /home/usera /home/userb 1>~usera/file 2>~usera/file2

1>或者2>代表覆盖

1>> 或者2>>代表追加输出

以上信息 1>代表输出流 2>代表错误流

2. cat >~ygshen/file 键盘输入并且保存到文件中知道按 ctrl+d

3. cat >~ygshen/file <~/.bashrc 将~/.bashrc中的内容输出到~ygshen/file中

<代表输入流不写代表输入来自键盘

4.cat>~ygshen/file <<eof键盘输入字符保存到~ygshen/file中,结束条件是输入eof字符并会场而不是ctrl+d

5. echo /dev/null >~ygshen/.bashrc将文件制成空

 运算符 &&、||

ls /opt/session-server && touch /opt/session-server/file.txt   - 如果存在目录就在目录下面新建一个文件

ls /opt/session-server || mkdir /opt/session-server && touch /opt/session-server/file.txt   -接上面的,如果不存在就创建一个目录 然后目录里创建文件

A&&B = A 成功的情况下才执行B

A||B  = A成功了就不执行B 不成功才执行B

 

管道:

选取命令之 cut -

echo $PATH | cut -d ':' -f 1    将PATH按照字符 ‘:’分割 取出数组第一个元素 这里是每行作一次切割的如下面的例子

[ygshen@localhost my-service1]$ cat file.txt
hello world;this is a test;
Second line
Third Line; Test
[ygshen@localhost my-service1]$ cat file.txt | cut -d ';' -f 1
hello world
Second line
Third Line
[ygshen@localhost my-service1]$

选取命令之 grep -  选取包含指定字符串的行

last | grep unknown

 

选取结果的排序和统计

last | grep -d ' ' -f 1 | sort | uniq -c   : 查找所有登陆的帐号按'   '分割并取第一列,对去道德结果作排序并且统计每一个帐号的登陆次数

 

Sed: 四个功能 -

1. 删除 num1到num2 之间的文字 sed 'num1,num2d'

2. 新增 num1后面新增一行  sed 'num1a this is a new line' 也可以新增 n 行 sed 'num1a this is a new line .....\

> another line....\

> third line'

3. 替换: sed 'num1,num2c this is to replace lines between num1 and num2 with the text here given'

4. 输出 sed 'num1,num2p' -n 这里参数-n 是不允许有重行的形式输出

 

awk功能: 通过print的功能将每一行的字段列出来格式 awk '条件1{运行段如print} 条件2{运行字段}'

举例 :  last -n 5 | awk '{print $1,$3}'

有一个table

Name score1 score2
JOhn   1 2
Bob 3333 34234

 

生成一个统计文件, 表格保存在file.txt中

cat file.txt | awk 'NR==1 {printf "%10s %10s %10s %10s\n",$1,$2,$3,"total"} NR>=2 {printf "%10s %10d %10d %10f\n",$1,$2,$3,$2+$3}'

注意printf的使用以及格式的末尾\n,注意awk的格式

 

显示所有文件并按照时间排序:

ll -a | sort -n

 

posted on 2015-08-28 22:15  ygshen  阅读(178)  评论(0编辑  收藏  举报

导航