Linux学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记相关的知识,希望对你有一定的参考价值。


命令 --help  命令的简单帮助


man == 命令帮助


help == 命令的帮助(bash的内置命令)


ls == 查看目录列表 -l(long) -d(directory)


mkdir == make directory 作用是创建目录, 例如: mkdir /data -p 递归创建目录


cd == change directory 作用切换路径, 例如: cd /


touch == 作用是创建文件, 例如: touch oldboy.txt


vi == 编辑器,相当于记事本,有编辑功能,单较弱


vim == 复杂编辑器


echo 是一个打印输出内容的常用命令,配合">或>>"可以为文件覆盖及追加内容。">"重定向,会清除文件里的数据, ">>"为内容追加。


cat == 查看文件内容

特殊用法:增加内容

cat > oldboy.txt <<EOF

I am studying linux

EOF

EOF要成对出现,EOF可以被任意成对内容替换

cp == copy  复制命令  copy目录用cp -a 或 cp -r

-r: 递归,用于复制目录;-p保持属性。

-a:相当于-pdr

cp = ‘cp -i‘ -i 确认

mv == 移动目录或文件,例如:mv /data /root/


pwd == 查看当前用户所在的路径


rm == 删除文件或者目录 -f请知 -r删除目录

生产场景尽量不要使用rm,如果非要用,一定要先cp等备份

替代方法:

mv移动到一个临时目录。回收站。

find删除   find /home/abelxu/data/ -type f -exec rm -f {} \;

   find /home/abelxu/data/ -type f | xargs rm -f

   

删除一个目录下的所有文件,但有一个文件不删: find /home/abelxu/data/ -type f ! -name "oldgril.txt" | xargs rm -f

find /home/abelxu/data/ -type f ! -name "oldgril.txt" -exec rm -f {} \;

 

head == 取文件的前n行,默认前10行, 取前3行 -n 3


tail == 取文件的最后n行, 默认最后10行, 取最后3行 -n 3  -f 跟踪一个文件尾部的实时变化


grep == 过滤器,把想要的或者不想要的分离开。-v 排除

-B 除了显示匹配行的一行之外,并显示该行之前的num行

-A 除了显示匹配行的一行之外,并显示该行之后的num行

-C 除了显示匹配行的一行之外,并显示该行前后的num行


sed == (stream editor)过滤: sed -n ‘/过滤的内容/处理的命令‘ 文件

-n 取消默认输出

-i 改变文件内容

处理的命令:p print打印

d delete删除

例子:sed -n ‘/oldboy/p‘ test.txt

  sed ‘/oldboy/d‘ test.txt

sed替换

sed -i ‘s#boy#gril#g‘ test.txt

s 查找并替换

g global与s联合使用时,全部替换

"#"是分隔符

  

  

awk 一门语言,过滤内容(取列)

awk -F "分隔符" ‘{print $1}‘ 文件  <== $1第一列 $2第二列...$NF最后一列,$(NF-1)

NR 代表行号

$0 整行

例子:

awk -F ":" ‘{print $1" "$2}‘ /etc/passwd

 

yum == Linux包管理器, yum帮助解决依赖问题


rpm -ivh (安装、显示输出、人类可读展示) 

例子: rpm -ivh 包名.rpm

yum install tree nmap sysstat lrzsz doc2unix -y

软件包下载下来 rpm格式 rpm -ivh 包名

源代码 ./configure; make; make install

yum install 更新所有软件最新版本

tree 显示目录树结构 -L 层数 -d 目录


alias 查看以及定义别名 

例子: alias oldboy=‘echo "I am oldboy"‘

alias rm=‘echo "rm can not be used, pls use mv"‘

别名生效的位置:针对root用户:/root/.bashrc

所有用户都生效:/etx/bashr或/etc/profile定义

生效 source /etc/profiles

unalias 取消别名


seq 序列 -s 指定序列的分隔符 -w

用法:seq [选项]... 尾数

或:seq [选项]... 首数 尾数

或:seq [选项]... 首数 增量 尾数



history 打印用户操作的历史纪录 -c清除所有记录 -d清除指定记录


hostname 查看主机名


uname 打印系统信息 -r内核 -m 32 or 64bit -n主机名 -a查看所有


whoami 查看当前用户


su 用户角色切换 su - 用户名 -参数切换用户环境变量


getenforce 检查selinux状态

setenforce 设置selinux状态 1启用 0 警告不启用


runlevel 查看运行级别


init 切换运行界别,后面接对应级别的数字





快捷键:

TAB 命令、路径补全

Ctrl+a 切换到命令行开始

Ctrl+e 切换到命令行末尾

Ctrl+l 清除屏幕内容

Ctrl+u 清除剪切光标之前的内容

Ctrl+k 清除剪切光标之后的内容







特殊字符命令:

>或1> 重定向,覆盖

>>或1>> 追加重定向,

<或<0 输入重定向

<<或<<0 追加输入重定向

2>错误重定向

2>>错误追加重定向

箭头的指向就是数据的流向


\ 让一个有意义的字符,脱掉马甲。

.. 上级目录

. 当前目录 \. 代表点号。

| 管道

~ 用户的家目录,针对root ~代表/root

{}

!... 


标准输入(stdin):代码为0,使用<或<<数据流向从右向左

标准正常输出(stdout):代码为1,使用>或>>数据流向从左向右

标准错误输出(stderr):代码为2,使用2>或2>>



查看默认文件描述符最大值 ulimit -n



查看进程: ps -ef

查看端口: netstat -lntup

查看配置的IP: ifconfig  或 ip add


关闭防火墙:/etc/init.d/iptables stop


cat /etc/redhat-release 

CentOS Linux release 7.3.1611 (Core)  版本


uname -r

3.10.0-514.el7.x86_64 内核


uname -m

x86_64 32位还是64位


hostname == uname -n

localhost.localdomain 主机名


init 6 重启

init 5  === startx



 tar zxvf python.xx.tgz 解压


关闭SELinux

解法一:sed ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config 

getenforce

setenforce 0

关闭防火墙

/etc/init.d/iptables stop



Linux目录结构:

顶点/,其他所有目录都在根下

linux目录结构和磁盘分区是分离的。可自由组合

/

├── bin -> usr/bin

├── boot

├── dev

├── etc    放置系统配置文件

├── home

├── lib -> usr/lib

├── lib64 -> usr/lib64

├── media

├── mnt

├── opt

├── proc

├── root

├── run

├── sbin -> usr/sbin

├── srv

├── sys

├── tmp

├── usr

└── var





已知文件test.txt内容为:

test

liyao

oldboy

请给出打印test.txt内容时,不包含oldboy字符串的命令

cat >> test.txt << EOF

test

liyao

oldboy

EOF


解法一:head -2 test.txt

解法二:grep -v "oldboy" test.txt

解法三:cat test.txt | grep -v oldboy test.txt

解法四:sed ‘/oldboy/d‘ test.txt


9、请用一条命令完成创建目录/oldboy/test

mkdir -p /oldboy/test


10、已知/tmp目录下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让linux系统不提示是否覆盖

解法一:/bin/cp /mnt/test.txt /tmp/test.txt

解法二:\cp /mnt/test.txt /tmp/test.txt 


11、 只查看ett.txt文件(100行)内第20行到第30行的内容

seq 100 > test.txt

解法一:head -n 30 test.txt | tail -n 11

解法二:sed -n ‘20,30p‘ test.txt 

解法三:awk ‘{if(NR<31 && NR>19) print $1}‘ test.txt

解法四:grep 30 -B 10 test.txt


13、把/oldboy目录及其子目录下所有以扩展名.sh的文件中包含./hostlists.txt的字符串全部替换为../idctest_iplist

解法一: find ./ -type f -name "test.txt" | xargs sed -i ‘s#oldboy#oldgril#g‘

解法二: find ./ -type f -name "test.txt" -exec sed -i ‘s#oldboy#oldgril#g‘ {} \;


echo 123456|passwd --stdin oldboy

非交互方式修改密码


TIMEOUT=10: 连接的超时时间控制变量

HISTSIZE=5:命令行的历史记录数量变量

HISTFILESIZE=10:历史记录文件的命令数量变量(~/.bash_history)


本文出自 “许大树” 博客,请务必保留此出处http://abelxu.blog.51cto.com/9909959/1980408

以上是关于Linux学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记

Linux学习笔记

Linux学习笔记

Linux学习笔记(第一周)

Linux学习笔记

Linux学习笔记:Nagios的配置