Linux开发有关知识汇集

13年前

 

ps命令

bash
ksh
csh
sh
tcsh
ps

一个终端至少有一个shell,用来和用户打交道

登陆shell,管理员指定登陆是什么shell,平常用就用什么shell

exec ksh切换shell,切换shell之后原来的shell就没用了。可以通过ps来验证

date


操作系统要管理文件
 目录
  子目录
   文件
文件系统
 树
移动文件系统
 /
/etc/hosts


linux严格区分大小写;


pwd=print working directory打印出当前的工作目录
ps=process status打印出进程的状态
clear=ctrl+l
每个程序每运行一次有一个状态


tty是终端编号,每个终端都有一个编号
pid进程的id;内核在管理对象的时候,一般采用一个整数来分配和识别
cmd是命令
time是利用的cpu的时间

cd=change direcotry改变当前工作目录


绝对路径
相对路径

管理员在创建账户的时候会指定shell,和主目录home directory

cd /etc/alsa/cards

/~.分别表示根目录、主目录、当前目录
..表示上一级目录
../..表示上一级的上一级


ls=list列出

telnet

passwd更改密码
用户名和密码存在于/etc/passwd文件中
soft01:x:500:50::/home/soft01:/bin/bash
用户名:密码:
密码实际上都放到了shadow文件中了
group


ps -l
ps -e
ps -f
ps -p pid


ls
ls /usr
ls /usr /mnt

case-sensitive
命令 【选项】....【参数】...

man
more

man  date
date +%D
date +%F
date +%T

date 08011020

问题:
etc下的passwd、shadow、group等文件及文件格式解释

id
id username


文件系统
从/开始的树状结构
绝对路径:/打头
相对路径:当前目录之下开始
当前目录:cd .
          cd ..
主目录
 ~用户名:本用户的主目录
 username,passwd,uid,gid,,home,shell:/etc/passwd,x--->/etc/shadow


 每个命令都对应一个可执行文件;shell会支持一些内部命令,没有文件。
ls /bin  可执行文件
 如bash ,csh,tcsh,ksh等;

clear命令,清屏幕;
 
 sleep 5睡觉
 
ls -l  利用长格式显示出相关信息

ls -F打标记(*表示可执行文件,@表示软连接或者符号连接,)---快捷方式
ls -a显示全部文件.    ..  包含隐藏文件一起显示.开头的是隐藏文件,其中包含.和..
ls -A  除了.和..之外都显示


ls -l
  -打头普通文件
  d打头目录文件
  l打头链接文件
  x结尾可执行文件
  p打头管道
 
 ls  -t -l与ls -l两者的区别,两者之间一个按字母一个是按时间来排序显示
 
 ls -R,列出当前目录开始的目录树
 ls -r
 ls -F

mkfifo abc
ln -s /bin/date da
ls -l

echo hello>ghi.jk

软链接:快捷方式;存放的是路径  ln -s
硬链接:同一文件对应多个名字  ln 
硬链接 跨设备不行

cp == copy
cp  /bin/zsh ~/Desktop/

当硬链接数量为0的时候,则真正的删除该文件;
硬链接一旦建立后,硬链接之间是相互平等的

rwx= read  write  execute

drwxrwxrwx
权限===》
自己|同组人|其他人

rm  abc
rm  bs da

如何更改权限
chmod  ugo
u代表自己
g代表同组人
o代表其他人

chmod  o-rx z删除其他人的rx权限
chmod  o+rx z增加其他人的rx权限
chmod  o=rwx z设置其他组人的rwx权限
chmod  o=-  z 设置其他组人的rwx权限为空
chmod  u-w,o+r,g+w  z
chmod  a+x  z,给所有人增加x权限
chmod  0644 z;注意:在c和c++中,以0开头的是一个8进制数

r----4   w----2  x---1   ----0权限数字化

权限可以用一个3位的8进制数来表示---》如700==》c语言编程中可以借鉴这种模式

文件的创建、删除、修改、复制
创建目录:
mkdir  da db dc建立3个并排的目录
mkdir  dd/de  XX
mkdir  dd
mkdir  dd/de
==>mkdir -p dd/de/dc创建多层的目录
ls -R显示所有的目录文件

touch创建空文件
touch f1  f2 f3同时创建3个空文件
touch  da/f4   db/f5在不同的目录下创建不同的文件
touch db/f6  db/f7  db/f8
===>cd db
 touch f6 f7 f8
cd ..

date命令
date > xyz重定向;将左边命令产生的输出写到右边的文件中去;会清空文件中的原有内容;
date >>xyz把左边命令产生的输出追加到右边的文件中,不会清空原文件中的原有内容;
cat xyz用命令来查看xyz的内容或者用vi来查看xyz的内容

pwd  > abc

cal显示当月的日历
cal  2012
cal 11 2010


echo  大家好
echo  大家好  >>  f10

echo  大家好才是真的好 >> f10;cat f10=====>重要在编辑脚本时很有效

date;sleep 5;date===>在设置识别裸设备时,速度可能比较慢,最好是init过程之前等待识别30秒

/dev/tty表示的是终端鼠标\键盘\显示器

date > /dev/tty===>编辑脚本时常用

date  > /dev/null==>黑洞文件,永远的空文件,空设备文件

如:ls -l  > /dev/null
 ls -l


mv  f1  dc  将f1文件移动到dc下
mv  f1  da dc将f1,da目录移动到dc下
mv  db  dc/d2将db移动到dc下并修改为d2;只有移动一个目录或文件的时候才能改名,如果移动多个是不能改名的

cp -r  包含目录一起复制
cp -i   interactive交互;   目录覆盖的时候无提示,有文件覆盖的时候才提示

rm -r可以删除文件和非空目录;但是删除目录时比较危险
rm本身是不删除目录的
rmdir只能用来删除空目录
rm -ri

字符链接软
ln -s:通过文件系统链接一个文件或者目录
link1-->inode 3561(data blocks/file2)-->file2--->inode 1282(data blocks)
硬链接
ln
在同一个文件系统上去链接文件
多个文件被硬性的链接到相同的inode number,涉及硬盘上的相同数据

如file1,file===》inode1282 (data blocks)
 dir1====>inode 4221(data blocks  file1=inode1282;file2=inode 1282)


ls
rm dc/f1  dc/f2  dc/f3
rm dc/f*
rm dc/*

通配符号
ls  -l  dc/*2
ls -l -d dc/*2
rm -r a*b*c

命令本身并不能处理通配符,是通过shell来处理的

?只能匹配一个任意字符
[]匹配指定范围内的一个字符,如[b-j]   [135abj]
[4-12]====>[4-1,2]

cat
man
head /etc/passwd;head可以看前10行,或者head -5,显示前5行
tail  默认看后10行,看后5行,tail -5
more分屏显示
less可以上下左右的任意翻看文件内容,也是分屏显示
vi
wc===word count统计数量;行数,单词数,字符数
wc -l只要行数,-w只要单词数  -c只要字符数
grep  字符串  文件
id
grep  -i  忽略大小写i=ignore case
grep -v查找不包含指定字符串的行
grep -v 01 /etc/passwd >tempxxx
more tempxxx
rm tempxxx

grep -v 01 /etc/passwd | more   把左边命令的输出当作一个文件直接交给右边的命令来处理。这就是管道

grep nologin /etc/passwd | wc -l

gedit全屏幕的编辑器
kate

vi==vim
有两种工作状态;1、初始的命令状态;2、插入状态
命令状态(初始)----i,a,o--->插入状态---<ESC>--->命令状态
----->底行模式---->:/?


vi
    k上
h左     l右
 j下
^行首      $行尾
G文件尾     1G文件首
第N行   NG
屏幕头H,屏幕中M,屏幕底L
下翻:ctrl+f 上翻 ctrl+b
w下一个单词开头
b上一个单词开头
e下一个单词末尾

i在光标当前位置插入
a在光标所在位置后插入
o在光标所在行下插入一空行
O在光标所在行上插入一空行
 
:set nu显示行号代码
: no nu 不显示行号
I跑行首添加
A跑行尾追加

x删除一个字符3x
dw删除当前词
3dw删除3个词
dd删除当前行
5dd删除5行
:5,10d删除5-10行
删除之后如果想恢复的话,使用u,undo

p粘贴在光标位置之后
P粘贴在光标位置之前

r替换一个字符
cw替换一个单词
cc替换一行
C替换从光标至行尾


yw拷贝词
yy 拷贝行
dw剪切词
dd剪切行
p当前行下粘帖
:1,2co3 拷贝行1,行2在行3之后
:4,5m6 移动行4,5在行6之后
复制某一个字符,yl

ps  -l
S=status
S睡眠状态   T挂起状态   R运行  Z 僵尸状态
挂起状态不会分时间片,只是一个后台任务摆着;
sleep 10
sleep 10 &可以后台执行

ps只显示本终端的进程+e可以显示所有的进程

ps -e -l | grep Z
ps -f 显示完整的命令
ps -p 3846根据进程的PID来跟踪进程

init进程,其PID总是为1;父进程为0(LINUX中是不存在的;UNIX中是存在的叫总调度)

jobs专门用来查看后台任务
调出后台任务到前台fg,不带参数表示把带+号的调用到前面来执行
也可以带fg+
把stopped的任务用bg在后台执行起来

终止一个任务ctrl+c也可以用kill
kill发送的是一个sigterm信号

如果是后台任务,kill也可以删除

jobs
kill  %1为了区分进程和任务编号,进程直接写数字,任务编号需要加%号

熟悉vi

grep
> |  ; * ? [] / ~ . ..
find可以搜索文件或目录

find  目录  条件 【命令,如何处理;默认print】----在指定的目录中进行搜索;
find .  -name  f1 在当前目录下搜索
find / -name  f1(name后面只能包含一个文件名)
find . -name f*这句是错误的。
eacho find . -name f*
find . -name "f*"
eacho find . -name "f*"


find . -name "*.cpp"  -exec cp{} d6 \;
这命令的意思是
find . -name "*.cpp" 找到所有的cpp文件
\;表示转义就表示符号本身;   ;号是命令的结束标志
-exec表示后面有个执行命令
{}表示前面的内容

find d6 -name "*.cpp" -exec rm {} ";"

who当前谁在线
who am i

users只关心用户的名字的情况下  users

who | grep 192.168.24.  显示出在24网段登录的用户

w可以知道谁在做什么?

who where when what

history显示出用过的所有的命令的列表
!编号即可以执行相关命令

history其命令存储在.bash_history中

du显示磁盘空间的使用情况
du -k
du -h
du -s只有综合
df查看剩余多少空间

ping
ifconfig
ifconfig -a

ftp

!ls -l
!ls
!lcd
!表示本地的
put
mput
get
mget

prompt把交互方式打开或者关闭;
asc表示传递模式设置成字符模式;尤其是在跨平台传输文本文件时
bin按照二进制模式来传输

 

locale设置编码语言

write聊天
mesg n不想聊天


env环境命令(环境变量)
PS1是来指定命令提示符的

path环境变量---为shell指定可查找命令的目录
命令不是在当前目录下找,而是在path指定的目录下去找
假设在path路径下有多个路径指向了同名的命令的话,可以用which来查看
如果像查询哪里有某个命令,可以通过whereis cal
PATH=$PATH:.

初始化文件:系统级和用户级
系统级/etc---可以针对所有用户
用户级----只针对自己,不同的shell用不同的初始化文件,看man bash或man csh
~/.bashrc

vi ~/.bashrc
source ~/.bashrc在当前终端必须先source下才能生效,其他终端自动生效

alias起一个别名如
alias c=clear
alias pl=‘ps -l’

 

vi my.sh
#!/bin/bash
echo 大家好
sleep 5
echo  I love u,baby。
sleep 5
date

source my.sh
chmod u+x my.sh